@@ -16,8 +16,6 @@ import (
1616)
1717
1818type Server struct {
19- registry * Registry
20-
2119 // secret
2220 key string
2321
@@ -44,9 +42,6 @@ type sendReq struct {
4442
4543type peerConn struct {
4644 addr string
47- // conn *net.UDPConn
48- // conn *kcp.UDPSession
49- // conn net.Conn
5045 conn * smux.Stream
5146 cidr string
5247}
@@ -60,25 +55,21 @@ func NewServer(laddr, key string, iface *Interface) *Server {
6055 sndq : make ([]chan * sendReq , 1000 ),
6156 }
6257
58+ go s .readLocal ()
6359 for i := 0 ; i < 1000 ; i ++ {
6460 s .sndq [i ] = make (chan * sendReq , 10000 )
6561 go s .writePeer (s .sndq [i ])
6662 }
6763 return s
6864}
6965
70- func (s * Server ) SetRegistry (r * Registry ) {
71- s .registry = r
72- }
73-
7466func (s * Server ) SetVPCInstance (vpcInstance vpc.IVPC ) {
7567 if s .vpcInstance == nil {
7668 s .vpcInstance = vpcInstance
7769 }
7870}
7971
8072func (s * Server ) ListenAndServe () error {
81- go s .readLocal ()
8273 lis , err := net .Listen ("tcp" , s .laddr )
8374 if err != nil {
8475 return err
@@ -185,18 +176,8 @@ func (s *Server) readLocal() {
185176 select {
186177 case s .sndq [idx ] <- & sendReq {buf , peer }:
187178 default :
188- peer .SetWriteDeadline (time .Now ().Add (time .Second * 3 ))
189- nw , err := peer .Write (buf )
190- peer .SetWriteDeadline (time.Time {})
191- if err != nil {
192- log .Error ("write to peer %s fail %v" , dst , err )
193- continue
194- }
195-
196- if nw != len (buf ) {
197- log .Error ("stream write not full" )
198- continue
199- }
179+ log .Warn ("sndq[%d] is full" , idx )
180+ s .write (buf , peer )
200181 }
201182 }
202183}
@@ -205,18 +186,22 @@ func (s *Server) writePeer(sndq chan *sendReq) {
205186 for req := range sndq {
206187 peer := req .conn
207188 buf := req .buf
208- peer .SetWriteDeadline (time .Now ().Add (time .Second * 3 ))
209- nw , err := peer .Write (buf )
210- peer .SetWriteDeadline (time.Time {})
211- if err != nil {
212- log .Error ("write to peer fail %v" , err )
213- continue
214- }
189+ s .write (buf , peer )
190+ }
191+ }
215192
216- if nw != len (buf ) {
217- log .Error ("stream write not full" )
218- continue
219- }
193+ func (s * Server ) write (buf []byte , peer net.Conn ) {
194+ peer .SetWriteDeadline (time .Now ().Add (time .Second * 3 ))
195+ nw , err := peer .Write (buf )
196+ peer .SetWriteDeadline (time.Time {})
197+ if err != nil {
198+ log .Error ("write to peer fail %v" , err )
199+ return
200+ }
201+
202+ if nw != len (buf ) {
203+ log .Error ("stream write not full" )
204+ return
220205 }
221206}
222207
@@ -337,7 +322,7 @@ func (s *Server) addRoute(peer *codec.Edge) error {
337322}
338323
339324func (s * Server ) deadlineCheck (peer * codec.Edge , sess * smux.Session ) {
340- tick := time .NewTicker (time .Second * 5 )
325+ tick := time .NewTicker (time .Second * 1 )
341326 for range tick .C {
342327 if ! sess .IsClosed () {
343328 continue
0 commit comments