protected SIPTransaction(
SIPTransport sipTransport,
SIPRequest transactionRequest,
SIPEndPoint dstEndPoint,
SIPEndPoint localSIPEndPoint,
SIPEndPoint outboundProxy)
{
try
{
if (sipTransport == null)
{
throw new ArgumentNullException("A SIPTransport object is required when creating a SIPTransaction.");
}
else if (transactionRequest == null)
{
throw new ArgumentNullException("A SIPRequest object must be supplied when creating a SIPTransaction.");
}
/*else if (dstEndPoint == null && outboundProxy == null)
{
throw new ArgumentNullException("The remote SIP end point or outbound proxy must be set when creating a SIPTransaction.");
}*/
else if (localSIPEndPoint == null)
{
throw new ArgumentNullException("The local SIP end point must be set when creating a SIPTransaction.");
}
else if (transactionRequest.Header.Vias.TopViaHeader == null)
{
throw new ArgumentNullException("The SIP request must have a Via header when creating a SIPTransaction.");
}
TransactionsCreated++;
m_sipTransport = sipTransport;
m_transactionId = GetRequestTransactionId(transactionRequest.Header.Vias.TopViaHeader.Branch, transactionRequest.Header.CSeqMethod);
HasTimedOut = false;
m_transactionRequest = transactionRequest;
m_branchId = transactionRequest.Header.Vias.TopViaHeader.Branch;
m_callId = transactionRequest.Header.CallId;
m_sentBy = transactionRequest.Header.Vias.TopViaHeader.ContactAddress;
RemoteEndPoint = dstEndPoint;
LocalSIPEndPoint = localSIPEndPoint;
OutboundProxy = outboundProxy;
}
catch (Exception excp)
{
logger.Error("Exception SIPTransaction (ctor). " + excp.Message);
throw excp;
}
}