[asterisk-commits] oej: branch oej/ringstatelimit-1.4 r179738 - /team/oej/ringstatelimit-1.4/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Mar 3 09:48:55 CST 2009


Author: oej
Date: Tue Mar  3 09:48:51 2009
New Revision: 179738

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=179738
Log:
Adding a diff file of the current state to make testing simple

Added:
    team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff   (with props)

Added: team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff
URL: http://svn.digium.com/svn-view/asterisk/team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff?view=auto&rev=179738
==============================================================================
--- team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff (added)
+++ team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff Tue Mar  3 09:48:51 2009
@@ -1,0 +1,154 @@
+--- ../asterisk-1.4/channels/chan_sip.c	2009-03-03 12:34:26.000000000 +0100
++++ channels/chan_sip.c	2009-03-03 16:43:47.000000000 +0100
+@@ -512,6 +512,7 @@
+ #define DEFAULT_AUTOCREATEPEER	FALSE
+ #define DEFAULT_QUALIFY		FALSE
+ #define DEFAULT_T1MIN		100		/*!< 100 MS for minimal roundtrip time */
++#define DEFAULT_TIMERB		SIP_TRANS_TIMEOUT	/*!< Default timeout for an invite in Call State - 64*T1 */
+ #define DEFAULT_MAX_CALL_BITRATE (384)		/*!< Max bitrate for video */
+ #ifndef DEFAULT_USERAGENT
+ #define DEFAULT_USERAGENT "Asterisk PBX"	/*!< Default Useragent: header unless re-defined in sip.conf */
+@@ -566,6 +567,7 @@
+ static int allow_external_domains;	/*!< Accept calls to external SIP domains? */
+ static int global_callevents;		/*!< Whether we send manager events or not */
+ static int global_t1min;		/*!< T1 roundtrip time minimum */
++static int global_timer_b;		/*!< Timeout in ring/call state (default: 64 * T1) */
+ static int global_autoframing;          /*!< Turn autoframing on or off. */
+ static enum transfermodes global_allowtransfer;	/*!< SIP Refer restriction scheme */
+ 
+@@ -961,6 +963,7 @@
+ 	int lastnoninvite;                      /*!< Last Cseq of non-invite */
+ 	struct ast_flags flags[2];		/*!< SIP_ flags */
+ 	int timer_t1;				/*!< SIP timer T1, ms rtt */
++	int timer_b;				/*!< SIP timer B, call state timeout  */
+ 	unsigned int sipoptions;		/*!< Supported SIP options on the other end */
+ 	struct ast_codec_pref prefs;		/*!< codec prefs */
+ 	int capability;				/*!< Special capability (codec) */
+@@ -1048,6 +1051,7 @@
+ 	int retransid;				/*!< Retransmission ID */
+ 	int timer_a;				/*!< SIP timer A, retransmission timer */
+ 	int timer_t1;				/*!< SIP Timer T1, estimated RTT or 500 ms */
++	int timer_b;				/*!< SIP Timer B, call state timeout */
+ 	int packetlen;				/*!< Length of packet */
+ 	char data[0];
+ };	
+@@ -1138,6 +1142,7 @@
+ 	int maxms;			/*!<  Max ms we will accept for the host to be up, 0 to not monitor */
+ 	struct timeval ps;		/*!<  Ping send time */
+ 	
++	int timer_b;			/*!< SIP timer B, call state timeout  */
+ 	struct sockaddr_in defaddr;	/*!<  Default IP address, used until registration */
+ 	struct ast_ha *ha;		/*!<  Access control list */
+ 	struct ast_ha *contactha;       /*!<  Restrict what IPs are allowed in the Contact header (for registration) */
+@@ -2145,8 +2150,10 @@
+ static void sip_scheddestroy(struct sip_pvt *p, int ms)
+ {
+ 	if (ms < 0) {
+-		if (p->timer_t1 == 0)
++		if (p->timer_t1 == 0) {
+ 			p->timer_t1 = 500;	/* Set timer T1 if not set (RFC 3261) */
++			p->timer_b = global_timer_b;
++		}
+ 		ms = p->timer_t1 * 64;
+ 	}
+ 	if (sip_debug_test_pvt(p))
+@@ -2902,6 +2909,12 @@
+ 	/* Minimum is settable or default to 100 ms */
+ 	if (peer->maxms && peer->lastms)
+ 		dialog->timer_t1 = peer->lastms < global_t1min ? global_t1min : peer->lastms;
++	if (peer->timer_b) {
++		dialog->timer_b = peer->timer_b;
++	} else {
++		dialog->timer_b = 64 * dialog->timer_t1;
++	}
++
+ 	if ((ast_test_flag(&dialog->flags[0], SIP_DTMF) == SIP_DTMF_RFC2833) ||
+ 	    (ast_test_flag(&dialog->flags[0], SIP_DTMF) == SIP_DTMF_AUTO))
+ 		dialog->noncodeccapability |= AST_RTP_DTMF;
+@@ -2936,6 +2949,7 @@
+ 		*port++ = '\0';
+ 	dialog->sa.sin_family = AF_INET;
+ 	dialog->timer_t1 = 500; /* Default SIP retransmission timer T1 (RFC 3261) */
++	dialog->timer_b = global_timer_b; /* Default SIP transaction timer B (RFC 3261) */
+ 	p = find_peer(peer, NULL, 1, 0);
+ 
+ 	if (p) {
+@@ -3098,7 +3112,7 @@
+ 
+ 			/* Initialize auto-congest time */
+ 			AST_SCHED_DEL(sched, p->initid);
+-			p->initid = ast_sched_add(sched, p->maxtime ? (p->maxtime * 4) : SIP_TRANS_TIMEOUT, auto_congest, p);
++			p->initid = ast_sched_add(sched, p->timer_b, auto_congest, p);
+ 		}
+ 	} else {
+ 		ast->hangupcause = AST_CAUSE_USER_BUSY;
+@@ -4547,8 +4561,10 @@
+ 	p->stateid = -1;
+ 	p->prefs = default_prefs;		/* Set default codecs for this call */
+ 
+-	if (intended_method != SIP_OPTIONS)	/* Peerpoke has it's own system */
++	if (intended_method != SIP_OPTIONS) {	/* Peerpoke has it's own system */
+ 		p->timer_t1 = 500;	/* Default SIP retransmission timer T1 (RFC 3261) */
++		p->timer_b = global_timer_b;
++	}
+ 
+ 	if (sin) {
+ 		p->sa = *sin;
+@@ -9839,6 +9855,10 @@
+ 				ast_string_field_set(p, cid_num, tmp);
+ 			}
+ 			do_setnat(p, ast_test_flag(&p->flags[0], SIP_NAT_ROUTE));
++			if (peer->timer_b)
++				p->timer_b = peer->timer_b;
++			else
++				p->timer_b = 64 * 500;
+ 
+ 			ast_string_field_set(p, peersecret, peer->secret);
+ 			ast_string_field_set(p, peermd5secret, peer->md5secret);
+@@ -11009,7 +11029,8 @@
+ 	ast_cli(fd, "  Codec Order:            ");
+ 	print_codec_to_cli(fd, &default_prefs);
+ 	ast_cli(fd, "\n");
+-	ast_cli(fd, "  T1 minimum:             %d\n", global_t1min);
++	ast_cli(fd, "  Timer T1 minimum:       %d\n", global_t1min);
++	ast_cli(fd, "  Timer B:                %d\n", global_timer_b);
+ 	ast_cli(fd, "  Relax DTMF:             %s\n", global_relaxdtmf ? "Yes" : "No");
+ 	ast_cli(fd, "  Compact SIP headers:    %s\n", compactheaders ? "Yes" : "No");
+ 	ast_cli(fd, "  RTP Keepalive:          %d %s\n", global_rtpkeepalive, global_rtpkeepalive ? "" : "(Disabled)" );
+@@ -17327,6 +17348,7 @@
+ 	peer->pickupgroup = 0;
+ 	peer->maxms = default_qualify;
+ 	peer->prefs = default_prefs;
++	peer->timer_b = global_timer_b;
+ }
+ 
+ /*! \brief Create temporary peer (used in autocreatepeer mode) */
+@@ -17523,6 +17545,11 @@
+ 			peer->call_limit = atoi(v->value);
+ 			if (peer->call_limit < 0)
+ 				peer->call_limit = 0;
++		} else if (!strcasecmp(v->name, "timerb")) {
++			if ((sscanf(v->value, "%d", &peer->timer_b) != 1) || (peer->timer_b < 0)) {
++				ast_log(LOG_WARNING, "'%s' is not a valid Timer B time at line %d.  Using default.\n", v->value, v->lineno);
++				peer->timer_b = global_timer_b;
++			}
+ 		} else if (!strcasecmp(v->name, "amaflags")) {
+ 			format = ast_cdr_amaflags2int(v->value);
+ 			if (format < 0) {
+@@ -17799,6 +17826,7 @@
+ 	global_relaxdtmf = FALSE;
+ 	global_callevents = FALSE;
+ 	global_t1min = DEFAULT_T1MIN;		
++	global_timer_b = DEFAULT_TIMERB;		
+ 
+ 	global_matchexterniplocally = FALSE;
+ 
+@@ -17840,6 +17868,8 @@
+ 			ast_set2_flag(&global_flags[1], ast_true(v->value), SIP_PAGE2_IGNOREREGEXPIRE);	
+ 		} else if (!strcasecmp(v->name, "t1min")) {
+ 			global_t1min = atoi(v->value);
++		} else if (!strcasecmp(v->name, "timerb")) {
++			global_timer_b = atoi(v->value);
+ 		} else if (!strcasecmp(v->name, "dynamic_exclude_static") || !strcasecmp(v->name, "dynamic_excludes_static")) {
+ 			global_dynamic_exclude_static = ast_true(v->value);
+ 		} else if (!strcasecmp(v->name, "contactpermit") || !strcasecmp(v->name, "contactdeny")) {

Propchange: team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/oej/ringstatelimit-1.4/ringstatelimit-1.4.diff
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the asterisk-commits mailing list