mirror of
https://github.com/cedar2025/hysteria.git
synced 2025-06-08 05:19:56 +00:00
fix: do not require client-side fast open
This commit is contained in:
parent
506d8e01b8
commit
2c62a1a1b4
@ -57,7 +57,6 @@ func TestClientServerHookTCP(t *testing.T) {
|
|||||||
c, _, err := client.NewClient(&client.Config{
|
c, _, err := client.NewClient(&client.Config{
|
||||||
ServerAddr: udpAddr,
|
ServerAddr: udpAddr,
|
||||||
TLSConfig: client.TLSConfig{InsecureSkipVerify: true},
|
TLSConfig: client.TLSConfig{InsecureSkipVerify: true},
|
||||||
FastOpen: true, // Client MUST have FastOpen for this
|
|
||||||
})
|
})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
@ -214,9 +214,12 @@ func (h *h3sHandler) handleTCPRequest(stream quic.Stream) {
|
|||||||
// Call the hook if set
|
// Call the hook if set
|
||||||
var putback []byte
|
var putback []byte
|
||||||
if h.config.RequestHook != nil {
|
if h.config.RequestHook != nil {
|
||||||
|
// When RequestHook is enabled, the server should always accept a connection
|
||||||
|
// so that the client will send whatever request the hook wants to see.
|
||||||
|
// This is essentially a server-side fast-open.
|
||||||
|
_ = protocol.WriteTCPResponse(stream, true, "RequestHook enabled")
|
||||||
putback, err = h.config.RequestHook.TCP(stream, &reqAddr)
|
putback, err = h.config.RequestHook.TCP(stream, &reqAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = protocol.WriteTCPResponse(stream, false, err.Error())
|
|
||||||
_ = stream.Close()
|
_ = stream.Close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -228,7 +231,9 @@ func (h *h3sHandler) handleTCPRequest(stream quic.Stream) {
|
|||||||
// Dial target
|
// Dial target
|
||||||
tConn, err := h.config.Outbound.TCP(reqAddr)
|
tConn, err := h.config.Outbound.TCP(reqAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if h.config.RequestHook == nil {
|
||||||
_ = protocol.WriteTCPResponse(stream, false, err.Error())
|
_ = protocol.WriteTCPResponse(stream, false, err.Error())
|
||||||
|
}
|
||||||
_ = stream.Close()
|
_ = stream.Close()
|
||||||
// Log the error
|
// Log the error
|
||||||
if h.config.EventLogger != nil {
|
if h.config.EventLogger != nil {
|
||||||
@ -236,7 +241,9 @@ func (h *h3sHandler) handleTCPRequest(stream quic.Stream) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_ = protocol.WriteTCPResponse(stream, true, "")
|
if h.config.RequestHook == nil {
|
||||||
|
_ = protocol.WriteTCPResponse(stream, true, "Connected")
|
||||||
|
}
|
||||||
// Put back the data if the hook requested
|
// Put back the data if the hook requested
|
||||||
if len(putback) > 0 {
|
if len(putback) > 0 {
|
||||||
_, _ = tConn.Write(putback)
|
_, _ = tConn.Write(putback)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user