app/reverse/bridge.go: Add timer nil check (#5119)

Fixes https://github.com/XTLS/Xray-core/issues/5120
pull/4283/merge
patterniha 2025-09-10 13:43:21 +02:00 committed by GitHub
parent 30e10be95d
commit d3248a4f8e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 7 deletions

View File

@ -55,7 +55,9 @@ func (b *Bridge) cleanup() {
activeWorkers = append(activeWorkers, w)
}
if w.Closed() {
w.Timer.SetTimeout(0)
if w.Timer != nil {
w.Timer.SetTimeout(0)
}
}
}
@ -166,19 +168,25 @@ func (w *BridgeWorker) handleInternalConn(link *transport.Link) {
for {
mb, err := reader.ReadMultiBuffer()
if err != nil {
if w.Closed() {
w.Timer.SetTimeout(0)
} else {
w.Timer.SetTimeout(24 * time.Hour)
if w.Timer != nil {
if w.Closed() {
w.Timer.SetTimeout(0)
} else {
w.Timer.SetTimeout(24 * time.Hour)
}
}
return
}
w.Timer.Update()
if w.Timer != nil {
w.Timer.Update()
}
for _, b := range mb {
var ctl Control
if err := proto.Unmarshal(b.Bytes(), &ctl); err != nil {
errors.LogInfoInner(context.Background(), err, "failed to parse proto message")
w.Timer.SetTimeout(0)
if w.Timer != nil {
w.Timer.SetTimeout(0)
}
return
}
if ctl.State != w.State {