mirror of
				https://github.com/nadoo/glider.git
				synced 2025-11-04 15:52:38 +08:00 
			
		
		
		
	smux: return os.ErrDeadlineExceeded when timeout
This commit is contained in:
		
							parent
							
								
									e9e4515e67
								
							
						
					
					
						commit
						70cf30b5e6
					
				
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@ -8,7 +8,7 @@ require (
 | 
				
			|||||||
	github.com/dgryski/go-idea v0.0.0-20170306091226-d2fb45a411fb
 | 
						github.com/dgryski/go-idea v0.0.0-20170306091226-d2fb45a411fb
 | 
				
			||||||
	github.com/dgryski/go-rc2 v0.0.0-20150621095337-8a9021637152
 | 
						github.com/dgryski/go-rc2 v0.0.0-20150621095337-8a9021637152
 | 
				
			||||||
	github.com/ebfe/rc2 v0.0.0-20131011165748-24b9757f5521 // indirect
 | 
						github.com/ebfe/rc2 v0.0.0-20131011165748-24b9757f5521 // indirect
 | 
				
			||||||
	github.com/insomniacslk/dhcp v0.0.0-20210420214155-58efeba27ae8
 | 
						github.com/insomniacslk/dhcp v0.0.0-20210428091707-95b2ff6905c9
 | 
				
			||||||
	github.com/klauspost/cpuid/v2 v2.0.6 // indirect
 | 
						github.com/klauspost/cpuid/v2 v2.0.6 // indirect
 | 
				
			||||||
	github.com/klauspost/reedsolomon v1.9.12 // indirect
 | 
						github.com/klauspost/reedsolomon v1.9.12 // indirect
 | 
				
			||||||
	github.com/mdlayher/raw v0.0.0-20210412142147-51b895745faf // indirect
 | 
						github.com/mdlayher/raw v0.0.0-20210412142147-51b895745faf // indirect
 | 
				
			||||||
@ -17,7 +17,7 @@ require (
 | 
				
			|||||||
	github.com/tjfoc/gmsm v1.4.0 // indirect
 | 
						github.com/tjfoc/gmsm v1.4.0 // indirect
 | 
				
			||||||
	github.com/xtaci/kcp-go/v5 v5.6.1
 | 
						github.com/xtaci/kcp-go/v5 v5.6.1
 | 
				
			||||||
	golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b
 | 
						golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b
 | 
				
			||||||
	golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 // indirect
 | 
						golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect
 | 
						golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								go.sum
									
									
									
									
									
								
							@ -39,8 +39,8 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 | 
				
			|||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 | 
					github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 | 
				
			||||||
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714 h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=
 | 
					github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714 h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=
 | 
				
			||||||
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis=
 | 
					github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis=
 | 
				
			||||||
github.com/insomniacslk/dhcp v0.0.0-20210420214155-58efeba27ae8 h1:RV5UbIISMfxSMcKwCZKrxVEhHcSfemkxpxcRXAmR0AM=
 | 
					github.com/insomniacslk/dhcp v0.0.0-20210428091707-95b2ff6905c9 h1:T+Czi1NGxrbx8enhcdUFPVYTpGd6DPDxrKptDXRgD8I=
 | 
				
			||||||
github.com/insomniacslk/dhcp v0.0.0-20210420214155-58efeba27ae8/go.mod h1:TKl4jN3Voofo4UJIicyNhWGp/nlQqQkFxmwIFTvBkKI=
 | 
					github.com/insomniacslk/dhcp v0.0.0-20210428091707-95b2ff6905c9/go.mod h1:TKl4jN3Voofo4UJIicyNhWGp/nlQqQkFxmwIFTvBkKI=
 | 
				
			||||||
github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw=
 | 
					github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw=
 | 
				
			||||||
github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ=
 | 
					github.com/jsimonetti/rtnetlink v0.0.0-20200117123717-f846d4f6c1f4/go.mod h1:WGuG/smIU4J/54PblvSbh+xvCZmpJnFgr3ds6Z55XMQ=
 | 
				
			||||||
github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqoO/u39cqLeBLebZ8fWdE96O7FxrAsRYhnVOdgHxok=
 | 
					github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqoO/u39cqLeBLebZ8fWdE96O7FxrAsRYhnVOdgHxok=
 | 
				
			||||||
@ -128,8 +128,8 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 | 
					golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk=
 | 
					golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
 | 
				
			||||||
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
 | 
					golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
 | 
				
			||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
					golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
				
			|||||||
@ -4,8 +4,10 @@ import (
 | 
				
			|||||||
	"container/heap"
 | 
						"container/heap"
 | 
				
			||||||
	"encoding/binary"
 | 
						"encoding/binary"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"sync/atomic"
 | 
						"sync/atomic"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
@ -21,7 +23,8 @@ var (
 | 
				
			|||||||
	ErrInvalidProtocol = errors.New("invalid protocol")
 | 
						ErrInvalidProtocol = errors.New("invalid protocol")
 | 
				
			||||||
	ErrConsumed        = errors.New("peer consumed more than sent")
 | 
						ErrConsumed        = errors.New("peer consumed more than sent")
 | 
				
			||||||
	ErrGoAway          = errors.New("stream id overflows, should start a new connection")
 | 
						ErrGoAway          = errors.New("stream id overflows, should start a new connection")
 | 
				
			||||||
	ErrTimeout         = errors.New("timeout")
 | 
						// ErrTimeout         = errors.New("timeout")
 | 
				
			||||||
 | 
						ErrTimeout    = fmt.Errorf("smux: %w", os.ErrDeadlineExceeded)
 | 
				
			||||||
	ErrWouldBlock = errors.New("operation would block on IO")
 | 
						ErrWouldBlock = errors.New("operation would block on IO")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,7 @@ import (
 | 
				
			|||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/nadoo/glider/log"
 | 
						"github.com/nadoo/glider/log"
 | 
				
			||||||
	"github.com/nadoo/glider/proxy"
 | 
						"github.com/nadoo/glider/proxy"
 | 
				
			||||||
@ -15,6 +16,7 @@ import (
 | 
				
			|||||||
type SmuxClient struct {
 | 
					type SmuxClient struct {
 | 
				
			||||||
	dialer  proxy.Dialer
 | 
						dialer  proxy.Dialer
 | 
				
			||||||
	addr    string
 | 
						addr    string
 | 
				
			||||||
 | 
						mu      sync.Mutex
 | 
				
			||||||
	session *smux.Session
 | 
						session *smux.Session
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,6 +68,9 @@ func (s *SmuxClient) DialUDP(network, addr string) (net.PacketConn, net.Addr, er
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *SmuxClient) initConn() error {
 | 
					func (s *SmuxClient) initConn() error {
 | 
				
			||||||
 | 
						s.mu.Lock()
 | 
				
			||||||
 | 
						defer s.mu.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	conn, err := s.dialer.Dial("tcp", s.addr)
 | 
						conn, err := s.dialer.Dial("tcp", s.addr)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.F("[smux] dial to %s error: %s", s.addr, err)
 | 
							log.F("[smux] dial to %s error: %s", s.addr, err)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user