public SIPResponse GetOkResponse(SIPRequest sipRequest, SIPEndPoint localSIPEndPoint, string contentType, string messageBody)
{
try
{
SIPResponse okResponse = new SIPResponse(SIPResponseStatusCodesEnum.Ok, null, sipRequest.LocalSIPEndPoint);
SIPHeader requestHeader = sipRequest.Header;
okResponse.Header = new SIPHeader(new SIPContactHeader(null, new SIPURI(sipRequest.URI.Scheme, localSIPEndPoint)), requestHeader.From, requestHeader.To, requestHeader.CSeq, requestHeader.CallId);
if (m_contactIPAddress != null)
{
IPEndPoint contactEP = IPSocket.GetIPEndPoint(okResponse.Header.Contact.First().ContactURI.Host);
contactEP.Address = m_contactIPAddress;
okResponse.Header.Contact.First().ContactURI.Host = contactEP.ToString();
}
okResponse.Header.To.ToTag = m_localTag;
okResponse.Header.CSeqMethod = requestHeader.CSeqMethod;
okResponse.Header.Vias = requestHeader.Vias;
okResponse.Header.Server = m_sipServerAgent;
okResponse.Header.MaxForwards = Int32.MinValue;
okResponse.Header.RecordRoutes = requestHeader.RecordRoutes;
okResponse.Body = messageBody;
okResponse.Header.ContentType = contentType;
okResponse.Header.ContentLength = (messageBody != null) ? messageBody.Length : 0;
return okResponse;
}
catch (Exception excp)
{
logger.Error("Exception GetOkResponse. " + excp.Message);
throw excp;
}
}