diff --git a/session.go b/session.go index 14c434e..5f6bdb4 100644 --- a/session.go +++ b/session.go @@ -3,6 +3,7 @@ package smux import ( "encoding/binary" "io" + "net" "sync" "sync/atomic" "time" @@ -241,6 +242,26 @@ func (s *Session) SetDeadline(t time.Time) error { return nil } +// LocalAddr satisfies net.Conn interface +func (s *Session) LocalAddr() net.Addr { + if ts, ok := s.conn.(interface { + LocalAddr() net.Addr + }); ok { + return ts.LocalAddr() + } + return nil +} + +// RemoteAddr satisfies net.Conn interface +func (s *Session) RemoteAddr() net.Addr { + if ts, ok := s.conn.(interface { + RemoteAddr() net.Addr + }); ok { + return ts.RemoteAddr() + } + return nil +} + // notify the session that a stream has closed func (s *Session) streamClosed(sid uint32) { s.streamLock.Lock()