fix multiplex

This commit is contained in:
rui.zheng 2017-11-02 13:24:01 +08:00
parent 7c2a5faae6
commit c82f2d904d

View File

@ -137,11 +137,6 @@ func initChain() (*gost.Chain, error) {
} else { } else {
tr = gost.SSHTunnelTransporter() tr = gost.SSHTunnelTransporter()
} }
node.DialOptions = append(node.DialOptions,
gost.ChainDialOption(chain),
)
chain = gost.NewChain() // cutoff the chain for multiplex
case "quic": case "quic":
if !chain.IsEmpty() { if !chain.IsEmpty() {
return nil, errors.New("QUIC must be the first node in the proxy chain") return nil, errors.New("QUIC must be the first node in the proxy chain")
@ -153,22 +148,11 @@ func initChain() (*gost.Chain, error) {
tr = gost.QUICTransporter(config) tr = gost.QUICTransporter(config)
case "http2": case "http2":
tr = gost.HTTP2Transporter(tlsCfg) tr = gost.HTTP2Transporter(tlsCfg)
node.DialOptions = append(node.DialOptions,
gost.ChainDialOption(chain),
)
chain = gost.NewChain() // cutoff the chain for multiplex
case "h2": case "h2":
tr = gost.H2Transporter(tlsCfg) tr = gost.H2Transporter(tlsCfg)
node.DialOptions = append(node.DialOptions,
gost.ChainDialOption(chain),
)
chain = gost.NewChain() // cutoff the chain for multiplex
case "h2c": case "h2c":
tr = gost.H2CTransporter() tr = gost.H2CTransporter()
node.DialOptions = append(node.DialOptions,
gost.ChainDialOption(chain),
)
chain = gost.NewChain() // cutoff the chain for multiplex
case "obfs4": case "obfs4":
if err := gost.Obfs4Init(node, false); err != nil { if err := gost.Obfs4Init(node, false); err != nil {
return nil, err return nil, err
@ -180,6 +164,13 @@ func initChain() (*gost.Chain, error) {
tr = gost.TCPTransporter() tr = gost.TCPTransporter()
} }
if tr.Multiplex() {
node.DialOptions = append(node.DialOptions,
gost.ChainDialOption(chain),
)
chain = gost.NewChain() // cutoff the chain for multiplex
}
var connector gost.Connector var connector gost.Connector
switch node.Protocol { switch node.Protocol {
case "http2": case "http2":