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

📄 exmessage_api.c

📁 mediastreamer2是开源的网络传输媒体流的库
💻 C
字号:
/*  eXosip - This is the eXtended osip library.  Copyright (C) 2002,2003,2004,2005,2006,2007  Aymeric MOIZARD  - jack@atosc.org    eXosip is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by  the Free Software Foundation; either version 2 of the License, or  (at your option) any later version.    eXosip is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License for more details.    You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#ifdef ENABLE_MPATROL#include <mpatrol.h>#endif#include "eXosip2.h"extern eXosip_t eXosip;inteXosip_message_build_request (osip_message_t ** message, const char *method,                              const char *to, const char *from, const char *route){  int i;  *message = NULL;  if (method != NULL && *method == '\0')    return OSIP_BADPARAMETER;  if (to != NULL && *to == '\0')    return OSIP_BADPARAMETER;  if (from != NULL && *from == '\0')    return OSIP_BADPARAMETER;  if (route != NULL && *route == '\0')    route = NULL;  i = generating_request_out_of_dialog (message, method, to, "UDP", from, route);  if (i != 0)    return i;  return OSIP_SUCCESS;}inteXosip_message_send_request (osip_message_t * message){  osip_transaction_t *transaction;  osip_event_t *sipevent;  int i;  i = _eXosip_transaction_init (&transaction, NICT, eXosip.j_osip, message);  if (i != 0)    {      osip_message_free (message);      return i;    }  osip_list_add (&eXosip.j_transactions, transaction, 0);  sipevent = osip_new_outgoing_sipmessage (message);  sipevent->transactionid = transaction->transactionid;#ifndef MINISIZE  osip_transaction_set_your_instance (transaction,                                      __eXosip_new_jinfo (NULL, NULL, NULL, NULL));#else  osip_transaction_set_your_instance (transaction,                                      __eXosip_new_jinfo (NULL, NULL));#endif  osip_transaction_add_event (transaction, sipevent);  __eXosip_wakeup ();  return OSIP_SUCCESS;}inteXosip_message_build_answer (int tid, int status, osip_message_t ** answer){  osip_transaction_t *tr = NULL;  int i;  *answer = NULL;  if (tid <= 0)    return OSIP_BADPARAMETER;  if (status < 200 || status > 699)    return OSIP_BADPARAMETER;  if (tid > 0)    {      eXosip_transaction_find (tid, &tr);    }  if (tr == NULL)    {      OSIP_TRACE (osip_trace                  (__FILE__, __LINE__, OSIP_ERROR, NULL,                   "eXosip: No call here?\n"));      return OSIP_NOTFOUND;    }  i = -1;  if (status < 300)             /* 2xx answer */    i = _eXosip_build_response_default (answer, NULL, status, tr->orig_request);  else if (status > 300)        /* 3456xx answer */    i = _eXosip_build_response_default (answer, NULL, status, tr->orig_request);  if (i != 0)    return i;  return OSIP_SUCCESS;}inteXosip_message_send_answer (int tid, int status, osip_message_t * answer){  osip_transaction_t *tr = NULL;  osip_event_t *evt_answer;  int i = -1;  if (tid <= 0)    return OSIP_BADPARAMETER;  if (status <= 100 || status > 699)    return OSIP_BADPARAMETER;  if (answer == NULL && status > 100 && status < 200)    return OSIP_BADPARAMETER;  if (tid > 0)    {      eXosip_transaction_find (tid, &tr);    }  if (tr == NULL)    {      OSIP_TRACE (osip_trace                  (__FILE__, __LINE__, OSIP_ERROR, NULL,                   "eXosip: No MESSAGE transaction found\n"));      osip_message_free (answer);      return OSIP_NOTFOUND;    }  /* is the transaction already answered? */  if (tr->state == NIST_COMPLETED || tr->state == NIST_TERMINATED)    {      OSIP_TRACE (osip_trace                  (__FILE__, __LINE__, OSIP_ERROR, NULL,                   "eXosip: transaction already answered\n"));      osip_message_free (answer);      return OSIP_WRONG_STATE;    }  if (answer == NULL)    {      i = -1;      if (status > 199 && status < 300)        i = _eXosip_build_response_default (&answer, NULL, status,                                            tr->orig_request);      else if (status > 300 && status <= 699)        i = _eXosip_build_response_default (&answer, NULL, status,                                            tr->orig_request);      if (i != 0)        return i;    }  evt_answer = osip_new_outgoing_sipmessage (answer);  evt_answer->transactionid = tr->transactionid;  osip_transaction_add_event (tr, evt_answer);  __eXosip_wakeup ();  return OSIP_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -