📄 jcallback.c
字号:
OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO3, NULL, "cb_rcv6xx (id=%i)\r\n", tr->transactionid)); if (MSG_IS_RESPONSE_FOR (sip, "PUBLISH")) { eXosip_pub_t *pub; eXosip_event_t *je; int i; i = _eXosip_pub_update (&pub, tr, sip); if (i != 0) { OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL, "cb_rcv6xx (id=%i) No publication to update\r\n", tr->transactionid)); } je = eXosip_event_init_for_message (EXOSIP_MESSAGE_GLOBALFAILURE, tr); report_event (je, sip); return; } else if (MSG_IS_RESPONSE_FOR (sip, "REGISTER")) { rcvregister_failure (tr, sip); return; } if (jinfo == NULL) return; jd = jinfo->jd; jc = jinfo->jc; jn = jinfo->jn; js = jinfo->js; if (MSG_IS_RESPONSE_FOR (sip, "INVITE")) { report_call_event (EXOSIP_CALL_GLOBALFAILURE, jc, jd, tr); } else if (MSG_IS_RESPONSE_FOR (sip, "NOTIFY") && jn!=NULL) { eXosip_event_t *je; je = eXosip_event_init_for_notify (EXOSIP_NOTIFICATION_REQUESTFAILURE, jn, jd, tr); report_event (je, sip); } else if (MSG_IS_RESPONSE_FOR (sip, "SUBSCRIBE")) { eXosip_event_t *je; je = eXosip_event_init_for_subscribe (EXOSIP_SUBSCRIPTION_GLOBALFAILURE, js, jd, tr); report_event (je, sip); } else if (jc != NULL) { report_call_event (EXOSIP_CALL_MESSAGE_GLOBALFAILURE, jc, jd, tr); return; } else if (jc == NULL && js == NULL && jn == NULL) { eXosip_event_t *je; /* For all requests outside of calls */ je = eXosip_event_init_for_message (EXOSIP_MESSAGE_GLOBALFAILURE, tr); report_event (je, sip); return; } if (jd == NULL) return; if (MSG_IS_RESPONSE_FOR (sip, "INVITE") || MSG_IS_RESPONSE_FOR (sip, "SUBSCRIBE")) { eXosip_delete_early_dialog (jd); jd->d_STATE = JD_GLOBALFAILURE; }}#elsestatic voidcb_rcv3456xx (int type, osip_transaction_t * tr, osip_message_t * sip, int invite_event, int call_event, int outcall_event, int state);static voidcb_rcv3456xx (int type, osip_transaction_t * tr, osip_message_t * sip, int invite_event, int call_event, int outcall_event, int state){ eXosip_dialog_t *jd; eXosip_call_t *jc; jinfo_t *jinfo = (jinfo_t *) osip_transaction_get_your_instance (tr); OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO3, NULL, "cb_rcv3456xx (id=%i)\r\n", tr->transactionid)); udp_tl_learn_port_from_via(sip); if (MSG_IS_RESPONSE_FOR (sip, "REGISTER")) { rcvregister_failure (tr, sip); return; } if (jinfo == NULL) return; jd = jinfo->jd; jc = jinfo->jc; if (MSG_IS_RESPONSE_FOR (sip, "INVITE")) { report_call_event (invite_event, jc, jd, tr); } else if (jc != NULL) { report_call_event (call_event, jc, jd, tr); return; } else if (jc == NULL) { eXosip_event_t *je; /* For all requests outside of calls */ je = eXosip_event_init_for_message (outcall_event, tr); report_event (je, sip); return; } if (jc != NULL) { if (MSG_TEST_CODE (sip, 401) || MSG_TEST_CODE (sip, 407)) { if (jc->response_auth != NULL) osip_message_free (jc->response_auth); osip_message_clone (sip, &jc->response_auth); } } if (jd == NULL) return; if (MSG_IS_RESPONSE_FOR (sip, "INVITE")) { eXosip_delete_early_dialog (jd); if (MSG_TEST_CODE (sip, 401) || MSG_TEST_CODE (sip, 407)) jd->d_STATE = JD_AUTH_REQUIRED; else jd->d_STATE = state; }}static voidcb_rcv3xx (int type, osip_transaction_t * tr, osip_message_t * sip){ cb_rcv3456xx (type, tr, sip, EXOSIP_CALL_REDIRECTED, EXOSIP_CALL_MESSAGE_REDIRECTED, EXOSIP_MESSAGE_REDIRECTED, JD_REDIRECTED);}static voidcb_rcv4xx (int type, osip_transaction_t * tr, osip_message_t * sip){ cb_rcv3456xx (type, tr, sip, EXOSIP_CALL_REQUESTFAILURE, EXOSIP_CALL_MESSAGE_REQUESTFAILURE, EXOSIP_MESSAGE_REQUESTFAILURE, JD_CLIENTERROR);}static voidcb_rcv5xx (int type, osip_transaction_t * tr, osip_message_t * sip){ cb_rcv3456xx (type, tr, sip, EXOSIP_CALL_SERVERFAILURE, EXOSIP_CALL_MESSAGE_SERVERFAILURE, EXOSIP_MESSAGE_SERVERFAILURE, JD_SERVERERROR);}static voidcb_rcv6xx (int type, osip_transaction_t * tr, osip_message_t * sip){ cb_rcv3456xx (type, tr, sip, EXOSIP_CALL_GLOBALFAILURE, EXOSIP_CALL_MESSAGE_GLOBALFAILURE, EXOSIP_MESSAGE_GLOBALFAILURE, JD_REDIRECTED);}#endifstatic voidcb_snd123456xx (int type, osip_transaction_t * tr, osip_message_t * sip){ eXosip_dialog_t *jd; eXosip_call_t *jc; jinfo_t *jinfo = (jinfo_t *) osip_transaction_get_your_instance (tr); OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO3, NULL, "cb_snd123456xx (id=%i)\r\n", tr->transactionid)); if (jinfo == NULL) return; jd = jinfo->jd; jc = jinfo->jc; if (jd == NULL) return; if (type == OSIP_IST_STATUS_1XX_SENT || type == OSIP_NIST_STATUS_1XX_SENT) { jd->d_STATE = JD_TRYING; return; } if (type == OSIP_IST_STATUS_2XX_SENT || type == OSIP_NIST_STATUS_2XX_SENT) { jd->d_STATE = JD_ESTABLISHED; return; } if (type == OSIP_IST_STATUS_3XX_SENT || type == OSIP_NIST_STATUS_3XX_SENT) jd->d_STATE = JD_REDIRECTED; else if (type == OSIP_IST_STATUS_4XX_SENT || type == OSIP_NIST_STATUS_4XX_SENT) jd->d_STATE = JD_CLIENTERROR; else if (type == OSIP_IST_STATUS_5XX_SENT || type == OSIP_NIST_STATUS_5XX_SENT) jd->d_STATE = JD_SERVERERROR; else if (type == OSIP_IST_STATUS_6XX_SENT || type == OSIP_NIST_STATUS_6XX_SENT) jd->d_STATE = JD_GLOBALFAILURE; if (MSG_IS_RESPONSE_FOR (sip, "INVITE")#ifndef MINISIZE || MSG_IS_RESPONSE_FOR (sip, "SUBSCRIBE")#endif ) { eXosip_delete_early_dialog (jd); } if (MSG_IS_RESPONSE_FOR (sip, "INVITE")) { /* only close calls if this is the initial INVITE */ if (jc != NULL && tr == jc->c_inc_tr) { report_call_event (EXOSIP_CALL_CLOSED, jc, jd, tr); } }}#ifndef MINISIZEstatic voidcb_rcvresp_retransmission (int type, osip_transaction_t * tr, osip_message_t * sip){ OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "cb_rcvresp_retransmission (id=%i)\r\n", tr->transactionid));}static voidcb_sndreq_retransmission (int type, osip_transaction_t * tr, osip_message_t * sip){ OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "cb_sndreq_retransmission (id=%i)\r\n", tr->transactionid));}static voidcb_sndresp_retransmission (int type, osip_transaction_t * tr, osip_message_t * sip){ OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "cb_sndresp_retransmission (id=%i)\r\n", tr->transactionid));}static voidcb_rcvreq_retransmission (int type, osip_transaction_t * tr, osip_message_t * sip){ OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "cb_rcvreq_retransmission (id=%i)\r\n", tr->transactionid));}#endifstatic voidcb_transport_error (int type, osip_transaction_t * tr, int error){#ifndef MINISIZE eXosip_dialog_t *jd; eXosip_call_t *jc; eXosip_subscribe_t *js; eXosip_notify_t *jn; jinfo_t *jinfo = (jinfo_t *) osip_transaction_get_your_instance (tr);#endif OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "cb_transport_error (id=%i)\r\n", tr->transactionid));#ifndef MINISIZE if (jinfo == NULL) return; jd = jinfo->jd; jc = jinfo->jc; jn = jinfo->jn; js = jinfo->js; if (jn == NULL && js == NULL) return; if (jn!=NULL && MSG_IS_NOTIFY (tr->orig_request) && type == OSIP_NICT_TRANSPORT_ERROR) { /* delete the dialog! */ REMOVE_ELEMENT (eXosip.j_notifies, jn); eXosip_notify_free (jn); } if (js!=NULL && MSG_IS_SUBSCRIBE (tr->orig_request) && type == OSIP_NICT_TRANSPORT_ERROR) { /* delete the dialog! */ REMOVE_ELEMENT (eXosip.j_subscribes, js); eXosip_subscribe_free (js); }#endif#if 0 if (jc->c_dialogs == NULL && type == OSIP_NICT_TRANSPORT_ERROR) { /* delete the dialog! */ REMOVE_ELEMENT (eXosip.j_calls, jc); eXosip_call_free (jc); }#endif}inteXosip_set_callbacks (osip_t * osip){ /* register all callbacks */ osip_set_cb_send_message (osip, &cb_snd_message); osip_set_kill_transaction_callback (osip, OSIP_ICT_KILL_TRANSACTION, &cb_xixt_kill_transaction); osip_set_kill_transaction_callback (osip, OSIP_IST_KILL_TRANSACTION, &cb_xixt_kill_transaction); osip_set_kill_transaction_callback (osip, OSIP_NICT_KILL_TRANSACTION, &cb_xixt_kill_transaction); osip_set_kill_transaction_callback (osip, OSIP_NIST_KILL_TRANSACTION, &cb_xixt_kill_transaction);#ifndef MINISIZE osip_set_message_callback (osip, OSIP_ICT_STATUS_2XX_RECEIVED_AGAIN, &cb_rcvresp_retransmission); osip_set_message_callback (osip, OSIP_ICT_STATUS_3456XX_RECEIVED_AGAIN, &cb_rcvresp_retransmission); osip_set_message_callback (osip, OSIP_ICT_INVITE_SENT_AGAIN, &cb_sndreq_retransmission); osip_set_message_callback (osip, OSIP_IST_STATUS_2XX_SENT_AGAIN, &cb_sndresp_retransmission); osip_set_message_callback (osip, OSIP_IST_STATUS_3456XX_SENT_AGAIN, &cb_sndresp_retransmission); osip_set_message_callback (osip, OSIP_IST_INVITE_RECEIVED_AGAIN, &cb_rcvreq_retransmission); osip_set_message_callback (osip, OSIP_NICT_STATUS_2XX_RECEIVED_AGAIN, &cb_rcvresp_retransmission); osip_set_message_callback (osip, OSIP_NICT_STATUS_3456XX_RECEIVED_AGAIN, &cb_rcvresp_retransmission); osip_set_message_callback (osip, OSIP_NICT_REQUEST_SENT_AGAIN, &cb_sndreq_retransmission); osip_set_message_callback (osip, OSIP_NIST_STATUS_2XX_SENT_AGAIN, &cb_sndresp_retransmission); osip_set_message_callback (osip, OSIP_NIST_STATUS_3456XX_SENT_AGAIN, &cb_sndresp_retransmission); osip_set_message_callback (osip, OSIP_NIST_REQUEST_RECEIVED_AGAIN, &cb_rcvreq_retransmission);#endif osip_set_transport_error_callback (osip, OSIP_ICT_TRANSPORT_ERROR, &cb_transport_error); osip_set_transport_error_callback (osip, OSIP_IST_TRANSPORT_ERROR, &cb_transport_error); osip_set_transport_error_callback (osip, OSIP_NICT_TRANSPORT_ERROR, &cb_transport_error); osip_set_transport_error_callback (osip, OSIP_NIST_TRANSPORT_ERROR, &cb_transport_error);#ifndef MINISIZE osip_set_message_callback (osip, OSIP_ICT_INVITE_SENT, &cb_sndinvite); osip_set_message_callback (osip, OSIP_ICT_ACK_SENT, &cb_sndack); osip_set_message_callback (osip, OSIP_NICT_REGISTER_SENT, &cb_sndregister); osip_set_message_callback (osip, OSIP_NICT_BYE_SENT, &cb_sndbye); osip_set_message_callback (osip, OSIP_NICT_CANCEL_SENT, &cb_sndcancel); osip_set_message_callback (osip, OSIP_NICT_INFO_SENT, &cb_sndinfo); osip_set_message_callback (osip, OSIP_NICT_OPTIONS_SENT, &cb_sndoptions); osip_set_message_callback (osip, OSIP_NICT_SUBSCRIBE_SENT, &cb_sndsubscribe); osip_set_message_callback (osip, OSIP_NICT_NOTIFY_SENT, &cb_sndnotify); /* osip_set_cb_nict_sndprack (osip,&cb_sndprack); */ osip_set_message_callback (osip, OSIP_NICT_UNKNOWN_REQUEST_SENT, &cb_sndunkrequest);#endif osip_set_message_callback (osip, OSIP_ICT_STATUS_1XX_RECEIVED, &cb_rcv1xx); osip_set_message_callback (osip, OSIP_ICT_STATUS_2XX_RECEIVED, &cb_rcv2xx); osip_set_message_callback (osip, OSIP_ICT_STATUS_3XX_RECEIVED, &cb_rcv3xx); osip_set_message_callback (osip, OSIP_ICT_STATUS_4XX_RECEIVED, &cb_rcv4xx); osip_set_message_callback (osip, OSIP_ICT_STATUS_5XX_RECEIVED, &cb_rcv5xx); osip_set_message_callback (osip, OSIP_ICT_STATUS_6XX_RECEIVED, &cb_rcv6xx); osip_set_message_callback (osip, OSIP_IST_STATUS_1XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_IST_STATUS_2XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_IST_STATUS_3XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_IST_STATUS_4XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_IST_STATUS_5XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_IST_STATUS_6XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_1XX_RECEIVED, &cb_rcv1xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_2XX_RECEIVED, &cb_rcv2xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_3XX_RECEIVED, &cb_rcv3xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_4XX_RECEIVED, &cb_rcv4xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_5XX_RECEIVED, &cb_rcv5xx); osip_set_message_callback (osip, OSIP_NICT_STATUS_6XX_RECEIVED, &cb_rcv6xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_1XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_2XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_3XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_4XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_5XX_SENT, &cb_snd123456xx); osip_set_message_callback (osip, OSIP_NIST_STATUS_6XX_SENT, &cb_snd123456xx);#ifndef MINISIZE osip_set_message_callback (osip, OSIP_IST_INVITE_RECEIVED, &cb_rcvinvite); osip_set_message_callback (osip, OSIP_IST_ACK_RECEIVED, &cb_rcvack); osip_set_message_callback (osip, OSIP_IST_ACK_RECEIVED_AGAIN, &cb_rcvack2); osip_set_message_callback (osip, OSIP_NIST_CANCEL_RECEIVED, &cb_rcvcancel);#endif osip_set_message_callback (osip, OSIP_NIST_REGISTER_RECEIVED, &cb_rcvregister); osip_set_message_callback (osip, OSIP_NIST_BYE_RECEIVED, &cb_rcvrequest); osip_set_message_callback (osip, OSIP_NIST_INFO_RECEIVED, &cb_rcvrequest); osip_set_message_callback (osip, OSIP_NIST_OPTIONS_RECEIVED, &cb_rcvrequest); osip_set_message_callback (osip, OSIP_NIST_SUBSCRIBE_RECEIVED, &cb_rcvrequest); osip_set_message_callback (osip, OSIP_NIST_NOTIFY_RECEIVED, &cb_rcvrequest); osip_set_message_callback (osip, OSIP_NIST_UNKNOWN_REQUEST_RECEIVED, &cb_rcvrequest); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -