Feature: support xray's ws-0rtt path (#1558)
This commit is contained in:
parent
4e6b7bc82b
commit
d867bb3b50
1 changed files with 13 additions and 0 deletions
|
@ -11,6 +11,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
@ -305,6 +306,18 @@ func streamWebsocketConn(conn net.Conn, c *WebsocketConfig, earlyData *bytes.Buf
|
||||||
}
|
}
|
||||||
|
|
||||||
func StreamWebsocketConn(conn net.Conn, c *WebsocketConfig) (net.Conn, error) {
|
func StreamWebsocketConn(conn net.Conn, c *WebsocketConfig) (net.Conn, error) {
|
||||||
|
if u, err := url.Parse(c.Path); err == nil {
|
||||||
|
if q := u.Query(); q.Get("ed") != "" {
|
||||||
|
if ed, err := strconv.Atoi(q.Get("ed")); err == nil {
|
||||||
|
c.MaxEarlyData = ed
|
||||||
|
c.EarlyDataHeaderName = "Sec-WebSocket-Protocol"
|
||||||
|
q.Del("ed")
|
||||||
|
u.RawQuery = q.Encode()
|
||||||
|
c.Path = u.String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if c.MaxEarlyData > 0 {
|
if c.MaxEarlyData > 0 {
|
||||||
return streamWebsocketWithEarlyDataConn(conn, c)
|
return streamWebsocketWithEarlyDataConn(conn, c)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue