Show / Hide Table of Contents

Namespace SIPSorcery.SIP

Classes

AuthHeaders

Authorization Headers

CallProperties

HTTPDigest

SIPAuthChallenge

SIPAuthenticationHeader

SIPAuthorisationDigest

SIPCDR

Call detail record for a SIP call.

SIPChannel

The SIPChannel abstract class encapsulates the common properties and methods required of a SIP channel. A SIP channel's primary responsibility is sending and receiving messages from the network.

SIPClientWebSocketChannel

A SIP transport Channel for establishing an outbound connection over a Web Socket communications layer as per RFC7118. The channel can manage multiple connections. All SIP clients wishing to initiate a connection to a SIP web socket server should use a single instance of this class.

SIPConstants

SIPContactHeader

SIPDialogue

See "Chapter 12 Dialogs" in RFC3261.

SIPDns

SIP specific DNS resolution.

SIPDNSConstants

SIPEndPoint

This class is a more specific version of the SIPURI class BUT is only concerned with the network and transport properties. It contains all the information needed to determine the remote end point to deliver a SIP request or response to.

This class must remain immutable otherwise the SIP stack can develop problems. SIP end points can get passed amongst different servers for logging and forwarding SIP messages and a modification of the end point by one server can result in a problem for a different server. Instead a new SIP end point should be created wherever a modification is required.

SIPEscape

For SIP URI user portion the reserved characters below need to be escaped.

reserved    =  ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+"  / "$" / ","
user-unreserved  =  "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
Leaving to be escaped = ":" / "@" 

For SIP URI parameters different characters are unreserved (just to make life difficult).

reserved    =  ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+"  / "$" / ","
param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$"
Leaving to be escaped =  ";" / "?" / "@" / "=" / ","

SIPEventConsts

SIPEventDialog

SIPEventDialogInfo

Represents the top level XML element on a SIP event dialog payload as described in: RFC4235 "An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)".

SIPEventDialogParticipant

SIPEventFilters

SIPEventPackageType

SIPEventPresence

SIPEventPresenceTuple

SIPExtensionHeaders

Constants that can be placed in the SIP Supported or Required headers to indicate support or mandate for a particular SIP extension.

SIPFromHeader

SIPHeader

SIPHeaderAncillary

SIPHeaders

SIPMessageBase

SIPMessageBuffer

Represents an incoming message before having determined whether it is a request or a response.

SIPMethods

SIPMIMETypes

SIPNonInviteTransaction

SIPParameterlessURI

SIPParameters

Represents a series of name value pairs that are optionally included in SIP URIs and also as an additional optional setting on some SIP Headers (Contact, To, From, Via). This class also treats the header value of a SIP URI as a special case of a SIP parameter. The difference between a parameter and a SIP URI header is the start and delimiter characters used.

SIPProtocolsType

SIPReplacesParameter

SIPRequest

Represents a SIP Request.

SIPResponse

Represents a SIP Response.

SIPResponseStatusCodes

SIPRoute

The SIPRoute class is used to represent both Route and Record-Route headers.

SIPRouteSet

SIPSchemesType

SIPServices

SIPStreamConnection

Represents a reliable stream connection (e.g. TCP or TLS) between two end points. Stream connections have a more overhead than UDP. The state of the connection has to be monitored and messages on the stream can be spread across multiple packets.

SIPStreamWrapper

SIPTCPChannel

SIP transport for TCP. Note this is also the base class for the SIPTLSChannel. For the TLS channel the TCP base class will accept or connect and then switch to the TLS class to upgrade to an SSL stream.

SIPTimings

SIPTLSChannel

SIPToHeader

SIPTransaction

A state machine for SIP transactions.

SIPTransport

SIPTransportConfig

SIPUDPChannel

SIPURI

Implements the SIP URI concept from the SIP RFC3261.

SIPUriHeader

Class used to parse History-Info, Diversion, P-Asserted-Identity Headers.

SIPUserAgentRolesTypes

SIPUserField

Encapsulates the format for the SIP Contact, From, PAI and To headers.

SIPValidationException

SIPViaHeader

The Via header only has parameters, no headers. Parameters of from ...;name=value;name2=value2 Specific parameters: ttl, maddr, received, branch.

From page 179 of RFC3261: "Even though this specification mandates that the branch parameter be present in all requests, the BNF for the header field indicates that it is optional."

The branch parameter on a Via therefore appears to be optionally mandatory?!

Any SIP application element that uses transactions depends on the branch parameter for transaction matching. Only the top Via header branch is used for transactions though so if the request has made it to this stack with missing branches then in theory it should be safe to proceed. It will be left up to the SIPTransaction class to reject any SIP requests that are missing the necessary branch.

SIPViaSet

SIPWebSocketChannel

A SIP transport Channel for transmitting SIP over a Web Socket communications layer as per RFC7118.

var sipTransport = new SIPTransport();
var wsSipChannel = new SIPWebSocketChannel(IPAddress.Loopback, 80);

var wssCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2("localhost.pfx");
var wssSipChannel = new SIPWebSocketChannel(IPAddress.Loopback, 433, wssCertificate);

sipTransport.AddSIPChannel(wsSipChannel);
sipTransport.AddSIPChannel(wssSipChannel);

UACInviteTransaction

SIP transaction that initiates a call to a SIP User Agent Server. This transaction processes outgoing calls SENT by the application.

UASInviteTransaction

The server transaction for an INVITE request. This transaction processes incoming calls RECEIVED by the application.

Structs

SIPEventDialogStateEvent

Enums

DigestAlgorithmsEnum

SIPAuthorisationHeadersEnum

SIPCallDirection

SIPDialogueStateEnum

SIPDialogueTransferModesEnum

SIPEventDialogDirectionEnum

SIPEventDialogInfoStateEnum

SIPEventPackagesEnum

SIPEventPresenceStateEnum

SIPExtensions

List of SIP extensions to RFC3262.

SIPMessageTypesEnum

SIPMethodsEnum

A list of the different SIP request methods that are supported.

SIPProtocolsEnum

A list of the transport layer protocols that are supported (the network layers supported are IPv4 and IPv6).

SIPResponseParserError

SIPResponseStatusCodesEnum

SIPSchemesEnum

SIPServicesEnum

A list of the different combinations of SIP schemes and transports.

SIPTransactionStatesEnum

SIPTransactionTypesEnum

SIPUserAgentRoles

SIPUserAgentRolesEnum

SIPValidationFieldsEnum

Delegates

CDRReadyDelegate

ResolveSIPUriDelegateAsync

ResolveSIPUriFromCacheDelegate

SIPMessageReceivedAsyncDelegate

SIPMessageSentAsyncDelegate

SIPTransactionCancelledDelegate

SIPTransactionFailedDelegate

SIPTransactionRequestReceivedDelegate

SIPTransactionRequestRetransmitDelegate

SIPTransactionResponseReceivedDelegate

SIPTransactionResponseRetransmitDelegate

SIPTransactionStateChangeDelegate

SIPTransactionTraceMessageDelegate

SIPTransportRequestAsyncDelegate

SIPTransportRequestTraceDelegate

SIPTransportResponseAsyncDelegate

SIPTransportResponseTraceDelegate

SIPTransportSIPBadMessageDelegate

STUNRequestReceivedDelegate

In This Article
Back to top Generated by DocFX