Skip to content

Commit 87c78e9

Browse files
committed
fix(networking): align SSU2 and tunnel policy with Java I2P
Implement byte congestion control, adaptive MTU, Java-style transport bids, and randomized profile-driven tunnel selection. Preserve queued SSU2 sends across window pressure and make ACK and release concurrency alias-safe.
1 parent d36311e commit 87c78e9

13 files changed

Lines changed: 1346 additions & 440 deletions

networking/internal/router/ssu2_introduction.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,16 +219,16 @@ func (m *SSU2Manager) forwardRelayStore(job ssu2RelayStoreJob) {
219219
store, err := m.cachedSSU2RouterInfoStore(job.aliceInfo, m.now())
220220
if err == nil {
221221
job.charlie.frameMu.Lock()
222-
err = forEachSSU2I2NPFragment(job.charlie.frame[:], store, ssu2SessionPacketSize(job.charlie), func(fragment []byte, last bool) error {
223-
return m.sendData(job.charlie, fragment, last)
222+
err = forEachSSU2I2NPFragment(job.charlie.frame[:], store, ssu2SessionPacketSize(job.charlie), func(fragment []byte, _ bool) error {
223+
return m.sendData(job.charlie, fragment)
224224
})
225225
job.charlie.frameMu.Unlock()
226226
}
227227
if err == nil {
228228
var intro []byte
229229
intro, err = ssu2.MarshalRelayIntroBlock(nil, ssu2.RelayIntro{AliceHash: [32]byte(job.alice.peer), Request: job.request})
230230
if err == nil {
231-
err = m.sendSessionData(job.charlie, intro, true)
231+
err = m.sendSessionData(job.charlie, intro, false)
232232
}
233233

234234
}
@@ -318,7 +318,7 @@ func (m *SSU2Manager) processRelayIntro(bob *ssu2TransportSession, intro ssu2.Re
318318
return response, true
319319
}
320320
block, err := ssu2.MarshalRelayResponseBlock(nil, response)
321-
if err != nil || m.sendSessionData(bob, block, true) != nil {
321+
if err != nil || m.sendSessionData(bob, block, false) != nil {
322322
return response, true
323323
}
324324
m.sendHolePunch(aliceAddress, intro.Request.Endpoint, response)
@@ -380,7 +380,7 @@ func (m *SSU2Manager) forwardRelayResponse(from *ssu2TransportSession, response
380380
}
381381
payload, err := ssu2.MarshalBlock(nil, ssu2.BlockRelayResponse, data)
382382
if err == nil {
383-
_ = m.sendSessionData(forward.alice, payload, true)
383+
_ = m.sendSessionData(forward.alice, payload, false)
384384
}
385385
}
386386

@@ -444,7 +444,7 @@ func (m *SSU2Manager) sendRelayResponse(session *ssu2TransportSession, bobHash f
444444
}
445445
payload, err := ssu2.MarshalRelayResponseBlock(nil, response)
446446
if err == nil {
447-
_ = m.sendSessionData(session, payload, true)
447+
_ = m.sendSessionData(session, payload, false)
448448
}
449449
}
450450

0 commit comments

Comments
 (0)