Q/CT XXXX.1-2008
TIMEOUT_A¡¢TIMEOUT_BºÍTIMEOUT_D¡£
ÔÚclient¶Ë·¢ËÍInvite¶øÐèÒª´´½¨ÐµÄICTµÄtransactionʱ£¬TIMEOUT_B±»Æô¶¯£¬Ê±³¤Îª64*DEFAULT_T1(DEFAULT_TIΪ500ms)£¬TIMEOUT_BΪÕû¸ötransactionµÄÉúÃüÖÜÆÚʱ³¤£¬Èç¹û³¬¹ýÕâ¸öʱ¼ä£¬transaction»á±»½áÊø¡£Èçͬ´«Êä²ãʹÓõÄÊÇûÓд«Êä±£Ö¤µÄUDP£¬ÔòÉèÖÃTIMEOUT_A£¬TIMEOUT_DµÄ¼ä¸ôʱ¼äΪDEFAULT_T1ºÍ64* DEFAULT_T1¡£Èç¹û´«Êä²ãʹÓõÄÊÇÃæÏòÁ¬½ÓµÄTCP¼°Ïà¹ØÐÒ飬ÔòÖ±½ÓʹÓÃTCPÄÚ²¿µÄÖØ´«»úÖÆ£¬²»ÔÚSIPÐÒé²ãÌṩ´«ÊäµÄ±£»¤»úÖÆ£¬ËùÒÔ²»Æô¶¯TIMEOUT_AºÍTIMEOUT_D¡£TIMEOUT_A¹ÜÀíInviteµÄ´«ËÍ£¬ÔÚInvite±»·¢ËÍʱ£¬Æô¶¯¶¨Ê±Æ÷TIMEOUT_A£¬²¢ÇÒÔÚ³¬Ê±Ê±¼äÄÚ»¹Ã»½ÓÊÕµ½responseµÄʱºò£¬ÖØ·¢¸ÃInvite¡£TIMEOUT_DÓÃÓÚ¹ÜÀíACK£¬µ±½ÓÊÕµ½µÄresponse²»ÊÇ>£½300ʱ£¬client¶Ë·¢ËÍACK£¬µ±Öظ´½ÓÊÕµ½¸ÃinviteµÄresponseʱ£¬ÖØ·¢¸ÃACK£¬È·±£server¶ËÔÚkill tranctionǰÄܽÓÊÕµ½ACK¡£ 3.2.2
ISTµÄ´¦ÀíÁ÷³Ì
ͬICTµÄ´¦ÀíÁ÷³Ì£¬´¦ÀíosipÖеÄosip_ist_transactionÁ´±í¡£ISTµÄÏà¹ØeventµÄ×¢²á´¦Àíº¯ÊýÔÚist_fsm.cÎļþºÍist.cÎļþ¡£
ISTʹÓÃÁ˶¨Ê±Æ÷TIMEOUT_G¡¢TIMEOUT_HºÍTIMEOUT_I¡£Ê¹Ó÷½Ê½ÓëICTLÀàËÆ£¬Ïêϸ¼ûÐÒéջ˵Ã÷¡£ 3.2.3
NICTµÄ´¦ÀíÁ÷³Ì
ͬICTµÄ´¦ÀíÁ÷³Ì£¬´¦ÀíosipÖеÄosip_nict_transactionÁ´±í¡£NICTµÄÏà¹ØeventµÄ×¢²á´¦Àíº¯ÊýÔÚnict_fsm.cÎļþºÍnict.cÎļþ¡£
NICTʹÓÃÁ˶¨Ê±Æ÷TIMEOUT_E¡¢TIMEOUT_FºÍTIMEOUT_K¡£ 3.2.4
NISTµÄ´¦ÀíÁ÷³Ì
ͬICTµÄ´¦ÀíÁ÷³Ì£¬´¦ÀíosipÖеÄosip_nist_transactionÁ´±í¡£NISTµÄÏà¹ØeventµÄ×¢²á´¦
ÖйúIMSÍøÂçSIPÐÒ鹿·¶×ÜÌå¼¼ÊõÒªÇó - 9 -
Q/CT XXXX.1-2008
Àíº¯ÊýÔÚnist_fsm.cÎļþºÍnist.cÎļþ¡£
NISTʹÓÃÁ˶¨Ê±Æ÷TIMEOUT_J¡£ 3.3 Osip±¨ÎĵĽâÎö 3.3.1
sipÐÒ鱨ÎĵĽâÎöÕûÀíÁ÷³Ì
µ±½ÓÊÕµ½Ò»¸ömessageµÄʱºò£¬ÐèÒª½âÎö¸Ãmessage£¬Éú³ÉÒ»¸ö´úÂëÄܹ»´¦ÀíµÄÊý¾Ý½á¹¹£¬¸Ã½á¹¹¶¨ÒåΪstruct osip_message£¬¸Ã½á¹¹¶¨ÒåµÄÒ»¸ömessageµÄÈ«²¿Ïà¹ØÐÅÏ¢£¬ÕâЩÐÅÏ¢Ö÷ÒªÊǹ©transactionºÍdialog¼°dialogµÄ¸üÉÏÒ»²ãÈçcall£¬notifyµÈµÄʹÓá£
¶ÔÒ»¸ömessageµÄ½âÎöÁ÷³ÌÈçÏÂͼËùʾ£º
osip_message_parse_osip_message_parseosip_util_replace_all_lws__osip_message_startline_parsemsg_headers_parsemsg_osip_body_parse ÔÚ½ÓÊÕµ½Ò»¸ömessageʱ£¬µ÷Óú¯Êýosip_message_parse½øÐÐmessageµÄ½âÎö¡£Ê×Ïȵ÷Óú¯Êýosip_util_replace_all_lwsÌæ»»µômessageÖеÄÁ¬Ðø³öÏÖµÄ ¡®\\r\\n\\t¡¯¡¢¡®\\r\\t¡¯¡¢¡®\\n\\t¡¯¡¢¡®\\r\\n ¡¯¡¢¡®\\r ¡¯¡¢¡®\\n ¡¯Îª¿Õ¸ñ£¬messageÊÇÒÔ¡®\\0¡¯Îª½áÊø±êÖ¾µÄ£¬messageµÄheadersºÍbodyÖ®¼äµÄ·Ö½çÊÇÒÔ¡¯\\r\\n\\r\\n¡¯Îª±êÖ¾µÄ£¬Ìæ»»Ö»Ìæ»»µ½¡¯\\r\\n\\r\\n¡¯ÎªÖ¹£¬¼´Ö»Ìæ»»headers²¿·Ö³öÏÖµÄ\\t¡¢\\r¡¢\\n¡£ÓÉÓÚsipÐÒéÕ»¹æ¶¨£¬Ã¿¸öheaders¶¼ÊÇÆðÐÂÐУ¬¶øÇÒÐÂÐеÄÍ·Ò»¸ö×Ö·û²»Îª¿Õ¸ñ»ò\\t£¬ËùÒÔÁ½¸öheaderÖ®¼äµÄ\\r\\n²»»á±»Ìæ»»µô£¬Ìæ»»µÄÖ»ÊÇÒ»¸öÔÊÐímultiºÏ²¢ÏîµÄheaderµÄÄÚ²¿¶à¸öÖµÖ®¼äµÄ¡°\\r\\n\\t¡±»ò¡°\\r\\n ¡±¡£
ÖйúIMSÍøÂçSIPÐÒ鹿·¶×ÜÌå¼¼ÊõÒªÇó - 10 -
Q/CT XXXX.1-2008
¾ÙÀýÈçÏ£ºÓÐÁ½¸öheader£¬ÆäÖÐSubjectÖ»ÔÊÐíµ¥¸öÖµ³öÏÖ£¬ RouteÔÊÐíÓжà¸öÖµ³öÏÖ£¬¶øÇÒÔÊÐí·ÖÐУ¬µ«ÊÇ·ÖÐбØÐëÒÔ¿Õ¸ñ»ò\\t¿ªÍ·£¬¶øSubjectºÍRouteÐбØÐè¶¥¸ñ¿ªÊ¼£¬Ç°ÃæÊÇûÓпոñ»ò\\tµÄ£¬osip_util_replace_all_lwsº¯Êý½«Route header valueÖеÄÁ½ÐмäµÄ\\r\\n\\tת»¯Îª¿Õ¸ñ£¬¼´ÔÚÂß¼ÉϾͳÉΪһÐÐÁË¡£
Subject: Lunch
Route:
Ò»¸ömessageÓÉÈý²¿·Ö×é³É£¬Ê×ÏÈÊÇmessageµÄstartline²¿·Ö£¬¸ÃÐÐÖ¸Ã÷ÕâÊÇÒ»¸ösipµÄmessage£¬°üÀ¨sip±êÖ¾£¬ÇëÇó»òÓ¦´ð˵Ã÷£¬×´Ì¬Öµ£¬È»ºóÒÔ\\r\\n×öΪºÍheadersµÄ·Ö¸ô·û¡£¸Ã\\r\\n²»»á±»osip_util_replace_all_lwsÌæ»»Îª¿Õ¸ñ£¬ÈçÇëÇóµÄINVITE sip:bob@biloxi.com SIP/2.0»òÓ¦´ðµÄSIP/2.0 200 OK£¬ÔÚÈý¸öÊôÐÔÖ®¼äÓÐÇÒ½öÓÐÒ»¸ö¿Õ¸ñ¡£ÆðʼÐеĽâÎöÓÉ__osip_message_startline_parse½øÐнâÎö£¬½âÎöµÃµ½messageµÄÀàÐÍ£¬messageµÄsipversionÒÔ¼°messageµÄstatus_code£¬µ±status_codeΪ³õʼ»¯Öµ0ʱ£¬¸Ãmessage
Ϊһ¸öÇëÇ󣬷ñÔòΪӦ´ð¡£ÇëÇóµÄ
startline
ÓÉ
__osip_message_startline_parsereq½øÐнâÎö£¬µÃµ½ÇëÇóµÄrequest_uri;Ó¦´ðµÄstartlineÓÉ__osip_message_startline_parseresp½øÐнâÎö¡£Startline²¿·ÖµÄ½âÎöÊÇÑϸñ°²×°³öÏÖµÄÈý¸öÊôÐÔµÄ˳Ðò½øÐнâÎöµÄ£¬²¢½«½âÎö½á¹û±£´æÔÚosip_messageµÄ½á¹¹³ÉÔ±±äÁ¿ÖС£
È»ºó½âÎömessgeµÄheaders²¿·Ö£¬µ÷Óú¯Êý msg_headers_parse¡£ËµÃ÷¼ûosipµÄheader±¨ÎÄÍ·½âÎö¡£
Èç¹ûmessageÖÐÔÚheadersÖ®ºó²»ÊǽáÊø·û¡¯\\0¡¯£¬Ôò¼ÌÐø½âÎömessageµÄ¸ºÔز¿·Ö£¬µ÷Óú¯Êýmsg_osip_body_parse½øÐнâÎö¡£MessageµÄbody½âÎöÊ×ÏȲéѯheadersÍ·½âÎöÖб£´æ
ÖйúIMSÍøÂçSIPÐÒ鹿·¶×ÜÌå¼¼ÊõÒªÇó - 11 -
Q/CT XXXX.1-2008
µÄcontent¡ª¡ª¼´body¨D¨DµÄÊôÐÔ£ºcontent_type£¬Èç¹ûcontent_typeÖеÄtype²»Îªmultipart£¬¼´²»Ö§³Ö¶àÖÖmime·½Ê½µÄcontent£¬ËµÃ÷bodyÖоÍÒ»¸ö±àÂ뷽ʽ£¬Ö±½Ó½«Õû¸öbody½âÎöΪһ¸öÄÚÈÝ£»Èç¹ûtypeΪmultitype£¬ËµÃ÷Óжà¸ö±àÂ뷽ʽµÄbody×éºÏÔÚÒ»ÆðÐγÉÒ»¸öÕûÌåµÄbody£¬ÔòÒÔ¡±--¡±Îª·Ö¸ô·û½âÎöbody£¬½«body·ÖΪ¶à¸ömime±àÂ뷽ʽµÄ×Ö·û´®£¬Ã¿¸ö½âÎöºóµÄbodyÄÚÈݱ£´æÔÚosip_message½á¹¹ÖеÄbodies½á¹¹³ÉÔ±ÖС£ 3.3.2
Osip±¨ÎÄÍ·µÄ½âÎö
msg_headers_parseYes£¬½âÎöÏÂÒ»¸öheaderheader½âÎö³É¹¦£¬bodyΪNULL·µ»Ø³É¹¦,body=start_of_headerStart_of_header[0]Ϊ0NoYes__osip_find_next_crlf»ñÈ¡ÏÂÒ»¸ö\\r\\n£¬±£´æÎ»Öõ½end_of_headerSuccessYes£¬½âÎöÏÂÒ»¸öheaderStart_of_headerΪ\\r»ò\\nnoosip_message_set_multiple_headerYesfail·µ»Øerrorheader½âÎösuccess, start_of_header = end_of_headerno
ÔÚ½âÎömessageµÄheaderµÄʱºò£¬ÒòÎªÇ°ÃæµÄosip_util_replace_all_lwsÒѾת»¯Á˵¥¸öheaderÄÚ²¿³öÏÖµÄ\\r¡¢\\nºÍ\\tΪ¿Õ¸ñ£¬ËùÒÔÿ¸öheaderÖ®¼ä¿ÉÒÔʹÓÃ\\r\\n×öΪ·Ö¸ô·û½øÐзָô¡£Èç¹û×Ö·û´®¿ªÍ·start_of_headerÒѾµ½´ï½áÊø·û¡±\\0¡±£¬ÔòÈ«²¿header½âÎöÍê±Ï£¬·µ»Ø³É¹¦£»µ÷ÓÃ__osip_find_next_crlfÕÒµ½Õâ¸öheaderµÄ½áÊø×Ö·û²¢±£´æÔÚend_of_headerÖУ»Èç¹ûstart_of_headerΪ\\r»ò\\n£¬ÔòÒѾ½âÎöµ½\\r\\n\\r\\n¼´headersµÄ½áÊø×Ö·û´®£¬Ôò·µ»Ø³É¹¦£¬²¢ÇÒ±£´æstart_of_headerµ½bodyÖУ¬¼´bodyÊÇ´Ó\\r\\n×Ö·û´®¿ªÊ¼½âÎöµÄ£¬ËùÒÔÔÚbody½âÎöʱ£¬ÐèÒªÌø¹ý\\r\\n¼°Ö®ºóµÄ¿Õ¸ñ²¿·Ö£»¸ù¾ÝheaderÄÚ²¿·Ö¸ô·û¡°£º¡±£¬È¡³öheaderµÄhnameºÍhvalue£¬ÆäÖÐ
hvalue
ÔÚijЩ
hname
µÄÇé¿öÏÂÊÇÔÊÐíΪ¿ÕµÄ£¬È»ºóµ÷ÓÃ
ÖйúIMSÍøÂçSIPÐÒ鹿·¶×ÜÌå¼¼ÊõÒªÇó - 12 -