⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcallback.c

📁 libeXosip2-3.0.3.tar.gz
💻 C
📖 第 1 页 / 共 5 页
字号:
  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 + -