diff --git a/lib/fed/conn.go b/lib/fed/conn.go index 848a0bb91acd037656243973d0af622ec9dee770..892a219b686d75ff0b2efcd8337c6afbd2c4f7bd 100644 --- a/lib/fed/conn.go +++ b/lib/fed/conn.go @@ -2,6 +2,7 @@ package fed import ( "crypto/tls" + "net" "gfx.cafe/gfx/pggat/lib/util/decorator" "gfx.cafe/gfx/pggat/lib/util/strutil" @@ -157,6 +158,11 @@ func (T *Conn) WriteByte(b byte) error { return T.codec.WriteByte(b) } +func (T *Conn) LocalAddr() net.Addr { + return T.codec.LocalAddr() + +} + func (T *Conn) ReadByte() (byte, error) { return T.codec.ReadByte() } diff --git a/lib/gat/handlers/pool/dialer.go b/lib/gat/handlers/pool/dialer.go index ba902c94dbfa1ed6197c599659d750ea41d40e65..1da5d9fea194640190cd085290e8c104ce083623 100644 --- a/lib/gat/handlers/pool/dialer.go +++ b/lib/gat/handlers/pool/dialer.go @@ -14,6 +14,7 @@ import ( "gfx.cafe/gfx/pggat/lib/bouncer" "gfx.cafe/gfx/pggat/lib/bouncer/backends/v0" "gfx.cafe/gfx/pggat/lib/fed" + "gfx.cafe/gfx/pggat/lib/fed/codecs/netconncodec" "gfx.cafe/gfx/pggat/lib/gat" "gfx.cafe/gfx/pggat/lib/util/strutil" ) @@ -65,7 +66,7 @@ func (T *Dialer) Dial() (*fed.Conn, error) { if err != nil { return nil, err } - conn := fed.NewConn(c) + conn := fed.NewConn(netconncodec.NewCodec(c)) conn.User = T.Username conn.Database = T.Database err = backends.Accept( @@ -89,7 +90,7 @@ func (T *Dialer) Cancel(key fed.BackendKey) { if err != nil { return } - conn := fed.NewConn(c) + conn := fed.NewConn(netconncodec.NewCodec(c)) defer func() { _ = conn.Close() }() diff --git a/lib/gat/listen.go b/lib/gat/listen.go index 9a4e22b83b87c0574658f69baead2bb288856b1b..fb47fd97442a9143d5b824f64b6fe525dbbf495d 100644 --- a/lib/gat/listen.go +++ b/lib/gat/listen.go @@ -15,6 +15,7 @@ import ( "go.uber.org/zap" "gfx.cafe/gfx/pggat/lib/fed" + "gfx.cafe/gfx/pggat/lib/fed/codecs/netconncodec" ) type ListenerConfig struct { @@ -40,7 +41,7 @@ func (T *Listener) accept() (*fed.Conn, error) { if err != nil { return nil, err } - return fed.NewConn(raw), nil + return fed.NewConn(netconncodec.NewCodec(raw)), nil } func (T *Listener) Provision(ctx caddy.Context) error { diff --git a/lib/gat/matchers/localaddress.go b/lib/gat/matchers/localaddress.go index 920d2852733269c18e18f044df48528c5276e5b3..b89e6699ddc522908d261711ef1f53909e667a8e 100644 --- a/lib/gat/matchers/localaddress.go +++ b/lib/gat/matchers/localaddress.go @@ -48,7 +48,7 @@ func (T *LocalAddress) Provision(ctx caddy.Context) error { } func (T *LocalAddress) Matches(conn *fed.Conn) bool { - switch addr := conn.NetConn.LocalAddr().(type) { + switch addr := conn.LocalAddr().(type) { case *net.TCPAddr: expected, ok := T.addr.(*net.TCPAddr) if !ok { diff --git a/lib/gsql/pair.go b/lib/gsql/pair.go index e6ceb79c563cc62fec49f976cb31b6ae70679526..10e9ed0cadf55a0de85b3c54beee7e81ba9ef2d4 100644 --- a/lib/gsql/pair.go +++ b/lib/gsql/pair.go @@ -2,14 +2,23 @@ package gsql import ( "gfx.cafe/gfx/pggat/lib/fed" + "gfx.cafe/gfx/pggat/lib/fed/codecs/netconncodec" "gfx.cafe/gfx/pggat/lib/util/mio" ) func NewPair() (*fed.Conn, *fed.Conn) { conn := new(mio.Conn) - inward := fed.NewConn(mio.InwardConn{Conn: conn}) + inward := fed.NewConn( + netconncodec.NewCodec( + mio.InwardConn{Conn: conn}, + ), + ) inward.Ready = true - outward := fed.NewConn(mio.OutwardConn{Conn: conn}) + outward := fed.NewConn( + netconncodec.NewCodec( + mio.OutwardConn{Conn: conn}, + ), + ) outward.Ready = true return inward, outward diff --git a/lib/gsql/query_test.go b/lib/gsql/query_test.go index 3839029d8ccc12b12a7d6e35c30d25220debe3a4..9b1d24b3bd087aed2e1be6f75b4b3ce4c487b072 100644 --- a/lib/gsql/query_test.go +++ b/lib/gsql/query_test.go @@ -11,6 +11,7 @@ import ( "gfx.cafe/gfx/pggat/lib/bouncer/backends/v0" "gfx.cafe/gfx/pggat/lib/bouncer/bouncers/v2" "gfx.cafe/gfx/pggat/lib/fed" + "gfx.cafe/gfx/pggat/lib/fed/codecs/netconncodec" "gfx.cafe/gfx/pggat/lib/gsql" "gfx.cafe/gfx/pggat/lib/util/flip" ) @@ -30,7 +31,7 @@ func TestQuery(t *testing.T) { t.Error(err) return } - server := fed.NewConn(s) + server := fed.NewConn(netconncodec.NewCodec(s)) err = backends.Accept( server, "",