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

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

?? exconf.c

?? exosip
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*  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"#include <eXosip2/eXosip.h>#include <osip2/osip_mt.h>#include <osip2/osip_condv.h>extern eXosip_t eXosip;int ipv6_enable = 0;#ifdef OSIP_MTstatic void *_eXosip_thread (void *arg);#endifstatic void _eXosip_keep_alive (void);#ifndef MINISIZEvoideXosip_enable_ipv6 (int _ipv6_enable){  ipv6_enable = _ipv6_enable;}#endifconst char *eXosip_get_version(void){  return EXOSIP_VERSION;}voideXosip_masquerade_contact (const char *public_address, int port){  eXtl_udp.tl_masquerade_contact(public_address, port);  eXtl_tcp.tl_masquerade_contact(public_address, port);#ifdef HAVE_OPENSSL_SSL_H  eXtl_tls.tl_masquerade_contact(public_address, port);#if !(OPENSSL_VERSION_NUMBER < 0x00908000L)  eXtl_dtls.tl_masquerade_contact(public_address, port);#endif#endif  return;}inteXosip_guess_localip (int family, char *address, int size){  return eXosip_guess_ip_for_via (family, address, size);}inteXosip_is_public_address (const char *c_address){  return (0 != strncmp (c_address, "192.168", 7)          && 0 != strncmp (c_address, "10.", 3)          && 0 != strncmp (c_address, "172.16.", 7)          && 0 != strncmp (c_address, "172.17.", 7)          && 0 != strncmp (c_address, "172.18.", 7)          && 0 != strncmp (c_address, "172.19.", 7)          && 0 != strncmp (c_address, "172.20.", 7)          && 0 != strncmp (c_address, "172.21.", 7)          && 0 != strncmp (c_address, "172.22.", 7)          && 0 != strncmp (c_address, "172.23.", 7)          && 0 != strncmp (c_address, "172.24.", 7)          && 0 != strncmp (c_address, "172.25.", 7)          && 0 != strncmp (c_address, "172.26.", 7)          && 0 != strncmp (c_address, "172.27.", 7)          && 0 != strncmp (c_address, "172.28.", 7)          && 0 != strncmp (c_address, "172.29.", 7)          && 0 != strncmp (c_address, "172.30.", 7)          && 0 != strncmp (c_address, "172.31.", 7)          && 0 != strncmp (c_address, "169.254", 7));}voideXosip_set_user_agent (const char *user_agent){  osip_free (eXosip.user_agent);  eXosip.user_agent = osip_strdup (user_agent);}voideXosip_kill_transaction (osip_list_t * transactions){  osip_transaction_t *transaction;  if (!osip_list_eol (transactions, 0))    {      /* some transaction are still used by osip,         transaction should be released by modules! */      OSIP_TRACE (osip_trace                  (__FILE__, __LINE__, OSIP_ERROR, NULL,                   "module sfp: _osip_kill_transaction transaction should be released by modules!\n"));    }  while (!osip_list_eol (transactions, 0))    {      transaction = osip_list_get (transactions, 0);      __eXosip_delete_jinfo (transaction);      osip_transaction_free (transaction);    }}voideXosip_quit (void){  jauthinfo_t *jauthinfo;  eXosip_call_t *jc;  eXosip_reg_t *jreg;#ifndef MINISIZE  eXosip_notify_t *jn;  eXosip_subscribe_t *js;  eXosip_pub_t *jpub;#endif#ifdef OSIP_MT  int i;#endif  if (eXosip.j_stop_ua==-1)  {		OSIP_TRACE (osip_trace					(__FILE__, __LINE__, OSIP_WARNING, NULL,					"eXosip: already stopped!\n"));	  return;  }  eXosip.j_stop_ua = 1;         /* ask to quit the application */  __eXosip_wakeup ();  __eXosip_wakeup_event ();#ifdef OSIP_MT  if (eXosip.j_thread!=NULL)  {    i = osip_thread_join ((struct osip_thread *) eXosip.j_thread);    if (i != 0)        {        OSIP_TRACE (osip_trace                    (__FILE__, __LINE__, OSIP_ERROR, NULL,                    "eXosip: can't terminate thread!\n"));        }    osip_free ((struct osip_thread *) eXosip.j_thread);  }  jpipe_close (eXosip.j_socketctl);  jpipe_close (eXosip.j_socketctl_event);#endif  osip_free (eXosip.user_agent);  for (jc = eXosip.j_calls; jc != NULL; jc = eXosip.j_calls)    {      REMOVE_ELEMENT (eXosip.j_calls, jc);      eXosip_call_free (jc);    }#ifndef MINISIZE  for (js = eXosip.j_subscribes; js != NULL; js = eXosip.j_subscribes)    {      REMOVE_ELEMENT (eXosip.j_subscribes, js);      eXosip_subscribe_free (js);    }  for (jn = eXosip.j_notifies; jn != NULL; jn = eXosip.j_notifies)    {      REMOVE_ELEMENT (eXosip.j_notifies, jn);      eXosip_notify_free (jn);    }#endif#ifdef OSIP_MT  osip_mutex_destroy ((struct osip_mutex *) eXosip.j_mutexlock);#if !defined (_WIN32_WCE)  osip_cond_destroy ((struct osip_cond *) eXosip.j_cond);#endif#endif  for (jreg = eXosip.j_reg; jreg != NULL; jreg = eXosip.j_reg)    {      REMOVE_ELEMENT (eXosip.j_reg, jreg);      eXosip_reg_free (jreg);    }#ifndef MINISIZE  for (jpub = eXosip.j_pub; jpub != NULL; jpub = eXosip.j_pub)    {      REMOVE_ELEMENT (eXosip.j_pub, jpub);      _eXosip_pub_free (jpub);    }#endif  while (!osip_list_eol (eXosip.j_transactions, 0))    {      osip_transaction_t *tr =        (osip_transaction_t *) osip_list_get (eXosip.j_transactions, 0);      if (tr->state == IST_TERMINATED || tr->state == ICT_TERMINATED          || tr->state == NICT_TERMINATED || tr->state == NIST_TERMINATED)        {          OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL,                                  "Release a terminated transaction\n"));          osip_list_remove (eXosip.j_transactions, 0);          __eXosip_delete_jinfo (tr);          osip_transaction_free (tr);      } else        {          osip_list_remove (eXosip.j_transactions, 0);          __eXosip_delete_jinfo (tr);          osip_transaction_free (tr);        }    }  osip_free (eXosip.j_transactions);  eXosip_kill_transaction (&eXosip.j_osip->osip_ict_transactions);  eXosip_kill_transaction (&eXosip.j_osip->osip_nict_transactions);  eXosip_kill_transaction (&eXosip.j_osip->osip_ist_transactions);  eXosip_kill_transaction (&eXosip.j_osip->osip_nist_transactions);  osip_release (eXosip.j_osip);  {    eXosip_event_t *ev;    for (ev = osip_fifo_tryget (eXosip.j_events); ev != NULL;         ev = osip_fifo_tryget (eXosip.j_events))      eXosip_event_free (ev);  }  osip_fifo_free (eXosip.j_events);  for (jauthinfo = eXosip.authinfos; jauthinfo != NULL;       jauthinfo = eXosip.authinfos)    {      REMOVE_ELEMENT (eXosip.authinfos, jauthinfo);      osip_free (jauthinfo);    }  {	struct eXosip_http_auth *http_auth;	int pos;	/* update entries with same call_id */	for (pos=0;pos<MAX_EXOSIP_HTTP_AUTH;pos++)	{		http_auth = &eXosip.http_auths[pos];		if (http_auth->pszCallId[0]=='\0')			continue;		osip_proxy_authenticate_free(http_auth->wa);		memset(http_auth, 0, sizeof(struct eXosip_http_auth));	}  }  eXtl_udp.tl_free();  eXtl_tcp.tl_free();#ifdef HAVE_OPENSSL_SSL_H#if !(OPENSSL_VERSION_NUMBER < 0x00908000L)  eXtl_dtls.tl_free();#endif  eXtl_tls.tl_free();#endif  memset (&eXosip, 0, sizeof (eXosip));  eXosip.j_stop_ua = -1;  return;}inteXosip_set_socket (int transport, int socket, int port){  eXosip.eXtl = NULL;  if (transport==IPPROTO_UDP)    {      eXtl_udp.proto_port = port;      eXtl_udp.tl_set_socket(socket);      eXosip.eXtl = &eXtl_udp;      snprintf(eXosip.transport, sizeof(eXosip.transport), "%s", "UDP");    }  else if (transport==IPPROTO_TCP)    {      eXtl_tcp.proto_port = port;      eXtl_tcp.tl_set_socket(socket);       eXosip.eXtl = &eXtl_tcp;      snprintf(eXosip.transport, sizeof(eXosip.transport), "%s", "TCP");   }  else    return -1;#ifdef OSIP_MT  eXosip.j_thread = (void *) osip_thread_create (20000, _eXosip_thread, NULL);  if (eXosip.j_thread == NULL)    {      OSIP_TRACE (osip_trace                  (__FILE__, __LINE__, OSIP_ERROR, NULL,                   "eXosip: Cannot start thread!\n"));      return -1;    }#endif  return 0;}#ifdef IPV6_V6ONLYintsetsockopt_ipv6only (int sock){  int on = 1;  return setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &on, sizeof (on));}#endif /* IPV6_V6ONLY */#ifndef MINISIZEint eXosip_find_free_port(int free_port, int transport){  int res1;  int res2;  struct addrinfo *addrinfo_rtp = NULL;  struct addrinfo *curinfo_rtp;  struct addrinfo *addrinfo_rtcp = NULL;  struct addrinfo *curinfo_rtcp;  int sock;  int count;  for (count=0;count<8;count++)  {	  res1 = eXosip_get_addrinfo (&addrinfo_rtp, "0.0.0.0", free_port + count*2, transport);	  if (res1)		return -1;	  res2 = eXosip_get_addrinfo (&addrinfo_rtcp, "0.0.0.0", free_port + count*2+ 1, transport);	  if (res2)	  {		  eXosip_freeaddrinfo (addrinfo_rtp);		  return -1;	  }	  sock=-1;	  for (curinfo_rtp = addrinfo_rtp; curinfo_rtp; curinfo_rtp = curinfo_rtp->ai_next)		{		  if (curinfo_rtp->ai_protocol && curinfo_rtp->ai_protocol != transport)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_INFO3, NULL,						   "eXosip: Skipping protocol %d\n", curinfo_rtp->ai_protocol));			  continue;			}		  sock = (int) socket (curinfo_rtp->ai_family, curinfo_rtp->ai_socktype,							   curinfo_rtp->ai_protocol);		  if (sock < 0)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_ERROR, NULL,						   "eXosip: Cannot create socket!\n"));			  continue;			}		  if (curinfo_rtp->ai_family == AF_INET6)			{#ifdef IPV6_V6ONLY			  if (setsockopt_ipv6only (sock))				{				  close (sock);				  sock = -1;				  OSIP_TRACE (osip_trace							  (__FILE__, __LINE__, OSIP_ERROR, NULL,							   "eXosip: Cannot set socket option!\n"));				  continue;				}#endif /* IPV6_V6ONLY */			}		  res1 = bind (sock, curinfo_rtp->ai_addr, curinfo_rtp->ai_addrlen);		  if (res1 < 0)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_WARNING, NULL,						  "eXosip: Cannot bind socket node: 0.0.0.0 family:%d\n",						   curinfo_rtp->ai_family));			  close (sock);			  sock = -1;			  continue;			}		  break;	  }	  eXosip_freeaddrinfo (addrinfo_rtp);	  if (sock==-1)	  {		  eXosip_freeaddrinfo (addrinfo_rtcp);		  continue;	  }	  close(sock);	  sock=-1;	  for (curinfo_rtcp = addrinfo_rtcp; curinfo_rtcp; curinfo_rtcp = curinfo_rtcp->ai_next)		{		  if (curinfo_rtcp->ai_protocol && curinfo_rtcp->ai_protocol != transport)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_INFO3, NULL,						   "eXosip: Skipping protocol %d\n", curinfo_rtcp->ai_protocol));			  continue;			}		  sock = (int) socket (curinfo_rtcp->ai_family, curinfo_rtcp->ai_socktype,							   curinfo_rtcp->ai_protocol);		  if (sock < 0)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_ERROR, NULL,						   "eXosip: Cannot create socket!\n"));			  continue;			}		  if (curinfo_rtcp->ai_family == AF_INET6)			{#ifdef IPV6_V6ONLY			  if (setsockopt_ipv6only (sock))				{				  close (sock);				  sock = -1;				  OSIP_TRACE (osip_trace							  (__FILE__, __LINE__, OSIP_ERROR, NULL,							   "eXosip: Cannot set socket option!\n"));				  continue;				}#endif /* IPV6_V6ONLY */			}		  res1 = bind (sock, curinfo_rtcp->ai_addr, curinfo_rtcp->ai_addrlen);		  if (res1 < 0)			{			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_WARNING, NULL,						  "eXosip: Cannot bind socket node: 0.0.0.0 family:%d\n",						   curinfo_rtp->ai_family));			  close (sock);			  sock = -1;			  continue;			}		  break;	  }	  eXosip_freeaddrinfo (addrinfo_rtcp);	  /* the pair must be free */	  if (sock==-1)		  continue;	  close(sock);	  sock=-1;	  return free_port + count*2;  }  /* just get a free port */  res1 = eXosip_get_addrinfo (&addrinfo_rtp, "0.0.0.0", 0, transport);  if (res1)	return -1;  sock=-1;  for (curinfo_rtp = addrinfo_rtp; curinfo_rtp; curinfo_rtp = curinfo_rtp->ai_next)	{	  socklen_t len;	  struct sockaddr_storage ai_addr;	  if (curinfo_rtp->ai_protocol && curinfo_rtp->ai_protocol != transport)		{		  OSIP_TRACE (osip_trace					  (__FILE__, __LINE__, OSIP_INFO3, NULL,					   "eXosip: Skipping protocol %d\n", curinfo_rtp->ai_protocol));		  continue;		}	  sock = (int) socket (curinfo_rtp->ai_family, curinfo_rtp->ai_socktype,						   curinfo_rtp->ai_protocol);	  if (sock < 0)		{		  OSIP_TRACE (osip_trace					  (__FILE__, __LINE__, OSIP_ERROR, NULL,					   "eXosip: Cannot create socket!\n"));		  continue;		}	  if (curinfo_rtp->ai_family == AF_INET6)		{#ifdef IPV6_V6ONLY		  if (setsockopt_ipv6only (sock))			{			  close (sock);			  sock = -1;			  OSIP_TRACE (osip_trace						  (__FILE__, __LINE__, OSIP_ERROR, NULL,						   "eXosip: Cannot set socket option!\n"));			  continue;			}#endif /* IPV6_V6ONLY */		}	  res1 = bind (sock, curinfo_rtp->ai_addr, curinfo_rtp->ai_addrlen);	  if (res1 < 0)		{		  OSIP_TRACE (osip_trace					  (__FILE__, __LINE__, OSIP_WARNING, NULL,					  "eXosip: Cannot bind socket node: 0.0.0.0 family:%d\n",					   curinfo_rtp->ai_family));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久美女毛片| 一本色道a无线码一区v| 538prom精品视频线放| 五月婷婷久久综合| 欧美一区二区视频免费观看| 三级欧美韩日大片在线看| 欧美日本一区二区在线观看| 午夜精品一区二区三区电影天堂| 欧美美女激情18p| 伦理电影国产精品| 国产日韩av一区| 色视频一区二区| 三级在线观看一区二区| www国产成人| 99国产精品久久久久久久久久久| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩高清一区二区| 另类综合日韩欧美亚洲| 中文字幕亚洲精品在线观看| 欧美性生活一区| 国内外精品视频| 亚洲精品中文字幕乱码三区| 欧美一区二区性放荡片| 国产成人精品亚洲午夜麻豆| 一区二区激情小说| 精品乱人伦小说| 99久久久久久99| 蜜芽一区二区三区| 中文字幕一区二区三区色视频| 制服.丝袜.亚洲.另类.中文| 国v精品久久久网| 日韩国产精品大片| 日韩激情中文字幕| 国产三级精品三级| 在线电影一区二区三区| 国产91丝袜在线18| 日韩高清在线观看| 亚洲女性喷水在线观看一区| 精品免费日韩av| 欧美日韩午夜在线视频| 国产精品白丝av| 丝袜a∨在线一区二区三区不卡| 中文字幕乱码一区二区免费| 欧美日韩国产一级| yourporn久久国产精品| 免费国产亚洲视频| 午夜视频在线观看一区二区| 国产精品久久久久一区二区三区| 欧美一区二区三区在线观看| 91小视频免费看| 国产乱人伦偷精品视频不卡| 视频在线观看一区二区三区| 中文字幕一区二区三区在线观看| 精品国产三级a在线观看| 欧美亚洲一区二区在线| 成人免费高清在线| 精品一区二区三区av| 日韩在线播放一区二区| 尤物av一区二区| 国产精品高潮久久久久无| 久久久亚洲高清| 日韩欧美一级精品久久| 91精品欧美一区二区三区综合在| 色一区在线观看| 99久久精品国产一区| 粉嫩av一区二区三区粉嫩| 国产乱子轮精品视频| 国内成人免费视频| 久久精品国产精品亚洲红杏| 热久久久久久久| 天天操天天干天天综合网| 亚洲精品国产品国语在线app| 国产精品国产三级国产aⅴ中文 | 成人的网站免费观看| 国内精品免费在线观看| 久久精品国产精品亚洲综合| 伦理电影国产精品| 毛片av一区二区| 日韩国产欧美视频| 奇米亚洲午夜久久精品| 蜜桃av一区二区在线观看 | 精品视频全国免费看| 色综合久久中文字幕| 色诱视频网站一区| 日本伦理一区二区| 欧美亚洲国产一区在线观看网站| 在线观看日韩毛片| 在线电影院国产精品| 日韩一区二区三区四区| 亚洲午夜三级在线| 亚洲综合免费观看高清完整版| 亚洲综合另类小说| 日韩av午夜在线观看| 九九视频精品免费| 福利一区福利二区| 在线视频一区二区三| 欧美日韩性生活| 欧美大胆一级视频| 日本一区二区三区dvd视频在线| 国产欧美日韩综合| 一区二区三区毛片| 天堂va蜜桃一区二区三区漫画版| 久草中文综合在线| 99re视频精品| 在线不卡中文字幕播放| 久久久久久久久久久久久女国产乱 | 欧美日韩国产另类不卡| 日韩一区二区电影| 国产亚洲一区二区在线观看| 综合中文字幕亚洲| 亚洲成av人影院| 国产精品原创巨作av| 色狠狠av一区二区三区| 日韩精品中午字幕| 亚洲人成在线观看一区二区| 日韩国产精品久久| 99久久精品免费看国产免费软件| 欧美日韩高清在线播放| 久久久久久久久久久黄色| 亚洲精品福利视频网站| 久久福利资源站| 91免费在线视频观看| 欧美成va人片在线观看| 国产精品网站在线播放| 日韩电影在线看| 成人a级免费电影| 91精品国产一区二区三区蜜臀 | 中文字幕色av一区二区三区| 天堂va蜜桃一区二区三区漫画版| 成人精品国产免费网站| 678五月天丁香亚洲综合网| 亚洲欧洲另类国产综合| 国内精品免费在线观看| 欧美日韩久久一区| 国产精品欧美一级免费| 美女视频黄 久久| 欧洲av在线精品| 国产精品久久久一本精品| 久久精品国产澳门| 欧美卡1卡2卡| 一区二区三区在线免费视频| 粉嫩一区二区三区在线看| 日韩一区二区三区视频在线观看| 激情综合色播激情啊| 欧美性色黄大片手机版| 中文字幕日韩av资源站| 国产一区二区三区黄视频 | 日韩av午夜在线观看| 色综合视频在线观看| 亚洲国产精品激情在线观看| 久久国产婷婷国产香蕉| 欧美高清你懂得| 亚洲午夜免费电影| 在线观看日韩国产| 亚洲欧美另类久久久精品| 成人app网站| 国产精品人妖ts系列视频| 国产精品911| 日韩欧美国产不卡| 免费人成网站在线观看欧美高清| 欧美无砖砖区免费| 亚洲影视资源网| 在线一区二区三区四区| 一区二区在线电影| 色素色在线综合| 亚洲精品大片www| 欧美天堂一区二区三区| 亚洲在线视频一区| 欧美三级韩国三级日本一级| 亚洲亚洲精品在线观看| 欧美日韩高清不卡| 丝袜美腿亚洲综合| 欧美一区二区视频观看视频| 毛片不卡一区二区| 久久精品亚洲一区二区三区浴池| 国产伦精品一区二区三区视频青涩| 久久久久久久综合狠狠综合| 高清视频一区二区| 亚洲精品精品亚洲| 欧美日韩另类国产亚洲欧美一级| 三级精品在线观看| 日韩欧美国产三级| 丰满白嫩尤物一区二区| 中文字幕日韩av资源站| 在线一区二区三区做爰视频网站| 午夜伦理一区二区| 久久午夜电影网| 成人av小说网| 一区二区三国产精华液| 欧美精品乱码久久久久久| 久久精品999| 最新国产精品久久精品| 色综合久久久久综合99| 日韩不卡一区二区三区| 欧美精品一区二区三区四区| 成人免费视频视频在线观看免费| 一区二区三区精密机械公司| 3d成人h动漫网站入口| 国产福利视频一区二区三区| 亚洲激情综合网|