Skip to content

Commit

Permalink
Add GetRemoteParameters to ICETransport
Browse files Browse the repository at this point in the history
Implementing to match webrtc-pc
  • Loading branch information
Sean-Der authored Feb 17, 2025
1 parent 969ab68 commit 70f0211
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
22 changes: 22 additions & 0 deletions icetransport.go
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,28 @@ func (t *ICETransport) GetLocalParameters() (ICEParameters, error) {
return t.gatherer.GetLocalParameters()
}

// GetRemoteParameters returns an IceParameters object which provides information
// uniquely identifying the remote peer for the duration of the ICE session.
func (t *ICETransport) GetRemoteParameters() (ICEParameters, error) {
t.lock.Lock()
defer t.lock.Unlock()

agent := t.gatherer.getAgent()
if agent == nil {
return ICEParameters{}, fmt.Errorf("%w: unable to get remote parameters", errICEAgentNotExist)
}

uFrag, uPwd, err := agent.GetRemoteUserCredentials()
if err != nil {
return ICEParameters{}, fmt.Errorf("%w: unable to get remote parameters", err)
}

return ICEParameters{
UsernameFragment: uFrag,
Password: uPwd,
}, nil
}

func (t *ICETransport) setState(i ICETransportState) {
t.state.Store(i)
}
Expand Down
23 changes: 19 additions & 4 deletions icetransport_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,19 +125,34 @@ func TestICETransport_GetSelectedCandidatePair(t *testing.T) {
closePairNow(t, offerer, answerer)
}

func TestICETransport_GetLocalParameters(t *testing.T) {
func TestICETransport_GetLocalAndRemoteParameters(t *testing.T) {
offerer, answerer, err := newPair()
assert.NoError(t, err)

_, err = offerer.SCTP().Transport().ICETransport().GetRemoteParameters()
assert.Error(t, err, errICEAgentNotExist)

peerConnectionConnected := untilConnectionState(PeerConnectionStateConnected, offerer, answerer)

assert.NoError(t, signalPair(offerer, answerer))
peerConnectionConnected.Wait()

localParameters, err := offerer.SCTP().Transport().ICETransport().GetLocalParameters()
offerLocalParameters, err := offerer.SCTP().Transport().ICETransport().GetLocalParameters()
assert.NoError(t, err)

offerRemoteParameters, err := offerer.SCTP().Transport().ICETransport().GetRemoteParameters()
assert.NoError(t, err)

answerLocalParameters, err := answerer.SCTP().Transport().ICETransport().GetLocalParameters()
assert.NoError(t, err)

answerRemoteParameters, err := answerer.SCTP().Transport().ICETransport().GetRemoteParameters()
assert.NoError(t, err)
assert.NotEqual(t, localParameters.UsernameFragment, "")
assert.NotEqual(t, localParameters.Password, "")

assert.Equal(t, offerLocalParameters.UsernameFragment, answerRemoteParameters.UsernameFragment)
assert.Equal(t, offerLocalParameters.Password, answerRemoteParameters.Password)
assert.Equal(t, answerLocalParameters.UsernameFragment, offerRemoteParameters.UsernameFragment)
assert.Equal(t, answerLocalParameters.Password, offerRemoteParameters.Password)

closePairNow(t, offerer, answerer)
}

0 comments on commit 70f0211

Please sign in to comment.