Skip to content

Commit e55fd4b

Browse files
committed
Migrate to header-based network isolation key
Replace the C API-based SetConcurrencyIndex with the simpler header-based approach from upstream naiveproxy. Users now set network isolation via the `-network-isolation-key` header instead of calling SetConcurrencyIndex(). naiveproxy changes: - Revert 7ed35377ef (complex NAK C API) - Cherry-pick 87b03cd9faad (header-based implementation)
1 parent 5dd7380 commit e55fd4b

File tree

9 files changed

+7
-32
lines changed

9 files changed

+7
-32
lines changed

bidirectional_conn.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ type BidirectionalConn struct {
1616
stream BidirectionalStream
1717
readWaitHeaders bool
1818
writeWaitHeaders bool
19-
concurrencyIndex int
2019
access sync.Mutex
2120
close chan struct{}
2221
done chan struct{}
@@ -28,11 +27,10 @@ type BidirectionalConn struct {
2827
headers map[string]string
2928
}
3029

31-
func (e StreamEngine) CreateConn(readWaitHeaders bool, writeWaitHeaders bool, concurrencyIndex int) *BidirectionalConn {
30+
func (e StreamEngine) CreateConn(readWaitHeaders bool, writeWaitHeaders bool) *BidirectionalConn {
3231
conn := &BidirectionalConn{
3332
readWaitHeaders: readWaitHeaders,
3433
writeWaitHeaders: writeWaitHeaders,
35-
concurrencyIndex: concurrencyIndex,
3634
close: make(chan struct{}),
3735
done: make(chan struct{}),
3836
ready: make(chan struct{}),
@@ -54,9 +52,6 @@ func (c *BidirectionalConn) Start(method string, url string, headers map[string]
5452
return net.ErrClosed
5553
default:
5654
}
57-
if c.concurrencyIndex >= 0 {
58-
c.stream.SetConcurrencyIndex(c.concurrencyIndex)
59-
}
6055
if !c.stream.Start(method, url, headers, priority, endOfStream) {
6156
return os.ErrInvalid
6257
}

bidirectional_stream_cgo.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,3 @@ func (c BidirectionalStream) Flush() {
156156
func (c BidirectionalStream) Cancel() {
157157
C.bidirectional_stream_cancel((*C.bidirectional_stream)(unsafe.Pointer(c.ptr)))
158158
}
159-
160-
// SetConcurrencyIndex sets the connection pool isolation index for insecure-concurrency feature.
161-
// index: 0 to N-1, consistent with naiveproxy's insecure-concurrency behavior.
162-
// Connections with the same index will reuse the same HTTP/2 connection.
163-
// Must be called before Start().
164-
func (c BidirectionalStream) SetConcurrencyIndex(index int) {
165-
C.bidirectional_stream_set_concurrency_index((*C.bidirectional_stream)(unsafe.Pointer(c.ptr)), C.int(index))
166-
}

bidirectional_stream_purego.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,3 @@ func (s BidirectionalStream) Flush() {
106106
func (s BidirectionalStream) Cancel() {
107107
cronet.BidirectionalStreamCancel(s.ptr)
108108
}
109-
110-
func (s BidirectionalStream) SetConcurrencyIndex(index int) {
111-
cronet.BidirectionalStreamSetConcurrencyIndex(s.ptr, int32(index))
112-
}

internal/cronet/api_purego.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,3 @@ func BidirectionalStreamFlush(stream uintptr) {
10411041
func BidirectionalStreamCancel(stream uintptr) {
10421042
bidirectionalStreamCancel(stream)
10431043
}
1044-
1045-
func BidirectionalStreamSetConcurrencyIndex(stream uintptr, index int32) {
1046-
bidirectionalStreamSetConcurrencyIndex(stream, index)
1047-
}

internal/cronet/loader_unix.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -920,9 +920,6 @@ func registerSymbols() error {
920920
if err := registerFunc(&bidirectionalStreamCancel, "bidirectional_stream_cancel"); err != nil {
921921
return err
922922
}
923-
if err := registerFunc(&bidirectionalStreamSetConcurrencyIndex, "bidirectional_stream_set_concurrency_index"); err != nil {
924-
return err
925-
}
926923

927924
return nil
928925
}

internal/cronet/loader_windows.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -945,9 +945,6 @@ func registerSymbols() error {
945945
if err := registerFunc(&bidirectionalStreamCancel, "bidirectional_stream_cancel"); err != nil {
946946
return err
947947
}
948-
if err := registerFunc(&bidirectionalStreamSetConcurrencyIndex, "bidirectional_stream_set_concurrency_index"); err != nil {
949-
return err
950-
}
951948

952949
// Register float functions (platform-specific, see loader_windows_float*.go)
953950
if err := registerFloatFuncs(); err != nil {

internal/cronet/symbols_purego.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,6 @@ var (
308308
bidirectionalStreamWrite func(uintptr, uintptr, int32, bool) int32
309309
bidirectionalStreamFlush func(uintptr)
310310
bidirectionalStreamCancel func(uintptr)
311-
bidirectionalStreamSetConcurrencyIndex func(uintptr, int32)
312311
)
313312

314313
// GoString converts a C string pointer to a Go string.

naive_client.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,11 @@ func (c *NaiveClient) DialContext(ctx context.Context, destination M.Socksaddr)
161161
headers[key] = value
162162
}
163163

164-
concurrencyIndex := int(c.counter.Add(1) % uint64(c.concurrency))
165-
conn := c.streamEngine.CreateConn(true, false, concurrencyIndex)
164+
if c.concurrency > 1 {
165+
concurrencyIndex := int(c.counter.Add(1) % uint64(c.concurrency))
166+
headers["-network-isolation-key"] = F.ToString("https://pool-", concurrencyIndex, ":443")
167+
}
168+
conn := c.streamEngine.CreateConn(true, false)
166169
err := conn.Start("CONNECT", c.serverURL, headers, 0, false)
167170
if err != nil {
168171
return nil, err

0 commit comments

Comments
 (0)