From 4299d21e8fb247a09f4ed1635a2ec4bb3e083114 Mon Sep 17 00:00:00 2001 From: xtaci Date: Tue, 14 May 2019 21:17:35 +0800 Subject: [PATCH] add method LocalAddr and RemoteAddr --- session.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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()