📄 fsm_uac4req.c
字号:
else if (MSG_IS_STATUS_4XX(sipevent->sip)) {#ifndef EXTENDED_CALLBACKS if (((osip_t *)transaction->config)->cb_rcv4xx != NULL) ((osip_t *)transaction->config)->cb_rcv4xx(sipevent,transaction);#else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) { if (((osip_t *)transaction->config)->cb_rcvinvite4xx != NULL) ((osip_t *)transaction->config)->cb_rcvinvite4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) { if (((osip_t *)transaction->config)->cb_rcvbye4xx != NULL) ((osip_t *)transaction->config)->cb_rcvbye4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) { if (((osip_t *)transaction->config)->cb_rcvcancel4xx != NULL) ((osip_t *)transaction->config)->cb_rcvcancel4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) { if (((osip_t *)transaction->config)->cb_rcvinfo4xx != NULL) ((osip_t *)transaction->config)->cb_rcvinfo4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) { if (((osip_t *)transaction->config)->cb_rcvoptions4xx != NULL) ((osip_t *)transaction->config)->cb_rcvoptions4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) { if (((osip_t *)transaction->config)->cb_rcvregister4xx != NULL) ((osip_t *)transaction->config)->cb_rcvregister4xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) { if (((osip_t *)transaction->config)->cb_rcvprack4xx != NULL) ((osip_t *)transaction->config)->cb_rcvprack4xx(sipevent,transaction); } else { if (((osip_t *)transaction->config)->cb_rcvunkrequest4xx != NULL) ((osip_t *)transaction->config)->cb_rcvunkrequest4xx(sipevent,transaction); }#endif } else if (MSG_IS_STATUS_5XX(sipevent->sip)) {#ifndef EXTENDED_CALLBACKS if (((osip_t *)transaction->config)->cb_rcv5xx != NULL) ((osip_t *)transaction->config)->cb_rcv5xx(sipevent,transaction);#else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) { if (((osip_t *)transaction->config)->cb_rcvinvite5xx != NULL) ((osip_t *)transaction->config)->cb_rcvinvite5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) { if (((osip_t *)transaction->config)->cb_rcvbye5xx != NULL) ((osip_t *)transaction->config)->cb_rcvbye5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) { if (((osip_t *)transaction->config)->cb_rcvcancel5xx != NULL) ((osip_t *)transaction->config)->cb_rcvcancel5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) { if (((osip_t *)transaction->config)->cb_rcvinfo5xx != NULL) ((osip_t *)transaction->config)->cb_rcvinfo5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) { if (((osip_t *)transaction->config)->cb_rcvoptions5xx != NULL) ((osip_t *)transaction->config)->cb_rcvoptions5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) { if (((osip_t *)transaction->config)->cb_rcvregister5xx != NULL) ((osip_t *)transaction->config)->cb_rcvregister5xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) { if (((osip_t *)transaction->config)->cb_rcvprack5xx != NULL) ((osip_t *)transaction->config)->cb_rcvprack5xx(sipevent,transaction); } else { if (((osip_t *)transaction->config)->cb_rcvunkrequest5xx != NULL) ((osip_t *)transaction->config)->cb_rcvunkrequest5xx(sipevent,transaction); }#endif } else if (MSG_IS_STATUS_6XX(sipevent->sip)) {#ifndef EXTENDED_CALLBACKS if (((osip_t *)transaction->config)->cb_rcv6xx != NULL) ((osip_t *)transaction->config)->cb_rcv6xx(sipevent,transaction);#else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) { if (((osip_t *)transaction->config)->cb_rcvinvite6xx != NULL) ((osip_t *)transaction->config)->cb_rcvinvite6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) { if (((osip_t *)transaction->config)->cb_rcvbye6xx != NULL) ((osip_t *)transaction->config)->cb_rcvbye6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) { if (((osip_t *)transaction->config)->cb_rcvcancel6xx != NULL) ((osip_t *)transaction->config)->cb_rcvcancel6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) { if (((osip_t *)transaction->config)->cb_rcvinfo6xx != NULL) ((osip_t *)transaction->config)->cb_rcvinfo6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) { if (((osip_t *)transaction->config)->cb_rcvoptions6xx != NULL) ((osip_t *)transaction->config)->cb_rcvoptions6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) { if (((osip_t *)transaction->config)->cb_rcvregister6xx != NULL) ((osip_t *)transaction->config)->cb_rcvregister6xx(sipevent,transaction); } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) { if (((osip_t *)transaction->config)->cb_rcvprack6xx != NULL) ((osip_t *)transaction->config)->cb_rcvprack6xx(sipevent,transaction); } else { if (((osip_t *)transaction->config)->cb_rcvunkrequest6xx != NULL) ((osip_t *)transaction->config)->cb_rcvunkrequest6xx(sipevent,transaction); }#endif } return ; /* OK */}voidua_sendrequest(sipevent_t *sipevent,transaction_t *transaction){ int i; i = udp_send_request(sipevent->sip, transaction->proxy); if (i==-1) { transaction->state=NETWORK_ERROR; /* invoke the right callback! */ /* err must be tested.... NOT USABLE if (code==SIP_ECONNREFUSED) { if (((osip_t *)transaction->config)->cb_connection_refused != NULL) ((osip_t *)transaction->config)->cb_connection_refused(transaction); } else */ { if (((osip_t *)transaction->config)->cb_network_error != NULL) ((osip_t *)transaction->config)->cb_network_error(transaction); } msg_free(sipevent->sip); sfree(sipevent->sip); return ; } transaction->lastrequest = sipevent->sip; transaction->state = CALLING; /* invoke the right callback! */ if (MSG_IS_INVITE(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndinvite != NULL) ((osip_t *)transaction->config)->cb_sndinvite(sipevent,transaction); } else if (MSG_IS_BYE(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndbye != NULL) ((osip_t *)transaction->config)->cb_sndbye(sipevent,transaction); } else if (MSG_IS_REGISTER(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndregister != NULL) ((osip_t *)transaction->config)->cb_sndregister(sipevent,transaction); } else if (MSG_IS_CANCEL(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndcancel != NULL) ((osip_t *)transaction->config)->cb_sndcancel(sipevent,transaction); } else if (MSG_IS_INFO(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndinfo != NULL) ((osip_t *)transaction->config)->cb_sndinfo(sipevent,transaction); } else if (MSG_IS_OPTIONS(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndoptions != NULL) ((osip_t *)transaction->config)->cb_sndoptions(sipevent,transaction); } else if (MSG_IS_PRACK(sipevent->sip)) { if (((osip_t *)transaction->config)->cb_sndprack != NULL) ((osip_t *)transaction->config)->cb_sndprack(sipevent,transaction); } else { if (((osip_t *)transaction->config)->cb_sndunkrequest != NULL) ((osip_t *)transaction->config)->cb_sndunkrequest(sipevent,transaction); } return;}voidua_retransmitrequest(sipevent_t *sipevent,transaction_t *transaction){ int i; i = udp_send_request(transaction->lastrequest, transaction->proxy); if (i==-1) { transaction->state=NETWORK_ERROR; /* if (code==SIP_ECONNREFUSED) { if (((osip_t *)transaction->config)->cb_connection_refused != NULL) ((osip_t *)transaction->config)->cb_connection_refused(transaction); } else { TRACE(trace(__FILE__,__LINE__,TRACE_LEVEL1,NULL,"retransmission of request failed.\n")); */ if (((osip_t *)transaction->config)->cb_network_error != NULL) ((osip_t *)transaction->config)->cb_network_error(transaction); /*} */ return ; } /* invoke the right callback! */ if (((osip_t *)transaction->config)->cb_sndreq_retransmission != NULL) ((osip_t *)transaction->config)->cb_sndreq_retransmission(transaction); return; /* OK */}voidua_rcvresponse(sipevent_t *sipevent,transaction_t *transaction){ if (transaction->lastresponse!=NULL) { msg_free(transaction->lastresponse); sfree(transaction->lastresponse); } /* else this is the first response received */ transaction->lastresponse = sipevent->sip; DEBUG(msg_logresponse(transaction->lastresponse,"RCV %s %s (%s) f:%s t:%s cseq:%s callid:%s\n")); return ; /* OK */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -