public SIPEndPoint LookupTransactionID(SIPRequest sipRequest)
{
try
{
SIPEndPoint transactionEndPoint = LookupTransactionID(sipRequest.Header.CallId);
if (transactionEndPoint != null)
{
return transactionEndPoint;
}
else if (sipRequest.Method == SIPMethodsEnum.INVITE && !sipRequest.URI.User.IsNullOrBlank())
{
string toUser = (sipRequest.URI.User.IndexOf('.') != -1) ? sipRequest.URI.User.Substring(sipRequest.URI.User.LastIndexOf('.') + 1) : sipRequest.URI.User;
if (m_userCallbacks.ContainsKey(toUser))
{
SIPEndPoint callbackEndPoint = null;
callbackEndPoint = SIPEndPoint.ParseSIPEndPoint(m_userCallbacks[toUser].DesintationEndPoint);
RecordDispatch(sipRequest, callbackEndPoint);
ProxyLogger_External(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.SIPProxy, SIPMonitorEventTypesEnum.DialPlan, "SIP Proxy directing incoming call for user " + toUser + " to application server " + callbackEndPoint.ToString() + ".", toUser));
lock (m_userCallbacks)
{
m_userCallbacks.Remove(toUser);
}
return callbackEndPoint;
}
}
return null;
}
catch (Exception excp)
{
logger.Error("Exception LookupTransactionID. " + excp.Message);
return null;
}
}