@@ -103,9 +103,6 @@ func (s *ProxyHandler) HandleTunnel(wr http.ResponseWriter, req *http.Request, u
103103 }
104104 defer localconn .Close ()
105105
106- // Inform client connection is built
107- fmt .Fprintf (localconn , "HTTP/%d.%d 200 OK\r \n \r \n " , req .ProtoMajor , req .ProtoMinor )
108-
109106 if buffered := rw .Reader .Buffered (); buffered > 0 {
110107 s .logger .Debug ("saving %d bytes buffered in bufio.ReadWriter" , buffered )
111108 s .forward (
@@ -114,11 +111,20 @@ func (s *ProxyHandler) HandleTunnel(wr http.ResponseWriter, req *http.Request, u
114111 wrapH1ReqBody (io .NopCloser (io .LimitReader (rw .Reader , int64 (buffered )))),
115112 wrapH1RespWriter (conn ),
116113 )
114+ s .forward (
115+ req .Context (),
116+ username ,
117+ wrapPendingWrite (
118+ []byte (fmt .Sprintf ("HTTP/%d.%d 200 OK\r \n \r \n " , req .ProtoMajor , req .ProtoMinor )),
119+ localconn ,
120+ ),
121+ conn ,
122+ )
117123 } else {
118124 s .logger .Debug ("not rescuing remaining data in bufio.ReadWriter" )
125+ fmt .Fprintf (localconn , "HTTP/%d.%d 200 OK\r \n \r \n " , req .ProtoMajor , req .ProtoMinor )
126+ s .forward (req .Context (), username , localconn , conn )
119127 }
120-
121- s .forward (req .Context (), username , localconn , conn )
122128 } else if req .ProtoMajor == 2 {
123129 wr .Header ()["Date" ] = nil
124130 wr .WriteHeader (http .StatusOK )
0 commit comments