From 82925e4ac7c81687fb985c8cdbf0f072b01c3bc6 Mon Sep 17 00:00:00 2001 From: "rui.zheng" Date: Fri, 3 Mar 2017 12:48:46 +0800 Subject: [PATCH] fix tcp forwarding crash --- cmd/gost/vendor/github.com/ginuerzh/gost/forward.go | 4 ++-- cmd/gost/vendor/vendor.json | 6 +++--- forward.go | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/gost/vendor/github.com/ginuerzh/gost/forward.go b/cmd/gost/vendor/github.com/ginuerzh/gost/forward.go index cc1fbf5..5d545c8 100644 --- a/cmd/gost/vendor/github.com/ginuerzh/gost/forward.go +++ b/cmd/gost/vendor/github.com/ginuerzh/gost/forward.go @@ -51,7 +51,7 @@ func (s *TcpForwardServer) ListenAndServe() error { select { case <-quit: - if s.Base.Chain.lastNode.Transport != "ssh" { + if s.Base.Chain.lastNode == nil || s.Base.Chain.lastNode.Transport != "ssh" { break } if err := s.initSSHClient(); err != nil { @@ -429,7 +429,7 @@ func (s *RTcpForwardServer) Serve() error { glog.V(LINFO).Infof("[rtcp] %s - %s", laddr, raddr) lastNode := s.Base.Chain.lastNode - if lastNode.Transport == "ssh" { + if lastNode != nil && lastNode.Transport == "ssh" { s.connectRTcpForwardSSH(conn, lastNode, laddr, raddr) } else { if err := s.connectRTcpForward(conn, laddr, raddr); err != nil { diff --git a/cmd/gost/vendor/vendor.json b/cmd/gost/vendor/vendor.json index bb6e514..f7bf836 100644 --- a/cmd/gost/vendor/vendor.json +++ b/cmd/gost/vendor/vendor.json @@ -21,10 +21,10 @@ "revisionTime": "2017-01-19T05:34:58Z" }, { - "checksumSHA1": "8JlPLyEAjSN5tknRlRClQIVD5XA=", + "checksumSHA1": "iO+jPih44pGmJmhxHniw6feeIUA=", "path": "github.com/ginuerzh/gost", - "revision": "2ca2bf71871e271ad2b69f7b26e14983c99efc5d", - "revisionTime": "2017-02-25T14:51:33Z" + "revision": "d5e4e24e8354da5cef62733a4aa8a9d92556945e", + "revisionTime": "2017-02-26T10:31:07Z" }, { "checksumSHA1": "+XIOnTW0rv8Kr/amkXgMraNeUr4=", diff --git a/forward.go b/forward.go index cc1fbf5..5d545c8 100644 --- a/forward.go +++ b/forward.go @@ -51,7 +51,7 @@ func (s *TcpForwardServer) ListenAndServe() error { select { case <-quit: - if s.Base.Chain.lastNode.Transport != "ssh" { + if s.Base.Chain.lastNode == nil || s.Base.Chain.lastNode.Transport != "ssh" { break } if err := s.initSSHClient(); err != nil { @@ -429,7 +429,7 @@ func (s *RTcpForwardServer) Serve() error { glog.V(LINFO).Infof("[rtcp] %s - %s", laddr, raddr) lastNode := s.Base.Chain.lastNode - if lastNode.Transport == "ssh" { + if lastNode != nil && lastNode.Transport == "ssh" { s.connectRTcpForwardSSH(conn, lastNode, laddr, raddr) } else { if err := s.connectRTcpForward(conn, laddr, raddr); err != nil {