[client] Scope the iOS file drop listener to the tunnel interface

The receiver's host listener is a socket of the Network Extension, so the
SYN-ACK of an accepted connection followed the extension's own-traffic
bypass onto the physical interface and the sender never got an answer.
Bind the listeners to the tunnel interface index the same way the dial
already is; accepted sockets inherit the scope. Other platforms pass a
nil control and keep the current behavior.
This commit is contained in:
Zoltán Papp
2026-08-27 17:58:25 +02:00
parent 898539381c
commit fa47b32b92
5 changed files with 51 additions and 4 deletions
+1 -1
View File
@@ -43,7 +43,7 @@ func (e *Engine) startFileDrop() {
resolver := filedropResolver{status: e.statusRecorder}
netstackNet := e.wgInterface.GetNet()
if err := e.fileDrop.StartReceiver(e.ctx, addr, netstackNet, resolver); err != nil {
if err := e.fileDrop.StartReceiver(e.ctx, addr, netstackNet, resolver, fileDropListenControl(e.wgInterface)); err != nil {
log.Errorf("failed to start file drop receiver: %v", err)
return
}