Add ability to get local and remote addresses

This commit is contained in:
Jacob
2025-05-02 14:18:18 -04:00
parent 01ff525f3c
commit ef26bf31ca
3 changed files with 22 additions and 7 deletions

13
conn.go
View File

@@ -21,11 +21,16 @@ type Conn struct {
closeOnce sync.Once
closed atomic.Bool
localAddr, remoteAddr net.Addr
}
func newConn(peer *webrtc.PeerConnection) *Conn {
func newConn(peer *webrtc.PeerConnection, localAddr, remoteAddr net.Addr) *Conn {
c := &Conn{
peerConn: peer,
errorChan: make(chan error, 16), //TODO! - Sizing
localAddr: localAddr,
remoteAddr: remoteAddr,
}
return c
}
@@ -88,13 +93,11 @@ func (c *Conn) Close() error {
}
func (c *Conn) LocalAddr() net.Addr {
//TODO: implement
return nil
return c.localAddr
}
func (c *Conn) RemoteAddr() net.Addr {
//TODO: implement
return nil
return c.remoteAddr
}
func (c *Conn) SetDeadline(t time.Time) error {

View File

@@ -51,7 +51,7 @@ func Dial(address string, tlsConfig *tls.Config, ordered bool, iceServers []stri
return nil, err
}
conn := newConn(peerConnection)
conn := newConn(peerConnection, wSock.LocalAddr(), wSock.RemoteAddr())
connFinish := make(chan bool)
peerConnection.OnICECandidate(func(c *webrtc.ICECandidate) {
logger.Trace().Msg("Dial: peerConnection.OnICECandidate")

View File

@@ -87,6 +87,9 @@ func (l *Listener) Addr() net.Addr {
func (l *Listener) attemptWebRtcNegotiation(wsConn net.Conn) {
defer trace("finished attemptWebRtcNegotiation")
localAddr := wsConn.LocalAddr()
remoteAddr := wsConn.RemoteAddr()
api := getSettingsEngineApi()
var candidatesMux sync.Mutex
@@ -121,6 +124,15 @@ func (l *Listener) attemptWebRtcNegotiation(wsConn net.Conn) {
return // Do nothing because the ice candidate was nil for some reason
}
// logger.Trace().
// Str("Address", c.Address).
// Str("Protocol", c.Protocol.String()).
// Uint16("Port", c.Port).
// Str("CandidateType", c.Typ.String()).
// Str("RelatedAddress", c.RelatedAddress).
// Uint16("RelatedPort", c.RelatedPort).
// Msg("rtcnet: peerConnection.OnICECandidate")
candidatesMux.Lock()
defer candidatesMux.Unlock()
@@ -167,7 +179,7 @@ func (l *Listener) attemptWebRtcNegotiation(wsConn net.Conn) {
// Register data channel creation handling
peerConnection.OnDataChannel(func(d *webrtc.DataChannel) {
conn := newConn(peerConnection)
conn := newConn(peerConnection, localAddr, remoteAddr)
conn.dataChannel = d
// Register channel opening handling