Prechádzať zdrojové kódy

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

Fixes https://github.com/XTLS/Xray-core/issues/5120
patterniha 1 mesiac pred
rodič
commit
d3248a4f8e
1 zmenil súbory, kde vykonal 15 pridanie a 7 odobranie
  1. 15 7
      app/reverse/bridge.go

+ 15 - 7
app/reverse/bridge.go

@@ -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 {