浏览代码

Trojan: Do not panic when UDP dispatcher failed to write response (#153)

maskedeken 4 年之前
父节点
当前提交
96adf3fbca
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      proxy/trojan/server.go

+ 4 - 1
proxy/trojan/server.go

@@ -256,7 +256,10 @@ func (s *Server) handleUDPPayload(ctx context.Context, clientReader *PacketReade
 		if udpPayload.UDP == nil {
 		if udpPayload.UDP == nil {
 			udpPayload.UDP = &packet.Source
 			udpPayload.UDP = &packet.Source
 		}
 		}
-		common.Must(clientWriter.WriteMultiBuffer(buf.MultiBuffer{udpPayload}))
+
+		if err := clientWriter.WriteMultiBuffer(buf.MultiBuffer{udpPayload}); err != nil {
+			newError("failed to write response").Base(err).AtWarning().WriteToLog(session.ExportIDToError(ctx))
+		}
 	})
 	})
 
 
 	inbound := session.InboundFromContext(ctx)
 	inbound := session.InboundFromContext(ctx)