Move this from Error -> Warn. Now that re-negotiation has landed users
will see this a lot more, and it isn't helpful by default. We still want
this message in case users are trying to debug if an OnTrack isn't
fired.
When offering always put application first. Before during re-negotation
we would break the order if media sections because we would always place
it last. Instead of remembering what order the application was place
just always place it first.
Resolves#1055
The data race detector detects a race if
PeerConnection.ConnectionState is called while
PeerConnection.updateConnectionState is changing
the connection state
Remove some duplication that makes re-negotiation harder.
By splitting parsing of inbound SDP and creation of outbound
it makes the next step a lot easier.
Relates to #207
Add a new public method, GetRegisteredRTPCodecs, under PeerConnection
to allow access to get the registered list of RTPCodec from the
underlying MediaEngine for developers who want to build libraries on
top of pion.
Resolves#966
Currently we error if a STUN URL passed to Configuration.ICEServers
contained a query parameter. Fix this by using the getICEServers
function that sanitizes these for us.
DataChannel readyState should be set to Closed on PeerConnection
shutdown. If not properly set it would attempt to interact with
state that doesn't exist after the PeerConnection has been Closed.
Setting the readyState is also clearly defined in the W3C webrtc-pc
Resolves#915
PeerConnection.Close() doesn't match the W3C RFC on closing,
re-order the transports so that they close in the proper order.
In the future we will use the DTLS Close alert and RTCP Bye to
better communicate shutdown
Use values directly from SettingValues instead of just copying
when calling NewICEGatherer. This greatly reduces the LoC and makes
the public API a little cleaner.
Resolves#872
Before we computed DataChannel IDs before signaling, this
is incorrect because IDs must take into account if we are
running an DTLS Client or Server.
This updates the DataChannel ID generation code to take this
into account before generating a streamId.
Resolves#908
In lots of our event handlers we return the event status.
This is so we can know if the callee has finished. In lots
of cases we don't care so get rid of them to simplify the code.
A change was recently made to the SetLocal and SetRemoteDescription
functions for PeerConnection that starts ICE gathering for the trickle
method only when generating an answer. This means clients generating an
offer to initiate signaling will stall indefinitely.
Before a:setup=actpass was showing up twice in each media description.
It is already being added in the addTransceiverSDP and
addDataMediaSection methods. This commit removes the extra call.
Take into consideration if remote is running DTLS as a
client/server. Before we ignored this value and we could
enter cases where DTLS would never connect.
Resolves#494
This fixes the echo program so it works properly on Safari
and Firefox, where the preferred offered dynamic media type
is not 96/VP8. It loads MediaEngine with codecs found in the
offer and then uses the payload type of the offer's preferred
video codec in the answer.
This behavior is fine. RTCP is lossy communication, so the caller
should should be ready to send packets multiple times if reception
is mandatory
Relates to #106