Try again to extract the request from the net.conn safely.
This commit is contained in:
@ -179,12 +179,12 @@ TLS configuration is experimental. It might not be possible(To multiplex http
|
||||
and https on the same SAM tunnel).
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluWLncACgkQ11wDs5te
|
||||
FOEZ2Qf/aVBzNpVXzIq1MId381mKwspU2XjzJClox5eFMbFYVEq9xuGAOv81bewG
|
||||
RRcFYAR6UQT/Aai4iqOf1arhQFpEEJDT8KR3KoVnDgcCd8lzn/WvIeAN+qqGXg8i
|
||||
LQ2oIE+F4Wj8/WjgF3EGU7QRmSkE9X58rAvofQ6z/J8gF++xi/E6bU3IdXeU2Q06
|
||||
X9/XCVbJ5YfeG9kafvXi+h3g5iTlsbfIjqdKyN/2+1bDZM1M5sA+ze0BoOBGfphI
|
||||
KJ1GV/D002cMcyepE4IGHgnRPNButE1KiiRe0FKqIEWse4ern7sKpFIdnazW98IX
|
||||
KQzopSZubLUG0Ge0lf/EVRX9yCY0ZA==
|
||||
=p+A6
|
||||
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluWMD4ACgkQ11wDs5te
|
||||
FOGQPwf/X19Gz2AoRWv7XIsUAv8hSDv9DGoXOMEOOzi2tD1WTDVEtcjYUu8MWaOU
|
||||
7y36hAMJcuVgUef0Al3da/+lzVbDWeQG++hXpwlsnSqcQpxi6nnbzZKOGezlIk5t
|
||||
/dqIlMWjATZa6xE0+UfytZJvBCyndBlqu8OSYcR+eaFTwUHiP6IwNUn0M4qpjFc8
|
||||
olDVq19TdALsZ9P8d9ClZ4sGvenPmLOCymxpRrGe1DXVC6xO8LqFCxEk24AJzrMB
|
||||
avuaUj02u5i49O2o3NgYjowbQ0mCF4jlBhdx4z2KW8boAWXQt0wvEHJDrz2k3/jF
|
||||
RBoG0CJ9hwCr66sBkyQsFgzl9AbWlQ==
|
||||
=5cbn
|
||||
-----END PGP SIGNATURE-----
|
||||
|
45
forwarder.go
45
forwarder.go
@ -103,23 +103,23 @@ func (f *SAMForwarder) sam() string {
|
||||
}
|
||||
|
||||
func (f *SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, error) {
|
||||
var request *http.Request
|
||||
var retrequest []byte
|
||||
var err error
|
||||
request, err = http.ReadRequest(bufio.NewReader(conn))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dest := conn.RemoteAddr().(sam3.I2PAddr)
|
||||
log.Printf("Adding headers to http connection\n\tX-I2p-Dest-Base64=%s\n\tX-I2p-Dest-Base32=%s\n\tX-I2p-Dest-Hash=%s",
|
||||
dest.Base64(), dest.Base32(), dest.DestHash().String())
|
||||
request.Header.Add("X-I2p-Dest-Base64", dest.Base64())
|
||||
request.Header.Add("X-I2p-Dest-Base32", dest.Base32())
|
||||
request.Header.Add("X-I2p-Dest-Hash", dest.DestHash().String())
|
||||
if retrequest, err = httputil.DumpRequest(request, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return retrequest, nil
|
||||
var request *http.Request
|
||||
var retrequest []byte
|
||||
var err error
|
||||
request, err = http.ReadRequest(bufio.NewReader(conn))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dest := conn.RemoteAddr().(sam3.I2PAddr)
|
||||
log.Printf("Adding headers to http connection\n\tX-I2p-Dest-Base64=%s\n\tX-I2p-Dest-Base32=%s\n\tX-I2p-Dest-Hash=%s",
|
||||
dest.Base64(), dest.Base32(), dest.DestHash().String())
|
||||
request.Header.Add("X-I2p-Dest-Base64", dest.Base64())
|
||||
request.Header.Add("X-I2p-Dest-Base32", dest.Base32())
|
||||
request.Header.Add("X-I2p-Dest-Hash", dest.DestHash().String())
|
||||
if retrequest, err = httputil.DumpRequest(request, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return retrequest, nil
|
||||
}
|
||||
|
||||
func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
@ -132,8 +132,12 @@ func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
defer client.Close()
|
||||
defer conn.Close()
|
||||
if f.Type == "http" {
|
||||
/**/
|
||||
io.Copy(client, conn)
|
||||
if b, e := f.HTTPRequestBytes(conn); e != nil {
|
||||
client.Write(b)
|
||||
} else {
|
||||
log.Println(e)
|
||||
}
|
||||
//io.Copy(client, conn)
|
||||
} else {
|
||||
io.Copy(client, conn)
|
||||
}
|
||||
@ -142,8 +146,7 @@ func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
defer client.Close()
|
||||
defer conn.Close()
|
||||
if f.Type == "http" {
|
||||
/**/
|
||||
io.Copy(conn, client)
|
||||
io.Copy(conn, client)
|
||||
} else {
|
||||
io.Copy(conn, client)
|
||||
}
|
||||
|
Reference in New Issue
Block a user