diff --git a/api_definition_test.go b/api_definition_test.go index da99fb89f283..63da47d85f72 100644 --- a/api_definition_test.go +++ b/api_definition_test.go @@ -392,7 +392,7 @@ func (ln *customListener) Init(addr string) (err error) { return } -func (ln *customListener) Accept() (conn io.ReadWriteCloser, clientAddr string, err error) { +func (ln *customListener) Accept() (conn net.Conn, err error) { c, err := ln.L.Accept() if err != nil { return @@ -419,7 +419,7 @@ func (ln *customListener) Accept() (conn io.ReadWriteCloser, clientAddr string, return } - return c, string(id), nil + return c, nil } func (ln *customListener) Close() error { diff --git a/main.go b/main.go index 150a788b45a2..d04ceb012e01 100644 --- a/main.go +++ b/main.go @@ -31,13 +31,13 @@ import ( graylogHook "github.com/gemnasium/logrus-graylog-hook" "github.com/gorilla/mux" "github.com/justinas/alice" - "github.com/lonelycode/gorpc" "github.com/lonelycode/osin" "github.com/rs/cors" "github.com/satori/go.uuid" "rsc.io/letsencrypt" "github.com/TykTechnologies/goagain" + "github.com/TykTechnologies/gorpc" "github.com/TykTechnologies/tyk/apidef" "github.com/TykTechnologies/tyk/certs" cli "github.com/TykTechnologies/tyk/cli" diff --git a/rpc/rpc_client.go b/rpc/rpc_client.go index 99d48d279898..c51cd43f501a 100644 --- a/rpc/rpc_client.go +++ b/rpc/rpc_client.go @@ -3,7 +3,6 @@ package rpc import ( "crypto/tls" "errors" - "io" "net" "strconv" "strings" @@ -13,8 +12,9 @@ import ( "github.com/Sirupsen/logrus" "github.com/gocraft/health" - "github.com/lonelycode/gorpc" "github.com/satori/go.uuid" + + "github.com/TykTechnologies/gorpc" ) var ( @@ -174,7 +174,7 @@ func Connect(connConfig Config, suppressRegister bool, dispatcherFuncs map[strin clientSingleton.Conns = 20 } - clientSingleton.Dial = func(addr string) (conn io.ReadWriteCloser, err error) { + clientSingleton.Dial = func(addr string) (conn net.Conn, err error) { dialer := &net.Dialer{ Timeout: 10 * time.Second, KeepAlive: 30 * time.Second, @@ -349,12 +349,15 @@ func FuncClientSingleton(funcName string, request interface{}) (interface{}, err return funcClientSingleton.CallTimeout(funcName, request, GlobalRPCCallTimeout) } -func onConnectFunc(remoteAddr string, rwc io.ReadWriteCloser) (io.ReadWriteCloser, error) { +func onConnectFunc(conn net.Conn) (net.Conn, string, error) { clientSingletonMu.Lock() defer clientSingletonMu.Unlock() clientIsConnected = true - return rwc, nil + remoteAddr := conn.RemoteAddr().String() + Log.WithField("remoteAddr", remoteAddr).Debug("connected to RPC server") + + return conn, remoteAddr, nil } func Disconnect() bool { diff --git a/rpc_test.go b/rpc_test.go index cdeb4b284ae3..7c9197e75e7c 100644 --- a/rpc_test.go +++ b/rpc_test.go @@ -6,8 +6,7 @@ import ( "testing" "time" - "github.com/lonelycode/gorpc" - + "github.com/TykTechnologies/gorpc" "github.com/TykTechnologies/tyk/config" "github.com/TykTechnologies/tyk/rpc" "github.com/TykTechnologies/tyk/test" diff --git a/vendor/github.com/lonelycode/gorpc/LICENSE b/vendor/github.com/TykTechnologies/gorpc/LICENSE similarity index 100% rename from vendor/github.com/lonelycode/gorpc/LICENSE rename to vendor/github.com/TykTechnologies/gorpc/LICENSE diff --git a/vendor/github.com/lonelycode/gorpc/Makefile b/vendor/github.com/TykTechnologies/gorpc/Makefile similarity index 100% rename from vendor/github.com/lonelycode/gorpc/Makefile rename to vendor/github.com/TykTechnologies/gorpc/Makefile diff --git a/vendor/github.com/lonelycode/gorpc/README.md b/vendor/github.com/TykTechnologies/gorpc/README.md similarity index 100% rename from vendor/github.com/lonelycode/gorpc/README.md rename to vendor/github.com/TykTechnologies/gorpc/README.md diff --git a/vendor/github.com/lonelycode/gorpc/TODO b/vendor/github.com/TykTechnologies/gorpc/TODO similarity index 100% rename from vendor/github.com/lonelycode/gorpc/TODO rename to vendor/github.com/TykTechnologies/gorpc/TODO diff --git a/vendor/github.com/lonelycode/gorpc/client.go b/vendor/github.com/TykTechnologies/gorpc/client.go similarity index 99% rename from vendor/github.com/lonelycode/gorpc/client.go rename to vendor/github.com/TykTechnologies/gorpc/client.go index 9780414ba417..cba9e4c7bd8a 100644 --- a/vendor/github.com/lonelycode/gorpc/client.go +++ b/vendor/github.com/TykTechnologies/gorpc/client.go @@ -3,6 +3,7 @@ package gorpc import ( "fmt" "io" + "net" "sync" "time" ) @@ -501,7 +502,7 @@ func (e *ClientError) Error() string { func clientHandler(c *Client) { defer c.stopWg.Done() - var conn io.ReadWriteCloser + var conn net.Conn var err error for { @@ -529,9 +530,9 @@ func clientHandler(c *Client) { } } -func clientHandleConnection(c *Client, conn io.ReadWriteCloser) { +func clientHandleConnection(c *Client, conn net.Conn) { if c.OnConnect != nil { - newConn, err := c.OnConnect(c.Addr, conn) + newConn, _, err := c.OnConnect(conn) if err != nil { c.LogError("gorpc.Client: [%s]. OnConnect error: [%s]", c.Addr, err) conn.Close() diff --git a/vendor/github.com/lonelycode/gorpc/common.go b/vendor/github.com/TykTechnologies/gorpc/common.go similarity index 96% rename from vendor/github.com/lonelycode/gorpc/common.go rename to vendor/github.com/TykTechnologies/gorpc/common.go index 3a69dc1723af..bb0823b036da 100644 --- a/vendor/github.com/lonelycode/gorpc/common.go +++ b/vendor/github.com/TykTechnologies/gorpc/common.go @@ -2,8 +2,8 @@ package gorpc import ( "fmt" - "io" "log" + "net" "sync" "time" ) @@ -41,7 +41,7 @@ const ( // // The callback may be used for authentication/authorization and/or custom // transport wrapping. -type OnConnectFunc func(remoteAddr string, rwc io.ReadWriteCloser) (io.ReadWriteCloser, error) +type OnConnectFunc func(rwc net.Conn) (net.Conn, string, error) // LoggerFunc is an error logging function to pass to gorpc.SetErrorLogger(). type LoggerFunc func(format string, args ...interface{}) diff --git a/vendor/github.com/lonelycode/gorpc/conn_stats.go b/vendor/github.com/TykTechnologies/gorpc/conn_stats.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/conn_stats.go rename to vendor/github.com/TykTechnologies/gorpc/conn_stats.go diff --git a/vendor/github.com/lonelycode/gorpc/conn_stats_386.go b/vendor/github.com/TykTechnologies/gorpc/conn_stats_386.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/conn_stats_386.go rename to vendor/github.com/TykTechnologies/gorpc/conn_stats_386.go diff --git a/vendor/github.com/lonelycode/gorpc/conn_stats_generic.go b/vendor/github.com/TykTechnologies/gorpc/conn_stats_generic.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/conn_stats_generic.go rename to vendor/github.com/TykTechnologies/gorpc/conn_stats_generic.go diff --git a/vendor/github.com/lonelycode/gorpc/dispatcher.go b/vendor/github.com/TykTechnologies/gorpc/dispatcher.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/dispatcher.go rename to vendor/github.com/TykTechnologies/gorpc/dispatcher.go diff --git a/vendor/github.com/lonelycode/gorpc/doc.go b/vendor/github.com/TykTechnologies/gorpc/doc.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/doc.go rename to vendor/github.com/TykTechnologies/gorpc/doc.go diff --git a/vendor/github.com/lonelycode/gorpc/encoding.go b/vendor/github.com/TykTechnologies/gorpc/encoding.go similarity index 100% rename from vendor/github.com/lonelycode/gorpc/encoding.go rename to vendor/github.com/TykTechnologies/gorpc/encoding.go diff --git a/vendor/github.com/lonelycode/gorpc/server.go b/vendor/github.com/TykTechnologies/gorpc/server.go similarity index 97% rename from vendor/github.com/lonelycode/gorpc/server.go rename to vendor/github.com/TykTechnologies/gorpc/server.go index cf2baa36da33..f38994d1a71f 100644 --- a/vendor/github.com/lonelycode/gorpc/server.go +++ b/vendor/github.com/TykTechnologies/gorpc/server.go @@ -3,6 +3,7 @@ package gorpc import ( "fmt" "io" + "net" "runtime" "sync" "time" @@ -180,14 +181,13 @@ func (s *Server) Serve() error { func serverHandler(s *Server, workersCh chan struct{}) { defer s.stopWg.Done() - var conn io.ReadWriteCloser - var clientAddr string + var conn net.Conn var err error for { acceptChan := make(chan struct{}) go func() { - if conn, clientAddr, err = s.Listener.Accept(); err != nil { + if conn, err = s.Listener.Accept(); err != nil { s.LogError("gorpc.Server: [%s]. Cannot accept new connection: [%s]", s.Addr, err) time.Sleep(time.Second) } @@ -208,15 +208,16 @@ func serverHandler(s *Server, workersCh chan struct{}) { } s.stopWg.Add(1) - go serverHandleConnection(s, conn, clientAddr, workersCh) + go serverHandleConnection(s, conn, workersCh) } } -func serverHandleConnection(s *Server, conn io.ReadWriteCloser, clientAddr string, workersCh chan struct{}) { +func serverHandleConnection(s *Server, conn net.Conn, workersCh chan struct{}) { defer s.stopWg.Done() + var clientAddr string if s.OnConnect != nil { - newConn, err := s.OnConnect(clientAddr, conn) + newConn, clientAddr, err := s.OnConnect(conn) if err != nil { s.LogError("gorpc.Server: [%s]->[%s]. OnConnect error: [%s]", clientAddr, s.Addr, err) conn.Close() @@ -225,6 +226,10 @@ func serverHandleConnection(s *Server, conn io.ReadWriteCloser, clientAddr strin conn = newConn } + if clientAddr == "" { + clientAddr = conn.RemoteAddr().String() + } + var enabledCompression bool var err error zChan := make(chan bool, 1) diff --git a/vendor/github.com/lonelycode/gorpc/transport.go b/vendor/github.com/TykTechnologies/gorpc/transport.go similarity index 89% rename from vendor/github.com/lonelycode/gorpc/transport.go rename to vendor/github.com/TykTechnologies/gorpc/transport.go index 16c0e9cb196a..108cd7163771 100644 --- a/vendor/github.com/lonelycode/gorpc/transport.go +++ b/vendor/github.com/TykTechnologies/gorpc/transport.go @@ -2,7 +2,6 @@ package gorpc import ( "crypto/tls" - "io" "net" "time" ) @@ -21,7 +20,7 @@ var ( // Otherwise gorpc may hang. // The conn implementation must call Flush() on underlying buffered // streams before returning from Write(). -type DialFunc func(addr string) (conn io.ReadWriteCloser, err error) +type DialFunc func(addr string) (conn net.Conn, err error) // Listener is an interface for custom listeners intended for the Server. type Listener interface { @@ -38,7 +37,7 @@ type Listener interface { // Otherwise gorpc may hang. // The conn implementation must call Flush() on underlying buffered // streams before returning from Write(). - Accept() (conn io.ReadWriteCloser, clientAddr string, err error) + Accept() (conn net.Conn, err error) // Close closes the listener. // All pending calls to Accept() must immediately return errors after @@ -47,7 +46,7 @@ type Listener interface { Close() error } -func defaultDial(addr string) (conn io.ReadWriteCloser, err error) { +func defaultDial(addr string) (conn net.Conn, err error) { return dialer.Dial("tcp", addr) } @@ -60,16 +59,16 @@ func (ln *defaultListener) Init(addr string) (err error) { return } -func (ln *defaultListener) Accept() (conn io.ReadWriteCloser, clientAddr string, err error) { +func (ln *defaultListener) Accept() (conn net.Conn, err error) { c, err := ln.L.Accept() if err != nil { - return nil, "", err + return nil, err } if err = setupKeepalive(c); err != nil { c.Close() - return nil, "", err + return nil, err } - return c, c.RemoteAddr().String(), nil + return c, nil } func (ln *defaultListener) Close() error { @@ -97,19 +96,19 @@ func (ln *netListener) Init(addr string) (err error) { return } -func (ln *netListener) Accept() (conn io.ReadWriteCloser, clientAddr string, err error) { +func (ln *netListener) Accept() (conn net.Conn, err error) { c, err := ln.L.Accept() if err != nil { - return nil, "", err + return nil, err } - return c, c.RemoteAddr().String(), nil + return c, nil } func (ln *netListener) Close() error { return ln.L.Close() } -func unixDial(addr string) (conn io.ReadWriteCloser, err error) { +func unixDial(addr string) (conn net.Conn, err error) { c, err := net.Dial("unix", addr) if err != nil { return nil, err @@ -198,7 +197,7 @@ func NewUnixServer(addr string, handler HandlerFunc) *Server { func NewTLSClient(addr string, cfg *tls.Config) *Client { return &Client{ Addr: addr, - Dial: func(addr string) (conn io.ReadWriteCloser, err error) { + Dial: func(addr string) (conn net.Conn, err error) { c, err := tls.DialWithDialer(dialer, "tcp", addr, cfg) if err != nil { return nil, err diff --git a/vendor/vendor.json b/vendor/vendor.json index 51da0bef3e89..0fa89968460a 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -48,6 +48,12 @@ "revision": "dcb3e4bb79906c5695321440deca10592f4eeb2d", "revisionTime": "2017-02-22T15:40:38Z" }, + { + "checksumSHA1": "pk+Fj0KfcNdwugEfI9657E7flgI=", + "path": "github.com/TykTechnologies/gorpc", + "revision": "2fd6ca5242c4dbee5ab151010ee844f3fb5507a8", + "revisionTime": "2018-09-28T16:00:09Z" + }, { "checksumSHA1": "FEq3KG6Kgarh8P5XIUx3bH13zDM=", "path": "github.com/TykTechnologies/goverify", @@ -296,12 +302,6 @@ "revision": "ed3ca8a15a931b141440a7e98e4f716eec255f7d", "revisionTime": "2014-12-02T16:54:02Z" }, - { - "checksumSHA1": "OQ6h/9ehSr5avWJD3CbaZdZ8pwU=", - "path": "github.com/lonelycode/gorpc", - "revision": "5108a99af7137601fdc00c899caa4a3f0a8b31ef", - "revisionTime": "2015-06-11T14:24:37Z" - }, { "checksumSHA1": "5OpChAvGZcoxGkZAp3qf5ZxKR84=", "path": "github.com/lonelycode/osin",