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.