Skip to content

Commit d3db570

Browse files
Merge pull request #127 from Netflix/listener-interface
Updating interface for server.Listener to support wrapped connections
2 parents 22dcb0d + 463f16f commit d3db570

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

server/listen.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,18 @@ func (l *tcpListener) Accept() (net.Conn, error) {
3737
return l.listener.Accept()
3838
}
3939

40-
func (l *tcpListener) ModifyConnSettings(conn net.Conn) error {
40+
func (l *tcpListener) Configure(conn net.Conn) (net.Conn, error) {
4141
tcpRemote := conn.(*net.TCPConn)
4242

4343
if err := tcpRemote.SetKeepAlive(true); err != nil {
44-
return err
44+
return conn, err
4545
}
4646

47-
return tcpRemote.SetKeepAlivePeriod(30 * time.Second)
47+
if err := tcpRemote.SetKeepAlivePeriod(30 * time.Second); err != nil {
48+
return conn, err
49+
}
50+
51+
return conn, nil
4852
}
4953

5054
// TCPListener is a ListenConst that returns a tcp listener for the given port
@@ -66,8 +70,8 @@ func (l *unixListener) Accept() (net.Conn, error) {
6670
return l.listener.Accept()
6771
}
6872

69-
func (l *unixListener) ModifyConnSettings(conn net.Conn) error {
70-
return nil
73+
func (l *unixListener) Configure(conn net.Conn) (net.Conn, error) {
74+
return conn, nil
7175
}
7276

7377
// UnixListener is a ListenConst that returns a unix domain socket listener for the given path
@@ -123,9 +127,9 @@ func ListenAndServe(l ListenConst, ps []protocol.Components, s ServerConst, o or
123127
}
124128
metrics.IncCounter(MetricConnectionsEstablishedExt)
125129

126-
err = listener.ModifyConnSettings(remote)
130+
remote, err = listener.Configure(remote)
127131
if err != nil {
128-
log.Println("Error modifying connection settings after accept:", err.Error())
132+
log.Println("Error configuring connection after accept:", err.Error())
129133
remote.Close()
130134
continue
131135
}

server/types.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ type Server interface {
3535
Loop()
3636
}
3737

38+
// ListenConst is a constructor function for listener implementations
3839
type ListenConst func() (Listener, error)
3940

41+
// Listener is a type to accept and configure new connections
4042
type Listener interface {
4143
Accept() (net.Conn, error)
42-
ModifyConnSettings(net.Conn) error
44+
Configure(net.Conn) (net.Conn, error)
4345
}
4446

4547
var (

0 commit comments

Comments
 (0)