@@ -1314,24 +1314,18 @@ func fastlyHTTPDownstreamH2Fingerprint(
1314
1314
) FastlyStatus
1315
1315
1316
1316
func (r * HTTPRequest ) DownstreamH2Fingerprint () ([]byte , error ) {
1317
- n := DefaultMediumBufLen
1318
- for {
1319
- buf := prim .NewWriteBuffer (n )
1320
- status := fastlyHTTPDownstreamH2Fingerprint (
1317
+ value , err := withAdaptiveBuffer (DefaultSmallBufLen , func (buf * prim.WriteBuffer ) FastlyStatus {
1318
+ return fastlyHTTPDownstreamH2Fingerprint (
1321
1319
r .h ,
1322
1320
prim .ToPointer (buf .Char8Pointer ()),
1323
1321
buf .Cap (),
1324
1322
prim .ToPointer (buf .NPointer ()),
1325
1323
)
1326
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1327
- n = int (buf .NValue ())
1328
- continue
1329
- }
1330
- if err := status .toError (); err != nil {
1331
- return nil , err
1332
- }
1333
- return buf .AsBytes (), nil
1324
+ })
1325
+ if err != nil {
1326
+ return nil , err
1334
1327
}
1328
+ return value .AsBytes (), nil
1335
1329
}
1336
1330
1337
1331
// witx;
@@ -1354,24 +1348,18 @@ func fastlyHTTPDownstreamRequestID(
1354
1348
) FastlyStatus
1355
1349
1356
1350
func (r * HTTPRequest ) DownstreamRequestID () (string , error ) {
1357
- n := DefaultSmallBufLen
1358
- for {
1359
- buf := prim .NewWriteBuffer (n )
1360
- status := fastlyHTTPDownstreamRequestID (
1351
+ value , err := withAdaptiveBuffer (DefaultSmallBufLen , func (buf * prim.WriteBuffer ) FastlyStatus {
1352
+ return fastlyHTTPDownstreamRequestID (
1361
1353
r .h ,
1362
1354
prim .ToPointer (buf .Char8Pointer ()),
1363
1355
buf .Cap (),
1364
1356
prim .ToPointer (buf .NPointer ()),
1365
1357
)
1366
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1367
- n = int (buf .NValue ())
1368
- continue
1369
- }
1370
- if err := status .toError (); err != nil {
1371
- return "" , err
1372
- }
1373
- return buf .ToString (), nil
1358
+ })
1359
+ if err != nil {
1360
+ return "" , err
1374
1361
}
1362
+ return value .ToString (), nil
1375
1363
}
1376
1364
1377
1365
// witx:
@@ -1394,24 +1382,18 @@ func fastlyHTTPDownstreamOHFingerprint(
1394
1382
) FastlyStatus
1395
1383
1396
1384
func (r * HTTPRequest ) DownstreamOHFingerprint () ([]byte , error ) {
1397
- n := DefaultSmallBufLen
1398
- for {
1399
- buf := prim .NewWriteBuffer (n )
1400
- status := fastlyHTTPDownstreamOHFingerprint (
1385
+ value , err := withAdaptiveBuffer (DefaultSmallBufLen , func (buf * prim.WriteBuffer ) FastlyStatus {
1386
+ return fastlyHTTPDownstreamOHFingerprint (
1401
1387
r .h ,
1402
1388
prim .ToPointer (buf .Char8Pointer ()),
1403
1389
buf .Cap (),
1404
1390
prim .ToPointer (buf .NPointer ()),
1405
1391
)
1406
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1407
- n = int (buf .NValue ())
1408
- continue
1409
- }
1410
- if err := status .toError (); err != nil {
1411
- return nil , err
1412
- }
1413
- return buf .AsBytes (), nil
1392
+ })
1393
+ if err != nil {
1394
+ return nil , err
1414
1395
}
1396
+ return value .AsBytes (), nil
1415
1397
}
1416
1398
1417
1399
// witx:
@@ -1573,24 +1555,18 @@ func fastlyHTTPReqDownstreamTLSRawCertificate(
1573
1555
) FastlyStatus
1574
1556
1575
1557
func (r * HTTPRequest ) DownstreamTLSRawCertificate () ([]byte , error ) {
1576
- n := DefaultLargeBufLen // Longest (~132,000); typically < 2^14; RFC https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2
1577
- for {
1578
- buf := prim .NewWriteBuffer (n )
1579
- status := fastlyHTTPReqDownstreamTLSRawCertificate (
1558
+ value , err := withAdaptiveBuffer (DefaultLargeBufLen , func (buf * prim.WriteBuffer ) FastlyStatus {
1559
+ return fastlyHTTPReqDownstreamTLSRawCertificate (
1580
1560
r .h ,
1581
1561
prim .ToPointer (buf .Char8Pointer ()),
1582
1562
buf .Cap (),
1583
1563
prim .ToPointer (buf .NPointer ()),
1584
1564
)
1585
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1586
- n = int (buf .NValue ())
1587
- continue
1588
- }
1589
- if err := status .toError (); err != nil {
1590
- return nil , err
1591
- }
1592
- return buf .AsBytes (), nil
1565
+ })
1566
+ if err != nil {
1567
+ return nil , err
1593
1568
}
1569
+ return value .AsBytes (), nil
1594
1570
}
1595
1571
1596
1572
// witx:
@@ -1671,24 +1647,18 @@ func fastlyHTTPReqDownstreamTLSJA4(
1671
1647
) FastlyStatus
1672
1648
1673
1649
func (r * HTTPRequest ) DownstreamTLSJA4 () ([]byte , error ) {
1674
- n := DefaultSmallBufLen // JA4 hashes should be <64 bytes
1675
- for {
1676
- buf := prim .NewWriteBuffer (n )
1677
- status := fastlyHTTPReqDownstreamTLSJA4 (
1650
+ value , err := withAdaptiveBuffer (DefaultSmallBufLen , func (buf * prim.WriteBuffer ) FastlyStatus {
1651
+ return fastlyHTTPReqDownstreamTLSJA4 (
1678
1652
r .h ,
1679
1653
prim .ToPointer (buf .Char8Pointer ()),
1680
1654
buf .Cap (),
1681
1655
prim .ToPointer (buf .NPointer ()),
1682
1656
)
1683
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1684
- n = int (buf .NValue ())
1685
- continue
1686
- }
1687
- if err := status .toError (); err != nil {
1688
- return nil , err
1689
- }
1690
- return buf .AsBytes (), nil
1657
+ })
1658
+ if err != nil {
1659
+ return nil , err
1691
1660
}
1661
+ return value .AsBytes (), nil
1692
1662
}
1693
1663
1694
1664
// witx:
@@ -1712,24 +1682,18 @@ func fastlyHTTPReqDownstreamComplianceRegion(
1712
1682
1713
1683
// DownstreamComplianceRegion returns the compliance region (US/EU/None) for the request.
1714
1684
func (r * HTTPRequest ) DownstreamComplianceRegion () (string , error ) {
1715
- n := 4
1716
- for {
1717
- buf := prim .NewWriteBuffer (n )
1718
- status := fastlyHTTPReqDownstreamComplianceRegion (
1685
+ value , err := withAdaptiveBuffer (4 , func (buf * prim.WriteBuffer ) FastlyStatus {
1686
+ return fastlyHTTPReqDownstreamComplianceRegion (
1719
1687
r .h ,
1720
1688
prim .ToPointer (buf .Char8Pointer ()),
1721
1689
buf .Cap (),
1722
1690
prim .ToPointer (buf .NPointer ()),
1723
1691
)
1724
- if status == FastlyStatusBufLen && buf .NValue () > 0 {
1725
- n = int (buf .NValue ())
1726
- continue
1727
- }
1728
- if err := status .toError (); err != nil {
1729
- return "" , err
1730
- }
1731
- return buf .ToString (), nil
1692
+ })
1693
+ if err != nil {
1694
+ return "" , err
1732
1695
}
1696
+ return value .ToString (), nil
1733
1697
}
1734
1698
1735
1699
// witx;
0 commit comments