亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? osip.c

?? sip voip codes on linux 2.4.20
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*  The oSIP library implements the Session Initiation Protocol (SIP -rfc3261-)  Copyright (C) 2001,2002,2003  Aymeric MOIZARD jack@atosc.org    This library is free software; you can redistribute it and/or  modify it under the terms of the GNU Lesser General Public  License as published by the Free Software Foundation; either  version 2.1 of the License, or (at your option) any later version.    This library 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  Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public  License along with this library; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include <osip/port.h>#include <osip/osip.h>#include "fsm.h"#ifdef OSIP_MTstatic smutex_t *ict_fastmutex;static smutex_t *ist_fastmutex;static smutex_t *nict_fastmutex;static smutex_t *nist_fastmutex;#endifintosip_global_init (){  /* load the fsm configuration */  ict_load_fsm ();  ist_load_fsm ();  nict_load_fsm ();  nist_load_fsm ();  /* load the parser configuration */  parser_init ();  /* give a seed for all calls to rand() */  srand (time (NULL));  init_random_number ();#ifdef OSIP_MT  ict_fastmutex = smutex_init ();  ist_fastmutex = smutex_init ();  nict_fastmutex = smutex_init ();  nist_fastmutex = smutex_init ();#endif  return 0;}voidosip_global_free (){  ict_unload_fsm ();  ist_unload_fsm ();  nict_unload_fsm ();  nist_unload_fsm ();#ifdef OSIP_MT  smutex_destroy (ict_fastmutex);  sfree (ict_fastmutex);  smutex_destroy (ist_fastmutex);  sfree (ist_fastmutex);  smutex_destroy (nict_fastmutex);  sfree (nict_fastmutex);  smutex_destroy (nist_fastmutex);  sfree (nist_fastmutex);#endif}intosip_ict_lock (osip_t * osip){#ifdef OSIP_MT  return smutex_lock (ict_fastmutex);#else  return 0;#endif}intosip_ict_unlock (osip_t * osip){#ifdef OSIP_MT  return smutex_unlock (ict_fastmutex);#else  return 0;#endif}intosip_ist_lock (osip_t * osip){#ifdef OSIP_MT  return smutex_lock (ist_fastmutex);#else  return 0;#endif}intosip_ist_unlock (osip_t * osip){#ifdef OSIP_MT  return smutex_unlock (ist_fastmutex);#else  return 0;#endif}intosip_nict_lock (osip_t * osip){#ifdef OSIP_MT  return smutex_lock (nict_fastmutex);#else  return 0;#endif}intosip_nict_unlock (osip_t * osip){#ifdef OSIP_MT  return smutex_unlock (nict_fastmutex);#else  return 0;#endif}intosip_nist_lock (osip_t * osip){#ifdef OSIP_MT  return smutex_lock (nist_fastmutex);#else  return 0;#endif}intosip_nist_unlock (osip_t * osip){#ifdef OSIP_MT  return smutex_unlock (nist_fastmutex);#else  return 0;#endif}intosip_add_ict (osip_t * osip, transaction_t * ict){#ifdef OSIP_MT  smutex_lock (ict_fastmutex);#endif  list_add (osip->ict_transactions, ict, -1);#ifdef OSIP_MT  smutex_unlock (ict_fastmutex);#endif  return 0;}intosip_add_ist (osip_t * osip, transaction_t * ist){#ifdef OSIP_MT  smutex_lock (ist_fastmutex);#endif  list_add (osip->ist_transactions, ist, -1);#ifdef OSIP_MT  smutex_unlock (ist_fastmutex);#endif  return 0;}intosip_add_nict (osip_t * osip, transaction_t * nict){#ifdef OSIP_MT  smutex_lock (nict_fastmutex);#endif  list_add (osip->nict_transactions, nict, -1);#ifdef OSIP_MT  smutex_unlock (nict_fastmutex);#endif  return 0;}intosip_add_nist (osip_t * osip, transaction_t * nist){#ifdef OSIP_MT  smutex_lock (nist_fastmutex);#endif  list_add (osip->nist_transactions, nist, -1);#ifdef OSIP_MT  smutex_unlock (nist_fastmutex);#endif  return 0;}intosip_remove_ict (osip_t * osip, transaction_t * ict){  int pos = 0;  transaction_t *tmp;#ifdef OSIP_MT  smutex_lock (ict_fastmutex);#endif  while (!list_eol (osip->ict_transactions, pos))    {      tmp = list_get (osip->ict_transactions, pos);      if (tmp->transactionid == ict->transactionid)	{	  list_remove (osip->ict_transactions, pos);#ifdef OSIP_MT	  smutex_unlock (ict_fastmutex);#endif	  return 0;	}      pos++;    }#ifdef OSIP_MT  smutex_unlock (ict_fastmutex);#endif  return -1;}intosip_remove_ist (osip_t * osip, transaction_t * ist){  int pos = 0;  transaction_t *tmp;#ifdef OSIP_MT  smutex_lock (ist_fastmutex);#endif  while (!list_eol (osip->ist_transactions, pos))    {      tmp = list_get (osip->ist_transactions, pos);      if (tmp->transactionid == ist->transactionid)	{	  list_remove (osip->ist_transactions, pos);#ifdef OSIP_MT	  smutex_unlock (ist_fastmutex);#endif	  return 0;	}      pos++;    }#ifdef OSIP_MT  smutex_unlock (ist_fastmutex);#endif  return -1;}intosip_remove_nict (osip_t * osip, transaction_t * nict){  int pos = 0;  transaction_t *tmp;#ifdef OSIP_MT  smutex_lock (nict_fastmutex);#endif  while (!list_eol (osip->nict_transactions, pos))    {      tmp = list_get (osip->nict_transactions, pos);      if (tmp->transactionid == nict->transactionid)	{	  list_remove (osip->nict_transactions, pos);#ifdef OSIP_MT	  smutex_unlock (nict_fastmutex);#endif	  return 0;	}      pos++;    }#ifdef OSIP_MT  smutex_unlock (nict_fastmutex);#endif  return -1;}intosip_remove_nist (osip_t * osip, transaction_t * nist){  int pos = 0;  transaction_t *tmp;#ifdef OSIP_MT  smutex_lock (nist_fastmutex);#endif  while (!list_eol (osip->nist_transactions, pos))    {      tmp = list_get (osip->nist_transactions, pos);      if (tmp->transactionid == nist->transactionid)	{	  list_remove (osip->nist_transactions, pos);#ifdef OSIP_MT	  smutex_unlock (nist_fastmutex);#endif	  return 0;	}      pos++;    }#ifdef OSIP_MT  smutex_unlock (nist_fastmutex);#endif  return -1;}#if 0/* this method is made obsolete because it contains bugs and is also   too much limited.   any call to this method should be replace this way:   //osip_distribute(osip, evt);   transaction_t *transaction = osip_find_transaction_and_add_event(osip, evt);   if (i!=0) // in case it's a new request     {        if (evt is an ACK)            evt could be an ACK for INVITE (not handled by oSIP)        else if ( evt is a 200 for INVITE)           evt could be a retransmission of a 200 for INVITE (not handled by oSIP)        else if (evt is a new request)  == not a ACK and not a response	  {           transaction = osip_create_transaction(osip, evt);           if (transaction==NULL)             printf("failed to create a transaction\");          }    }    else    {    // here, the message as been taken by the stack.    }*//* finds the transaction context and add the sipevent in its fifo. *//* USED ONLY BY THE TRANSPORT LAYER.                               *//* INPUT : osip_t *osip | osip. contains the list of tr. context*//* INPUT : sipevent_t* sipevent | event to dispatch.               */transaction_t *osip_distribute_event (osip_t * osip, sipevent_t * evt){  transaction_t *transaction = NULL;  int i;  context_type_t ctx_type;  if (EVT_IS_INCOMINGMSG (evt))    {      /* event is for ict */      if (MSG_IS_REQUEST (evt->sip))	{	  if (0 == strcmp (evt->sip->cseq->method, "INVITE")	      || 0 == strcmp (evt->sip->cseq->method, "ACK"))	    {#ifdef OSIP_MT	      smutex_lock (ist_fastmutex);#endif	      transaction =		osip_transaction_find (osip->ist_transactions, evt);#ifdef OSIP_MT	      smutex_unlock (ist_fastmutex);#endif	    }	  else	    {#ifdef OSIP_MT	      smutex_lock (nist_fastmutex);#endif	      transaction =		osip_transaction_find (osip->nist_transactions, evt);#ifdef OSIP_MT	      smutex_unlock (nist_fastmutex);#endif	    }	}      else	{	  if (0 == strcmp (evt->sip->cseq->method, "INVITE")	      || 0 == strcmp (evt->sip->cseq->method, "ACK"))	    {#ifdef OSIP_MT	      smutex_lock (ict_fastmutex);#endif	      transaction =		osip_transaction_find (osip->ict_transactions, evt);#ifdef OSIP_MT	      smutex_unlock (ict_fastmutex);#endif	    }	  else	    {#ifdef OSIP_MT	      smutex_lock (nict_fastmutex);#endif	      transaction =		osip_transaction_find (osip->nict_transactions, evt);#ifdef OSIP_MT	      smutex_unlock (nict_fastmutex);#endif	    }	}      if (transaction == NULL)	{	  if (EVT_IS_RCV_STATUS_1XX (evt)	      || EVT_IS_RCV_STATUS_2XX (evt)	      || EVT_IS_RCV_STATUS_3456XX (evt) || EVT_IS_RCV_ACK (evt))	    {			/* event MUST be ignored! */	      /* EXCEPT FOR 2XX THAT MUST BE GIVEN TO THE CORE LAYER!!! */	      /* TODO */	      OSIP_TRACE (osip_trace			  (__FILE__, __LINE__, OSIP_WARNING, NULL,			   "transaction does not yet exist... %x callid:%s\n",			   evt, evt->sip->call_id->number));	      msg_free (evt->sip);	      sfree (evt->sip);	      sfree (evt);	/* transaction thread will not delete it */	      return NULL;	    }	  /* we create a new context for this incoming request */	  if (0 == strcmp (evt->sip->cseq->method, "INVITE"))	    ctx_type = IST;	  else	    ctx_type = NIST;	  i = transaction_init (&transaction, ctx_type, osip, evt->sip);	  if (i == -1)	    {	      msg_free (evt->sip);	      sfree (evt->sip);	      sfree (evt);	/* transaction thread will not delete it */	      return NULL;	    }	}      evt->transactionid = transaction->transactionid;      evt->transactionid = transaction->transactionid;      fifo_add (transaction->transactionff, evt);      return transaction;    }  else    {      OSIP_TRACE (osip_trace		  (__FILE__, __LINE__, OSIP_BUG, NULL,		   "wrong event type %x\n", evt));      return NULL;    }}#endifintosip_find_transaction_and_add_event (osip_t * osip, sipevent_t * evt){  transaction_t *transaction = __osip_find_transaction (osip, evt, 1);  if (transaction == NULL)    return -1;  return 0;}transaction_t *osip_find_transaction (osip_t * osip, sipevent_t * evt){#ifdef OSIP_MT  OSIP_TRACE (osip_trace	      (__FILE__, __LINE__, OSIP_BUG, NULL,	       "\n\n\n\nYou are using a multithreaded application, but this method is not allowed! Use osip_find_transaction_add_add_event() instead.\n\n\\n"));#endif  return __osip_find_transaction (osip, evt, 0);}transaction_t *__osip_find_transaction (osip_t * osip, sipevent_t * evt, int consume){  transaction_t *transaction = NULL;  list_t *transactions = NULL;#ifdef OSIP_MT  smutex_t *mut = NULL;#endif  if (evt == NULL || evt->sip == NULL || evt->sip->cseq == NULL)    return NULL;  if (EVT_IS_INCOMINGMSG (evt))    {      if (MSG_IS_REQUEST (evt->sip))	{	  if (0 == strcmp (evt->sip->cseq->method, "INVITE")	      || 0 == strcmp (evt->sip->cseq->method, "ACK"))	    {	      transactions = osip->ist_transactions;#ifdef OSIP_MT	      mut = ist_fastmutex;#endif	    }	  else	    {	      transactions = osip->nist_transactions;#ifdef OSIP_MT	      mut = nist_fastmutex;#endif	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线亚洲视频| av激情综合网| 亚洲欧美激情在线| 精品久久久久久久一区二区蜜臀| 色婷婷狠狠综合| 国产主播一区二区三区| 亚洲h动漫在线| 亚洲视频每日更新| 久久久久亚洲蜜桃| 日韩无一区二区| 在线精品亚洲一区二区不卡| 丁香天五香天堂综合| 久草热8精品视频在线观看| 亚洲国产视频网站| 一区二区三区在线观看视频| 亚洲国产精品激情在线观看| 欧美精品一区二区在线播放| 欧美一区二区观看视频| 欧美视频一区在线观看| 色综合一区二区三区| 国产成人自拍在线| 国产乱一区二区| 国产综合久久久久久久久久久久 | 日韩欧美综合一区| 欧美午夜一区二区三区免费大片| 北条麻妃一区二区三区| 国产a精品视频| 国产麻豆9l精品三级站| 黄色小说综合网站| 精品亚洲国产成人av制服丝袜| 青青草原综合久久大伊人精品| 午夜久久福利影院| 三级一区在线视频先锋 | 亚洲人成网站精品片在线观看| 久久精品人人做人人综合| 久久一留热品黄| 久久色.com| 久久久久久久电影| 国产精品伦一区| 亚洲视频电影在线| 亚洲线精品一区二区三区| 午夜影视日本亚洲欧洲精品| 天堂资源在线中文精品| 蜜桃传媒麻豆第一区在线观看| 久久成人综合网| 国产米奇在线777精品观看| 高清成人在线观看| 91久久免费观看| 欧美日韩免费高清一区色橹橹 | 国产精品99久久久久久似苏梦涵| 国产裸体歌舞团一区二区| 福利视频网站一区二区三区| 91丨porny丨首页| 欧美日韩在线亚洲一区蜜芽| 欧美精品乱人伦久久久久久| 欧美videos大乳护士334| 国产色婷婷亚洲99精品小说| 国产精品成人免费精品自在线观看| 亚洲日本成人在线观看| 亚洲成a人片在线不卡一二三区| 日本欧美在线观看| 风流少妇一区二区| 欧美视频在线一区| 精品国产一区二区在线观看| 欧美国产成人精品| 亚洲永久免费视频| 久久福利资源站| av一区二区三区在线| 欧美精品日韩精品| 国产情人综合久久777777| 一个色综合网站| 精品一区二区三区视频| 成人激情综合网站| 欧美日韩一区二区在线观看| 久久综合色之久久综合| 亚洲精品免费视频| 国产一区在线观看视频| 欧美性受极品xxxx喷水| 久久先锋影音av| 亚洲尤物视频在线| 国产91精品免费| 8x福利精品第一导航| 国产精品无人区| 日一区二区三区| 成人app软件下载大全免费| 欧美三级视频在线播放| 国产精品嫩草影院av蜜臀| 午夜精品aaa| proumb性欧美在线观看| 日韩一区二区三区观看| 一区二区在线免费| 国产成人丝袜美腿| 欧美精品vⅰdeose4hd| 最新成人av在线| 久久er99热精品一区二区| 色激情天天射综合网| 国产亚洲精品超碰| 奇米色一区二区三区四区| 91在线免费播放| 久久久久久一级片| 蜜臀av亚洲一区中文字幕| 欧美在线影院一区二区| 国产精品久久久久aaaa| 久久精品国产一区二区三| 欧美怡红院视频| 亚洲欧洲三级电影| 国产一区二区女| 欧美精品自拍偷拍动漫精品| 亚洲欧美日韩在线| 国产成人亚洲综合a∨婷婷图片| 欧美一区二区黄| 五月婷婷综合在线| 在线观看精品一区| 亚洲乱码日产精品bd| eeuss影院一区二区三区| 久久久国产精品不卡| 国产在线国偷精品产拍免费yy| 91精品国产综合久久久蜜臀图片| 亚洲精品福利视频网站| 成年人午夜久久久| 国产精品美女久久久久久久| 国产一区二区三区精品欧美日韩一区二区三区| 欧美挠脚心视频网站| 亚洲国产精品天堂| 欧美视频一区二区三区| 亚洲第一会所有码转帖| 欧美日韩中文一区| 亚洲午夜久久久久久久久电影院 | 日韩和欧美一区二区| 欧美三级一区二区| 视频一区二区三区入口| 欧美精品亚洲二区| 麻豆极品一区二区三区| 日韩久久免费av| 国产一区二区福利| 日本一二三四高清不卡| av在线不卡电影| 尤物在线观看一区| 在线观看视频欧美| 日韩国产高清在线| 日韩西西人体444www| 精品在线观看视频| 日本一区二区三区久久久久久久久不 | 在线观看亚洲精品视频| 亚洲一区二区中文在线| 欧美日韩国产小视频| 蜜桃视频免费观看一区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品国产伦一区二区三区观看方式| 美女mm1313爽爽久久久蜜臀| 精品国产乱码久久| 高清国产一区二区| 亚洲精品成人天堂一二三| 欧美三级日韩三级| 久久av中文字幕片| 国产欧美日韩不卡| 色综合天天综合在线视频| 亚洲国产一区在线观看| 精品免费99久久| caoporn国产一区二区| 亚洲国产一区在线观看| 欧美成人三级电影在线| av影院午夜一区| 首页国产丝袜综合| 国产亚洲成年网址在线观看| 91年精品国产| 日韩电影免费在线看| 久久综合狠狠综合久久综合88| 成人少妇影院yyyy| 午夜av电影一区| 中文欧美字幕免费| 欧美乱妇15p| 成人av网站大全| 日韩激情av在线| 亚洲素人一区二区| 欧美一区二区在线免费播放| 成人黄色av电影| 日韩成人一区二区| 亚洲视频免费在线观看| 欧美成人精精品一区二区频| 91蜜桃视频在线| 激情综合网最新| 亚洲自拍另类综合| 国产欧美中文在线| 日韩一级视频免费观看在线| 91丝袜美腿高跟国产极品老师 | 国产精品一区二区果冻传媒| 亚洲一区二区三区小说| 国产亚洲短视频| 91精品国产一区二区| 色综合久久88色综合天天6 | 欧美日韩一区视频| 国产成人综合在线播放| 日本va欧美va精品发布| 一区二区三区中文字幕精品精品| 久久女同精品一区二区| 欧美一三区三区四区免费在线看 | 国产欧美日韩在线视频| 91精品在线观看入口| 91国偷自产一区二区开放时间|