Bladeren bron

handle empty payload

Darien Raymond 9 jaren geleden
bovenliggende
commit
84740b676a
2 gewijzigde bestanden met toevoegingen van 7 en 3 verwijderingen
  1. 4 2
      proxy/shadowsocks/client.go
  2. 3 1
      proxy/testing/mocks/outboundhandler.go

+ 4 - 2
proxy/shadowsocks/client.go

@@ -142,8 +142,10 @@ func (this *Client) Dispatch(destination v2net.Destination, payload *alloc.Buffe
 			Writer:  conn,
 			Request: request,
 		}
-		if err := writer.Write(payload); err != nil {
-			return errors.New("Shadowsocks|Client: Failed to write payload: " + err.Error())
+		if !payload.IsEmpty() {
+			if err := writer.Write(payload); err != nil {
+				return errors.New("Shadowsocks|Client: Failed to write payload: " + err.Error())
+			}
 		}
 		v2io.Pipe(ray.OutboundInput(), writer)
 

+ 3 - 1
proxy/testing/mocks/outboundhandler.go

@@ -23,7 +23,9 @@ func (this *OutboundConnectionHandler) Dispatch(destination v2net.Destination, p
 	output := ray.OutboundOutput()
 
 	this.Destination = destination
-	this.ConnOutput.Write(payload.Value)
+	if !payload.IsEmpty() {
+		this.ConnOutput.Write(payload.Value)
+	}
 	payload.Release()
 
 	writeFinish := &sync.Mutex{}