Browse Source

SplitHTTP: ok -> ooooooooook (parser in client)

https://github.com/XTLS/Xray-core/pull/3479#issuecomment-2196370334
RPRX 1 year ago
parent
commit
8320732743
1 changed files with 13 additions and 8 deletions
  1. 13 8
      transport/internet/splithttp/dialer.go

+ 13 - 8
transport/internet/splithttp/dialer.go

@@ -213,14 +213,19 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
 			return
 			return
 		}
 		}
 
 
-		// skip "ok" response
-		trashHeader := []byte{0, 0}
-		_, err = io.ReadFull(response.Body, trashHeader)
-		if err != nil {
-			response.Body.Close()
-			newError("failed to read initial response").Base(err).WriteToLog()
-			gotDownResponse.Close()
-			return
+		// skip "ooooooooook" response
+		trashHeader := []byte{0}
+		for {
+			_, err = io.ReadFull(response.Body, trashHeader)
+			if err != nil {
+				response.Body.Close()
+				newError("failed to read initial response").Base(err).WriteToLog()
+				gotDownResponse.Close()
+				return
+			}
+			if trashHeader[0] == 'k' {
+				break
+			}
 		}
 		}
 
 
 		downResponse = response.Body
 		downResponse = response.Body