Dialogic 05-2239-009 User Manual

Page of 604
If the MIME memory pool is empty, or if the configured MIME buffer size is smaller than the 
MIME body of an incoming SIP-T message, a GCEV_TASKFAIL event is sent to the application 
with the reason set to IPEC_MIME_POOL_EMPTY or IPEC_MIME_BUFF_TOO_SMALL, 
respectively. In addition, these error conditions also cause a response message with response code 
486(Busy Here) to be sent to the remote UA. The current transaction will be terminated without 
causing the state of the current call to change. 
4.11
Specifying Transport for SIP Messages
When a virtual board is configured with default values in the IP_VIRTBOARD data structure, the 
supported transport protocol for all SIP messages is UDP. Applications do not have the ability to 
send messages using TCP, and incoming TCP messages are refused. 
By setting non-default parameter values in the IP_VIRTBOARD before calling 
applications can enable support of TCP as well as UDP. In addition to enabling overall TCP 
support, the application can configure the board to use TCP as the default transport protocol, and 
can set the persistence of TCP connections. See 
, on page 110, for details about the configuration process.
When TCP is enabled, incoming TCP messages are accepted, and if the application needs to 
determine the transport protocol it can access the Request-URI in the Global Call event as 
described in 
responding to a SIP request, the application does not need to specify TCP because the transport 
parameter is already be present in the Request-URI. 
SIP requests that are sent by the application outside of a SIP dialog (for example, INVITE, 
SUBSCRIBE, or NOTIFY) normally use the default transport protocol, but the application can 
override the default to send a specific request using the non-default protocol by setting a 
“transport=” parameter in the Request-URI header field before the message is sent. If the default 
transport is UDP, the relevant parameter string to override the default is “;transport=tcp”; if the 
default transport is TCP, the relevant parameter string to override the default is “;transport=udp”. 
Setting the transport for a specific SIP request requires that the SIP message information access 
feature be enabled and uses the process described in 
, on page 183. The following code lines illustrate how a Request-URI with 
transport parameter would be inserted into the parameter block for the message to be sent.
sprintf(strReqURI, "sip:%s:%d;transport=tcp", strIPaddr, intPort);
gc_util_insert_parm_ref(&parmblkp, 
                        IPSET_SIP_MSGINFO, 
                        IPPARM_REQUEST_URI, 
                        strlen(strReqURI), 
                        strReqURI);
For SIP requests within a dialog (for example, INFO, NOTIFY, or REFER), there is no need to set 
the transport protocol if the persistence configuration item in IP_VIRTBOARD is set to 
ENUM_PERSISTENCE_TRANSACT_USER (the default value), because the existing TCP 
connection will be used.
BYE requests are exceptions to the general TCP behavior in several respects. First, BYE requests 
always make a new connection; an existing TCP connection is not used even if TCP is configured