Files
webrtc/configuration.go
mchlrhw 7243561f2f Implement permissive STUN URL parsing
The parser included in the ice package strictly adheres to RFC 7064,
however, this can be problematic when attempting to use ICE server URLs
that were automatically generated by a third party.

Twilio, for example, has been seen to send the following in its list of
ICE servers:

    stun:global.stun.twilio.com:3478?transport=udp

which would require user intervention to sanitise before passing to
Pion.
This patch side-steps this aspect of ice.ParseURL by pre-stripping any
queries that may be present so that we can allow URLs of this form.
2019-07-17 06:42:46 +01:00

50 lines
2.0 KiB
Go

// +build !js
package webrtc
// Configuration defines a set of parameters to configure how the
// peer-to-peer communication via PeerConnection is established or
// re-established.
type Configuration struct {
// ICEServers defines a slice describing servers available to be used by
// ICE, such as STUN and TURN servers.
ICEServers []ICEServer
// ICETransportPolicy indicates which candidates the ICEAgent is allowed
// to use.
ICETransportPolicy ICETransportPolicy
// BundlePolicy indicates which media-bundling policy to use when gathering
// ICE candidates.
BundlePolicy BundlePolicy
// RTCPMuxPolicy indicates which rtcp-mux policy to use when gathering ICE
// candidates.
RTCPMuxPolicy RTCPMuxPolicy
// PeerIdentity sets the target peer identity for the PeerConnection.
// The PeerConnection will not establish a connection to a remote peer
// unless it can be successfully authenticated with the provided name.
PeerIdentity string
// Certificates describes a set of certificates that the PeerConnection
// uses to authenticate. Valid values for this parameter are created
// through calls to the GenerateCertificate function. Although any given
// DTLS connection will use only one certificate, this attribute allows the
// caller to provide multiple certificates that support different
// algorithms. The final certificate will be selected based on the DTLS
// handshake, which establishes which certificates are allowed. The
// PeerConnection implementation selects which of the certificates is
// used for a given connection; how certificates are selected is outside
// the scope of this specification. If this value is absent, then a default
// set of certificates is generated for each PeerConnection instance.
Certificates []Certificate
// ICECandidatePoolSize describes the size of the prefetched ICE pool.
ICECandidatePoolSize uint8
// SDPSemantics controls the type of SDP offers accepted by and
// SDP answers generated by the PeerConnection.
SDPSemantics SDPSemantics
}