All pastes #764753 Raw Copy code Copy link Edit

Anonymous

public unlisted text v1 · immutable
#764753 ·published 2007-11-07 15:14 UTC
rendered paste body
Script started on Wednesday 07 November 2007 08:38:14 PM IST
snaps:~# diff -r asterisk-1.4.11 asterisk-1.4.13
Only in asterisk-1.4.11/agi: eagi-sphinx-test
Only in asterisk-1.4.11/agi: eagi-sphinx-test.o
Only in asterisk-1.4.11/agi: eagi-test
Only in asterisk-1.4.11/agi: eagi-test.o
Only in asterisk-1.4.11/agi: strcompat.c
Only in asterisk-1.4.11/agi: strcompat.o
Only in asterisk-1.4.11/apps: app_adsiprog.o
Only in asterisk-1.4.11/apps: app_adsiprog.so
Only in asterisk-1.4.11/apps: app_alarmreceiver.o
Only in asterisk-1.4.11/apps: app_alarmreceiver.so
Only in asterisk-1.4.11/apps: app_amd.o
Only in asterisk-1.4.11/apps: app_amd.so
Only in asterisk-1.4.11/apps: app_authenticate.o
Only in asterisk-1.4.11/apps: app_authenticate.so
Only in asterisk-1.4.11/apps: app_cdr.o
Only in asterisk-1.4.11/apps: app_cdr.so
Only in asterisk-1.4.11/apps: app_chanisavail.o
Only in asterisk-1.4.11/apps: app_chanisavail.so
Only in asterisk-1.4.11/apps: app_channelredirect.o
Only in asterisk-1.4.11/apps: app_channelredirect.so
Only in asterisk-1.4.11/apps: app_chanspy.o
Only in asterisk-1.4.11/apps: app_chanspy.so
Only in asterisk-1.4.11/apps: app_controlplayback.o
Only in asterisk-1.4.11/apps: app_controlplayback.so
Only in asterisk-1.4.11/apps: app_db.o
Only in asterisk-1.4.11/apps: app_db.so
diff -r asterisk-1.4.11/apps/app_dial.c asterisk-1.4.13/apps/app_dial.c
30c30
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 75405 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84166 $")
126a127,130
> "    k    - Allow the called party to enable parking of the call by sending\n"
> "           the DTMF sequence defined for call parking in features.conf.\n"
> "    K    - Allow the calling party to enable parking of the call by sending\n"
> "           the DTMF sequence defined for call parking in features.conf.\n"
193,197c197
< "           the DTMF sequence defined for one-touch recording in features.conf.\n"
< "    k    - Allow the called party to enable parking of the call by sending\n"
< "           the DTMF sequence defined for call parking in features.conf.\n"
< "    K    - Allow the calling party to enable parking of the call by sending\n"
< "           the DTMF sequence defined for call parking in features.conf.\n";
---
> "           the DTMF sequence defined for one-touch recording in features.conf.\n";
274a275,276
> 	AST_APP_OPTION('k', OPT_CALLEE_PARK),
> 	AST_APP_OPTION('K', OPT_CALLER_PARK),
280d281
< 	AST_APP_OPTION_ARG('O', OPT_OPERMODE,OPT_ARG_OPERMODE),
281a283
> 	AST_APP_OPTION_ARG('O', OPT_OPERMODE,OPT_ARG_OPERMODE),
290,291d291
< 	AST_APP_OPTION('k', OPT_CALLEE_PARK),
< 	AST_APP_OPTION('K', OPT_CALLER_PARK),
293a294,297
> #define CAN_EARLY_BRIDGE(flags) (!ast_test_flag(flags, OPT_CALLEE_HANGUP | \
> 	OPT_CALLER_HANGUP | OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER | \
> 	OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR | OPT_CALLEE_PARK | OPT_CALLER_PARK))
> 
587c591,592
< 						ast_rtp_early_bridge(in, peer);
---
> 						if (CAN_EARLY_BRIDGE(peerflags))
> 							ast_rtp_early_bridge(in, peer);
615c620
< 					if (single)
---
> 					if (single && CAN_EARLY_BRIDGE(peerflags))
626c631
< 					if (single)
---
> 					if (single && CAN_EARLY_BRIDGE(peerflags))
639c644
< 					if (single)
---
> 					if (single && CAN_EARLY_BRIDGE(peerflags))
Only in asterisk-1.4.11/apps: app_dial.o
Only in asterisk-1.4.11/apps: app_dial.so
Only in asterisk-1.4.11/apps: app_dictate.o
Only in asterisk-1.4.11/apps: app_dictate.so
Only in asterisk-1.4.11/apps: app_directed_pickup.o
Only in asterisk-1.4.11/apps: app_directed_pickup.so
Only in asterisk-1.4.11/apps: app_directory.o
Only in asterisk-1.4.11/apps: app_directory.so
diff -r asterisk-1.4.11/apps/app_disa.c asterisk-1.4.13/apps/app_disa.c
31c31
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 40722 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83246 $")
299a300,303
> 			} else {
> 				if (j == '#') { /* end of extension */
> 					break;
> 				}
Only in asterisk-1.4.11/apps: app_disa.o
Only in asterisk-1.4.11/apps: app_disa.so
Only in asterisk-1.4.11/apps: app_dumpchan.o
Only in asterisk-1.4.11/apps: app_dumpchan.so
Only in asterisk-1.4.11/apps: app_echo.o
Only in asterisk-1.4.11/apps: app_echo.so
Only in asterisk-1.4.11/apps: app_exec.o
Only in asterisk-1.4.11/apps: app_exec.so
Only in asterisk-1.4.11/apps: app_externalivr.o
Only in asterisk-1.4.11/apps: app_externalivr.so
Only in asterisk-1.4.11/apps: app_festival.o
Only in asterisk-1.4.11/apps: app_festival.so
diff -r asterisk-1.4.11/apps/app_flash.c asterisk-1.4.13/apps/app_flash.c
34c34
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 40722 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82992 $")
58,60c58,61
< "  Flash(): Sends a flash on a zap trunk.  This is only a hack for\n"
< "people who want to perform transfers and such via AGI and is generally\n"
< "quite useless oths application will only work on Zap trunks.\n";
---
> "Performs a flash on a zap trunk.  This can be used\n"
> "to access features provided on an incoming analogue circuit\n"
> "such as conference and call waiting. Use with SendDTMF() to\n"
> "perform external transfers\n";
diff -r asterisk-1.4.11/apps/app_followme.c asterisk-1.4.13/apps/app_followme.c
33c33
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 65408 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81455 $")
994,996c994
< 		/* The following call looks like we're going to playback the file, but we're actually	*/
< 		/* just checking to see if we *can* play it. 						*/
< 		if (ast_streamfile(chan, namerecloc, chan->language))
---
> 		if (!ast_fileexists(namerecloc, NULL, chan->language))
998,999d995
< 		else
< 			ast_stopstream(chan);
Only in asterisk-1.4.11/apps: app_followme.o
Only in asterisk-1.4.11/apps: app_followme.so
Only in asterisk-1.4.11/apps: app_forkcdr.o
Only in asterisk-1.4.11/apps: app_forkcdr.so
Only in asterisk-1.4.11/apps: app_getcpeid.o
Only in asterisk-1.4.11/apps: app_getcpeid.so
Only in asterisk-1.4.11/apps: app_hasnewvoicemail.o
Only in asterisk-1.4.11/apps: app_hasnewvoicemail.so
Only in asterisk-1.4.11/apps: app_ices.o
Only in asterisk-1.4.11/apps: app_ices.so
Only in asterisk-1.4.11/apps: app_image.o
Only in asterisk-1.4.11/apps: app_image.so
Only in asterisk-1.4.11/apps: app_lookupblacklist.o
Only in asterisk-1.4.11/apps: app_lookupblacklist.so
Only in asterisk-1.4.11/apps: app_lookupcidname.o
Only in asterisk-1.4.11/apps: app_lookupcidname.so
Only in asterisk-1.4.11/apps: app_macro.o
Only in asterisk-1.4.11/apps: app_macro.so
diff -r asterisk-1.4.11/apps/app_meetme.c asterisk-1.4.13/apps/app_meetme.c
38c38
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 78717 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82286 $")
333a334
> 	ast_mutex_t recordthreadlock;		/*!< control threads trying to start recordthread */
759a761,762
> 	cnf->recordthread = AST_PTHREADT_NULL;
> 	ast_mutex_init(&cnf->recordthreadlock);
1256c1259,1262
< 	
---
> 
> 	ast_mutex_destroy(&conf->playlock);
> 	ast_mutex_destroy(&conf->listenlock);
> 	ast_mutex_destroy(&conf->recordthreadlock);
1432c1438,1439
< 	if ((conf->recording == MEETME_RECORD_OFF) && (confflags & CONFFLAG_RECORDCONF) && ((conf->lchan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL)))) {
---
> 	ast_mutex_lock(&conf->recordthreadlock);
> 	if ((conf->recordthread == AST_PTHREADT_NULL) && (confflags & CONFFLAG_RECORDCONF) && ((conf->lchan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL)))) {
1448a1456
> 	ast_mutex_unlock(&conf->recordthreadlock);
1783,1789d1790
< 					} else {
< 						ztc.confmode = ZT_CONF_CONF;
< 						if (ioctl(fd, ZT_SETCONF, &ztc)) {
< 							ast_log(LOG_WARNING, "Error setting conference\n");
< 							close(fd);
< 							goto outrun;
< 						}
Only in asterisk-1.4.11/apps: app_milliwatt.o
Only in asterisk-1.4.11/apps: app_milliwatt.so
Only in asterisk-1.4.11/apps: app_mixmonitor.o
Only in asterisk-1.4.11/apps: app_mixmonitor.so
Only in asterisk-1.4.11/apps: app_morsecode.o
Only in asterisk-1.4.11/apps: app_morsecode.so
Only in asterisk-1.4.11/apps: app_mp3.o
Only in asterisk-1.4.11/apps: app_mp3.so
Only in asterisk-1.4.11/apps: app_nbscat.o
Only in asterisk-1.4.11/apps: app_nbscat.so
Only in asterisk-1.4.11/apps: app_parkandannounce.o
Only in asterisk-1.4.11/apps: app_parkandannounce.so
Only in asterisk-1.4.11/apps: app_playback.o
Only in asterisk-1.4.11/apps: app_playback.so
Only in asterisk-1.4.11/apps: app_privacy.o
Only in asterisk-1.4.11/apps: app_privacy.so
diff -r asterisk-1.4.11/apps/app_queue.c asterisk-1.4.13/apps/app_queue.c
61c61
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80088 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84692 $")
94a95
> #include "asterisk/astobj2.h"
320a322
> 	int realtime;                       /*!< Is this member realtime? */
326d327
< 	struct member *next;                /*!< Next member */
362a364
> 	unsigned int found:1;
398,399c400,406
< 	struct member *members;             /*!< Head of the list of members */
< 	int membercount;					/*!< Number of members in queue */
---
> 	struct ao2_container *members;             /*!< Head of the list of members */
> 	/*! 
> 	 * \brief Number of members _logged in_
> 	 * \note There will be members in the members container that are not logged
> 	 *       in, so this can not simply be replaced with ao2_container_count(). 
> 	 */
> 	int membercount;
482a490
> 	struct ao2_iterator mem_iter;
486,487c494,497
< 	for (member = q->members; member; member = member->next) {
< 		if (max_penalty && (member->penalty > max_penalty))
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((member = ao2_iterator_next(&mem_iter))) {
> 		if (max_penalty && (member->penalty > max_penalty)) {
> 			ao2_ref(member, -1);
488a499
> 		}
490c501,504
< 		if (member->paused) continue;
---
> 		if (member->paused) {
> 			ao2_ref(member, -1);
> 			continue;
> 		}
494a509
> 			ao2_ref(member, -1);
497a513
> 			ao2_ref(member, -1);
500a517
> 			ao2_ref(member, -1);
504c521
< 	
---
> 
518a536
> 	struct ao2_iterator mem_iter;
558c576,577
< 		for (cur = q->members; cur; cur = cur->next) {
---
> 		mem_iter = ao2_iterator_init(q->members, 0);
> 		while ((cur = ao2_iterator_next(&mem_iter))) {
566c585,586
< 			if (strcasecmp(sc->dev, interface))
---
> 			if (strcasecmp(sc->dev, interface)) {
> 				ao2_ref(cur, -1);
567a588
> 			}
571c592,593
< 				if (q->maskmemberstatus)
---
> 				if (q->maskmemberstatus) {
> 					ao2_ref(cur, -1);
572a595
> 				}
584c607
< 					q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : "static",
---
> 					q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : cur->realtime ? "realtime" : "static",
586a610
> 			ao2_ref(cur, -1);
625c649
< 	if ((cur = ast_calloc(1, sizeof(*cur)))) {
---
> 	if ((cur = ao2_alloc(sizeof(*cur), NULL))) {
629c653,656
< 		ast_copy_string(cur->membername, membername, sizeof(cur->membername));
---
> 		if(!ast_strlen_zero(membername))
> 			ast_copy_string(cur->membername, membername, sizeof(cur->membername));
> 		else
> 			ast_copy_string(cur->membername, interface, sizeof(cur->membername));
648a676,703
> static int compress_char(const char c)
> {
> 	if (c < 32)
> 		return 0;
> 	else if (c > 96)
> 		return c - 64;
> 	else
> 		return c - 32;
> }
> 
> static int member_hash_fn(const void *obj, const int flags)
> {
> 	const struct member *mem = obj;
> 	const char *chname = strchr(mem->interface, '/');
> 	int ret = 0, i;
> 	if (!chname)
> 		chname = mem->interface;
> 	for (i = 0; i < 5 && chname[i]; i++)
> 		ret += compress_char(chname[i]) << (i * 6);
> 	return ret;
> }
> 
> static int member_cmp_fn(void *obj1, void *obj2, int flags)
> {
> 	struct member *mem1 = obj1, *mem2 = obj2;
> 	return strcmp(mem1->interface, mem2->interface) ? 0 : CMP_MATCH;
> }
> 
669a725,726
> 	if(!q->members)
> 		q->members = ao2_container_alloc(37, member_hash_fn, member_cmp_fn);
670a728
> 	q->found = 1;
725c783
< 	struct member *mem;
---
> 	struct member *mem, tmpmem;
727a786,787
> 	ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
> 
731,733c791,793
< 		for (mem = q->members; mem && !ret; mem = mem->next) {
< 			if (!strcasecmp(interface, mem->interface))
< 				ret = 1;
---
> 		if ((mem = ao2_find(q->members, &tmpmem, OBJ_POINTER))) {
> 			ao2_ref(mem, -1);
> 			ret = 1;
932c992
< 	struct member *m, *prev_m;
---
> 	struct member *m, tmpmem;
949,951c1009,1010
< 	for (m = q->members, prev_m = NULL;
< 		m && strcmp(m->interface, interface);
< 		prev_m = m, m = m->next);
---
> 	ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
> 	m = ao2_find(q->members, &tmpmem, OBJ_POINTER);
956a1016
> 			m->realtime = 1;
958,962c1018
< 			if (prev_m) {
< 				prev_m->next = m;
< 			} else {
< 				q->members = m;
< 			}
---
> 			ao2_link(q->members, m);
969a1026
> 		ao2_ref(m, -1);
976c1033,1034
< 	struct member *curm, *next, *prev = NULL;
---
> 	struct member *cur;
> 	struct ao2_iterator mem_iter = ao2_iterator_init(q->members, 0);
978,985c1036,1039
< 	for (curm = q->members; curm; curm = next) {
< 		next = curm->next;
< 		if (all || !curm->dynamic) {
< 			if (prev)
< 				prev->next = next;
< 			else
< 				q->members = next;
< 			remove_from_interfaces(curm->interface);
---
> 	while ((cur = ao2_iterator_next(&mem_iter))) {
> 		if (all || !cur->dynamic) {
> 			ao2_unlink(q->members, cur);
> 			remove_from_interfaces(cur->interface);
987,989c1041,1042
< 			free(curm);
< 		} else
< 			prev = curm;
---
> 		}
> 		ao2_ref(cur, -1);
996a1050
> 	ao2_ref(q->members, -1);
1007c1061,1062
< 	struct member *m, *prev_m, *next_m;
---
> 	struct member *m;
> 	struct ao2_iterator mem_iter;
1025a1081
> 				ast_log(LOG_WARNING, "Static queue '%s' already exists. Not loading from realtime\n", q->name);
1062a1119
> 		init_queue(q);		/* Ensure defaults for all parameters not set explicitly. */
1065d1121
< 	init_queue(q);		/* Ensure defaults for all parameters not set explicitly. */
1084c1140
< 	/* Temporarily set non-dynamic members dead so we can detect deleted ones. 
---
> 	/* Temporarily set realtime members dead so we can detect deleted ones. 
1086,1087c1142,1145
< 	for (m = q->members; m; m = m->next, q->membercount++) {
< 		if (!m->dynamic)
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((m = ao2_iterator_next(&mem_iter))) {
> 		q->membercount++;
> 		if (m->realtime)
1088a1147
> 		ao2_ref(m, -1);
1093c1152
< 			S_OR(ast_variable_retrieve(member_config, interface, "membername"), interface),
---
> 			ast_variable_retrieve(member_config, interface, "membername"),
1099,1102c1158,1159
< 	m = q->members;
< 	prev_m = NULL;
< 	while (m) {
< 		next_m = m->next;
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((m = ao2_iterator_next(&mem_iter))) {
1104,1108c1161,1162
< 			if (prev_m) {
< 				prev_m->next = next_m;
< 			} else {
< 				q->members = next_m;
< 			}
---
> 			ao2_unlink(q->members, m);
> 			ast_mutex_unlock(&q->lock);
1109a1164
> 			ast_mutex_lock(&q->lock);
1111,1113d1165
< 			free(m);
< 		} else {
< 			prev_m = m;
1115c1167
< 		m = next_m;
---
> 		ao2_ref(m, -1);
1122a1175,1193
> static int update_realtime_member_field(struct member *mem, const char *queue_name, const char *field, const char *value)
> {
> 	struct ast_variable *var;
> 	int ret = -1;
> 
> 	if(!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL))) 
> 		return ret;
> 	while (var) {
> 		if(!strcmp(var->name, "uniqueid"))
> 			break;
> 		var = var->next;
> 	}
> 	if(var && !ast_strlen_zero(var->value)) {
> 		if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1)
> 			ret = 0;
> 	}
> 	return ret;
> }
> 
1126c1197
< 	struct member *m, *prev_m, *next_m;
---
> 	struct member *m;
1127a1199
> 	struct ao2_iterator mem_iter;
1139,1141c1211,1214
< 	/* Temporarily set non-dynamic members dead so we can detect deleted ones.*/ 
< 	for (m = q->members; m; m = m->next) {
< 		if (!m->dynamic)
---
> 	/* Temporarily set realtime  members dead so we can detect deleted ones.*/ 
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((m = ao2_iterator_next(&mem_iter))) {
> 		if (m->realtime)
1142a1216
> 		ao2_ref(m, -1);
1153,1156c1227,1228
< 	m = q->members;
< 	prev_m = NULL;
< 	while (m) {
< 		next_m = m->next;
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((m = ao2_iterator_next(&mem_iter))) {
1158,1162c1230,1231
< 			if (prev_m) {
< 				prev_m->next = next_m;
< 			} else {
< 				q->members = next_m;
< 			}
---
> 			ao2_unlink(q->members, m);
> 			ast_mutex_unlock(&q->lock);
1163a1233
> 			ast_mutex_lock(&q->lock);
1165,1167d1234
< 			free(m);
< 		} else {
< 			prev_m = m;
1169c1236
< 		m = next_m;
---
> 		ao2_ref(m, -1);
1511a1579,1580
> 		if (oo->member)
> 			ao2_ref(oo->member, -1);
1518a1588
> 	struct ao2_iterator mem_iter;
1523,1524c1593,1596
< 	for (cur = q->members; cur; cur = cur->next) {
< 		if (member != cur)
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((cur = ao2_iterator_next(&mem_iter))) {
> 		if (member != cur) {
> 			ao2_ref(cur, -1);
1525a1598
> 		}
1539c1612
< 				q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : "static",
---
> 				q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : cur->realtime ? "realtime": "static",
1541a1615
> 		ao2_ref(cur, -1);
1575,1578c1649
< 			for (mem = q->members; mem; mem = mem->next) {
< 				if (strcmp(mem->interface, member->interface))
< 					continue;
< 
---
> 			if ((mem = ao2_find(q->members, member, OBJ_POINTER))) {
1583d1653
< 					break;
1584a1655
> 				ao2_ref(mem, -1);
1737a1809
> 					"AgentName: %s\r\n"
1745c1817
< 					tmp->interface, qe->chan->name,
---
> 					tmp->interface, tmp->member->membername, qe->chan->name,
2177c2249,2250
< 			for (cur = qe->parent->members; cur; cur = cur->next) {
---
> 			struct ao2_iterator mem_iter = ao2_iterator_init(qe->parent->members, 0);
> 			while ((cur = ao2_iterator_next(&mem_iter))) {
2181c2254,2255
< 					avl++;
---
> 					if (!cur->paused)
> 						avl++;
2183a2258
> 				ao2_ref(cur, -1);
2271,2274d2345
< 	struct member *cur;
< 
< 	/* Since a reload could have taken place, we have to traverse the list to
< 		be sure it's still valid */
2276,2284c2347,2348
< 	cur = q->members;
< 	while (cur) {
< 		if (member == cur) {
< 			time(&cur->lastcall);
< 			cur->calls++;
< 			break;
< 		}
< 		cur = cur->next;
< 	}
---
> 	time(&member->lastcall);
> 	member->calls++;
2381a2446
> 	struct ao2_iterator memi;
2429d2493
< 	cur = qe->parent->members;
2435c2499,2500
< 	for (; cur; cur = cur->next) {
---
> 	memi = ao2_iterator_init(qe->parent->members, 0);
> 	while ((cur = ao2_iterator_next(&memi))) {
2438a2504
> 			ao2_ref(cur, -1);
2445c2511
< 		tmp->member = cur;		/* Never directly dereference!  Could change on reload */
---
> 		tmp->member = cur;
2460a2527
> 			ao2_ref(cur, -1);
2483a2551
> 			/* User exited by pressing a digit */
2485,2486d2552
< 			if (res > 0 && !valid_exit(qe, res))
< 				res = 0;
2488c2554
< 		if (option_debug)
---
> 		if (option_debug && res == -1)
2518,2519c2584
< 					if (play_file(peer, announce))
< 						ast_log(LOG_WARNING, "Announcement file '%s' is unavailable, continuing anyway...\n", announce);
---
> 					play_file(peer, announce);
2576a2642,2645
> 
> 		if (qe->parent->setinterfacevar)
> 				pbx_builtin_setvar_helper(qe->chan, "MEMBERINTERFACE", member->interface);
> 
2659c2728,2730
< 
---
> 					/* We purposely lock the CDR so that pbx_exec does not update the application data */
> 					if (qe->chan->cdr)
> 						ast_set_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
2660a2732,2733
> 					if (qe->chan->cdr)
> 						ast_clear_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
2674,2675d2746
< 		if (qe->parent->setinterfacevar)
< 				pbx_builtin_setvar_helper(qe->chan, "MEMBERINTERFACE", member->interface);
2774a2846
> 	struct ao2_iterator mem_iter;
2779c2851,2852
< 	for (mem = q->members; mem; mem = mem->next) {
---
> 	mem_iter = ao2_iterator_init(q->members, 0);
> 	while ((mem = ao2_iterator_next(&mem_iter))) {
2781a2855
> 		ao2_ref(mem, -1);
2798a2873
> 	struct ao2_iterator mem_iter;
2805,2806c2880,2883
< 	for (cur_member = pm_queue->members; cur_member; cur_member = cur_member->next) {
< 		if (!cur_member->dynamic)
---
> 	mem_iter = ao2_iterator_init(pm_queue->members, 0);
> 	while ((cur_member = ao2_iterator_next(&mem_iter))) {
> 		if (!cur_member->dynamic) {
> 			ao2_ref(cur_member, -1);
2807a2885,2890
> 		}
> 
> 		res = snprintf(value + value_len, sizeof(value) - value_len, "%s%s;%d;%d;%s",
> 			value_len ? "|" : "", cur_member->interface, cur_member->penalty, cur_member->paused, cur_member->membername);
> 
> 		ao2_ref(cur_member, -1);
2809,2811d2891
< 		res = snprintf(value + value_len, sizeof(value) - value_len, "%s;%d;%d;%s%s",
< 			cur_member->interface, cur_member->penalty, cur_member->paused, cur_member->membername,
< 			cur_member->next ? "|" : "");
2830c2910
< 	struct member *last_member, *look;
---
> 	struct member *mem, tmpmem;
2832a2913,2914
> 	ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
> 
2841,2855c2923,2924
< 		if ((last_member = interface_exists(q, interface))) {
< 			if ((look = q->members) == last_member) {
< 				q->members = last_member->next;
< 				q->membercount--;
< 			} else {
< 				while (look != NULL) {
< 					if (look->next == last_member) {
< 						look->next = last_member->next;
< 						q->membercount--;
< 						break;
< 					} else {
< 						look = look->next;
< 					}
< 				}
< 			}
---
> 		if ((mem = ao2_find(q->members, &tmpmem, OBJ_POINTER | OBJ_UNLINK))) {
> 			q->membercount--;
2860,2862c2929,2931
< 				q->name, last_member->interface, last_member->membername);
< 			free(last_member);
< 			
---
> 				q->name, mem->interface, mem->membername);
> 			ao2_ref(mem, -1);
> 
2886c2955
< 	struct member *new_member;
---
> 	struct member *new_member, *old_member;
2897c2966
< 	if (interface_exists(q, interface) == NULL) {
---
> 	if ((old_member = interface_exists(q, interface)) == NULL) {
2901,2902c2970
< 			new_member->next = q->members;
< 			q->members = new_member;
---
> 			ao2_link(q->members, new_member);
2926a2995
> 		ao2_ref(old_member, -1);
2958a3028,3030
> 				if(mem->realtime)
> 					update_realtime_member_field(mem, q->name, "paused", paused ? "1" : "0");
> 
2966a3039
> 				ao2_ref(mem, -1);
2983c3056
< 	char *membername;
---
> 	char *membername = NULL;
3285,3288d3357
< 	if (ast_strlen_zero(args.membername))
< 		args.membername = args.interface;
< 
< 
3607a3677,3678
> 	struct member *m;
> 	struct ao2_iterator mem_iter;
3628c3699,3706
< 		count = q->membercount;
---
> 		mem_iter = ao2_iterator_init(q->members, 0);
> 		while ((m = ao2_iterator_next(&mem_iter))) {
> 			/* Count the agents who are logged in and presently answering calls */
> 			if ((m->status != AST_DEVICE_UNAVAILABLE) && (m->status != AST_DEVICE_INVALID)) {
> 				count++;
> 			}
> 			ao2_ref(m, -1);
> 		}
3700a3779
> 		struct ao2_iterator mem_iter = ao2_iterator_init(q->members, 0);
3702c3781
< 		for (m = q->members; m; m = m->next) {
---
> 		while ((m = ao2_iterator_next(&mem_iter))) {
3708,3709c3787,3788
< 			strncat(buf + buflen, m->interface, len - buflen - 1);
< 			buflen += strlen(m->interface);
---
> 			strncat(buf + buflen, m->membername, len - buflen - 1);
> 			buflen += strlen(m->membername);
3711a3791
> 				ao2_ref(m, -1);
3714a3795
> 			ao2_ref(m, -1);
3770c3851,3852
< 	struct member *prev, *cur, *newm, *next;
---
> 	struct member *cur, *newm;
> 	struct ao2_iterator mem_iter;
3775c3857
< 	char *membername;
---
> 	char *membername = NULL;
3789,3791c3871,3877
< 	/* Mark all queues as dead for the moment */
< 	AST_LIST_TRAVERSE(&queues, q, list)
< 		q->dead = 1;
---
> 	/* Mark all non-realtime queues as dead for the moment */
> 	AST_LIST_TRAVERSE(&queues, q, list) {
> 		if(!q->realtime) {
> 			q->dead = 1;
> 			q->found = 0;
> 		}
> 	}
3824a3911,3917
> 				/* Check if a queue with this name already exists */
> 				if (q->found) {
> 					ast_log(LOG_WARNING, "Queue '%s' already defined! Skipping!\n", cat);
> 					if(!new)
> 						ast_mutex_unlock(&q->lock);
> 					continue;
> 				}
3828c3921,3922
< 				for (cur = q->members; cur; cur = cur->next) {
---
> 				mem_iter = ao2_iterator_init(q->members, 0);
> 				while ((cur = ao2_iterator_next(&mem_iter))) {
3831a3926
> 					ao2_ref(cur, -1);
3834a3930,3931
> 						struct member tmpmem;
> 
3854,3855c3951
< 						} else
< 							membername = interface;
---
> 						}
3858,3862c3954,3955
< 						for (prev = NULL, cur = q->members; cur; prev = cur, cur = cur->next) {
< 							if (!strcmp(cur->interface, interface)) {
< 								break;
< 							}
< 						}
---
> 						ast_copy_string(tmpmem.interface, interface, sizeof(tmpmem.interface));
> 						cur = ao2_find(q->members, &tmpmem, OBJ_POINTER | OBJ_UNLINK);
3864a3958
> 						ao2_link(q->members, newm);
3866,3875c3960,3962
< 						if (cur) {
< 							/* Delete it now */
< 							newm->next = cur->next;
< 							if (prev) {
< 								prev->next = newm;
< 							} else {
< 								q->members = newm;
< 							}
< 							free(cur);
< 						} else {
---
> 						if (cur)
> 							ao2_ref(cur, -1);
> 						else {
3878,3879c3965
< 							newm->next = q->members;
< 							q->members = newm;
---
> 							q->membercount++;
3881d3966
< 						q->membercount++;
3888,3894c3973,3976
< 				for (prev = NULL, cur = q->members;
< 				     cur;
< 				     cur = next) {
< 					next = cur->next;
< 
< 					if (!cur->delme) {
< 						prev = cur;
---
> 				mem_iter = ao2_iterator_init(q->members, 0);
> 				while ((cur = ao2_iterator_next(&mem_iter))) {
> 					if (! cur->delme) {
> 						ao2_ref(cur, -1);
3898,3902d3979
< 					if (prev)
< 						prev->next = next;
< 					else
< 						q->members = next;
< 
3905c3982,3983
< 					free(cur);
---
> 					ao2_unlink(q->members, cur);
> 					ao2_ref(cur, -1);
3928c4006,4009
< 			for (cur = q->members; cur; cur = cur->next)
---
> 			mem_iter = ao2_iterator_init(q->members, 0);
> 			while ((cur = ao2_iterator_next(&mem_iter))) {
> 				if (cur->dynamic)
> 					q->membercount++;
3929a4011,4012
> 				ao2_ref(cur, -1);
> 			}
3949a4033
> 	struct ao2_iterator mem_iter;
4008c4092
< 		if (q->members) {
---
> 		if (ao2_container_count(q->members)) {
4013c4097,4098
< 			for (mem = q->members; mem; mem = mem->next) {
---
> 			mem_iter = ao2_iterator_init(q->members, 0);
> 			while ((mem = ao2_iterator_next(&mem_iter))) {
4020a4106,4107
> 				if (mem->realtime)
> 					ast_build_string(&max, &max_left, " (realtime)");
4030c4117
< 					astman_append(s, "      %s%s%s", mem->interface, max_buf, term);
---
> 					astman_append(s, "      %s%s%s", mem->membername, max_buf, term);
4032c4119,4120
< 					ast_cli(fd, "      %s%s%s", mem->interface, max_buf, term);
---
> 					ast_cli(fd, "      %s%s%s", mem->membername, max_buf, term);
> 				ao2_ref(mem, -1);
4126a4215
> 	struct ao2_iterator mem_iter;
4155c4244,4245
< 			for (mem = q->members; mem; mem = mem->next) {
---
> 			mem_iter = ao2_iterator_init(q->members, 0);
> 			while ((mem = ao2_iterator_next(&mem_iter))) {
4158a4249
> 						"Name: %s\r\n"
4168c4259
< 						q->name, mem->interface, mem->dynamic ? "dynamic" : "static",
---
> 						q->name, mem->membername, mem->interface, mem->dynamic ? "dynamic" : "static",
4170a4262
> 				ao2_ref(mem, -1);
4235,4237d4326
< 	if (ast_strlen_zero(membername))
< 		membername = interface;
< 
4313c4402
< 	char *queuename, *interface, *membername;
---
> 	char *queuename, *interface, *membername = NULL;
4344,4345d4432
< 	} else {
< 		membername = interface;
4434a4522
> 	struct ao2_iterator mem_iter;
4449c4537,4538
< 			for (m = q->members ; m ; m = m->next) {
---
> 			mem_iter = ao2_iterator_init(q->members, 0);
> 			while ((m = ao2_iterator_next(&mem_iter))) {
4450a4540
> 					char *tmp;
4452c4542,4544
< 					return ast_strdup(m->interface);
---
> 					tmp = m->membername;
> 					ao2_ref(m, -1);
> 					return ast_strdup(tmp);
4453a4546
> 				ao2_ref(m, -1);
Only in asterisk-1.4.11/apps: app_queue.o
Only in asterisk-1.4.11/apps: app_queue.so
Only in asterisk-1.4.11/apps: app_random.o
Only in asterisk-1.4.11/apps: app_random.so
Only in asterisk-1.4.11/apps: app_readfile.o
Only in asterisk-1.4.11/apps: app_readfile.so
Only in asterisk-1.4.11/apps: app_read.o
Only in asterisk-1.4.11/apps: app_read.so
Only in asterisk-1.4.11/apps: app_realtime.o
Only in asterisk-1.4.11/apps: app_realtime.so
Only in asterisk-1.4.11/apps: app_record.o
Only in asterisk-1.4.11/apps: app_record.so
diff -r asterisk-1.4.11/apps/app_rpt.c asterisk-1.4.13/apps/app_rpt.c
21d20
< 
25c24
<  *  version 0.70 07/22/07
---
>  *  version 0.73 09/04/07
182c181
< #define	START_DELAY 10
---
> #define	START_DELAY 2
229a229,230
> #define	ALLOW_LOCAL_CHANNELS
> 
258c259
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 77846 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82368 $")
303a305
> #include "asterisk/options.h"
311c313
< static  char *tdesc = "Radio Repeater / Remote Base  version 0.70  07/22/2007";
---
> static  char *tdesc = "Radio Repeater / Remote Base  version 0.73  09/04/2007";
594c596
< 	struct ast_channel *pchannel,*txpchannel;
---
> 	struct ast_channel *pchannel,*txpchannel, *zaprxchannel, *zaptxchannel;
1189a1192,1242
> static void mdc1200_notify(struct rpt *myrpt,char *fromnode, unsigned int unit)
> {
> 	if (!fromnode)
> 	{
> 		ast_verbose("Got MDC-1200 ID %04X from local system (%s)\n",
> 			unit,myrpt->name);
> 	}
> 	else
> 	{
> 		ast_verbose("Got MDC-1200 ID %04X from node %s (%s)\n",
> 			unit,fromnode,myrpt->name);
> 	}
> }
> 
> #ifdef	_MDC_DECODE_H_
> 
> static void mdc1200_send(struct rpt *myrpt, unsigned int unit)
> {
> struct rpt_link *l;
> struct	ast_frame wf;
> char	str[200];
> 
> 
> 	sprintf(str,"I %s %04X",myrpt->name,unit);
> 
> 	wf.frametype = AST_FRAME_TEXT;
> 	wf.subclass = 0;
> 	wf.offset = 0;
> 	wf.mallocd = 0;
> 	wf.datalen = strlen(str) + 1;
> 	wf.samples = 0;
> 
> 
> 	l = myrpt->links.next;
> 	/* otherwise, send it to all of em */
> 	while(l != &myrpt->links)
> 	{
> 		if (l->name[0] == '0') 
> 		{
> 			l = l->next;
> 			continue;
> 		}
> 		wf.data = str;
> 		if (l->chan) ast_write(l->chan,&wf); 
> 		l = l->next;
> 	}
> 	return;
> }
> 
> #endif
> 
2898a2952,2954
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(mychannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
3116c3172
< #ifdef	_MDC_DECODE_H_
---
> #if	defined(_MDC_DECODE_H_) && defined(MDC_SAY_WHEN_DOING_CT)
3337c3393
< 			if (ioctl(myrpt->txchannel->fds[0],ZT_FLUSH,&i) == -1)
---
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_FLUSH,&i) == -1)
3344c3400
< 			if (ioctl(myrpt->rxchannel->fds[0],ZT_GET_PARAMS,&par) == -1)
---
> 			if (ioctl(myrpt->zaprxchannel->fds[0],ZT_GET_PARAMS,&par) == -1)
4126a4183,4185
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(mychannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
4146a4206,4208
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(genchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
4492a4555,4560
> #ifdef ALLOW_LOCAL_CHANNELS
> 	if ((strncasecmp(s1,"iax2/", 5) == 0) || (strncasecmp(s1, "local/", 6) == 0))
>         	strncpy(deststr, s1, sizeof(deststr));
> 	else
> 	        snprintf(deststr, sizeof(deststr), "IAX2/%s", s1);
> #else
4493a4562
> #endif
4504a4574,4576
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 		ast_set_flag(l->chan->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
4538a4611,4613
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(l->pchan->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
4773a4849,4856
> #ifdef	_MDC_DECODE_H_
> 		case 8:
> 			myrpt->lastunit = 0xd00d; 
> 			mdc1200_notify(myrpt,NULL,myrpt->lastunit);
> 			mdc1200_send(myrpt,myrpt->lastunit);
> 			break;
> #endif
> 
5256c5339
< 	if (sscanf(tmp,"%s %s %s %d %c",cmd,dest,src,&seq,&c) != 5)
---
> 	if (tmp[0] == 'I')
5258,5259c5341,5347
< 		ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
< 		return;
---
> 		if (sscanf(tmp,"%s %s %x",cmd,src,&seq) != 3)
> 		{
> 			ast_log(LOG_WARNING, "Unable to parse ident string %s\n",str);
> 			return;
> 		}
> 		mdc1200_notify(myrpt,src,seq);
> 		strcpy(dest,"*");
5261c5349
< 	if (strcmp(cmd,"D"))
---
> 	else
5263,5264c5351,5360
< 		ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
< 		return;
---
> 		if (sscanf(tmp,"%s %s %s %d %c",cmd,dest,src,&seq,&c) != 5)
> 		{
> 			ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
> 			return;
> 		}
> 		if (strcmp(cmd,"D"))
> 		{
> 			ast_log(LOG_WARNING, "Unable to parse link string %s\n",str);
> 			return;
> 		}
5729a5826
> #ifdef __i386__
5751a5849
> #endif
5762c5860
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1)
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1)
5769c5867
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1)
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1)
5771c5869
< 		ast_log(LOG_WARNING,"Cannot send RBI command for channel %s\n",myrpt->rxchannel->name);
---
> 		ast_log(LOG_WARNING,"Cannot send RBI command for channel %s\n",myrpt->zaprxchannel->name);
5806,5811c5904,5909
< 	if(debug){
< 		printf("String returned was: ");
< 		for(j = 0; j < i; j++)
< 			printf("%02X ", (unsigned char ) rxbuf[j]);
< 		printf("\n");
< 	}
---
> 		if(debug){
> 			printf("String returned was: ");
> 			for(j = 0; j < i; j++)
> 				printf("%02X ", (unsigned char ) rxbuf[j]);
> 			printf("\n");
> 		}
5814c5912,5915
< 	
---
> 
> 	/* if not a zap channel, cant use pciradio stuff */
> 	if (myrpt->rxchannel != myrpt->zaprxchannel) return -1;	
> 
5816c5917
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_GETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_GETPARAM,&prm) == -1) return -1;
5819c5920
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_GETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_GETPARAM,&prm) == -1) return -1;
5824c5925
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
5828c5929
< 		if (ioctl(myrpt->rxchannel->fds[0],ZT_HOOK,&i) == -1) return -1;
---
> 		if (ioctl(myrpt->zaprxchannel->fds[0],ZT_HOOK,&i) == -1) return -1;
5835c5936
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
5844c5945
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
5848c5949
< 		if (ioctl(myrpt->rxchannel->fds[0],ZT_HOOK,&i) == -1) return -1;
---
> 		if (ioctl(myrpt->zaprxchannel->fds[0],ZT_HOOK,&i) == -1) return -1;
5852c5953
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
5855c5956
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
---
> 	if (ioctl(myrpt->zaprxchannel->fds[0],ZT_RADIO_SETPARAM,&prm) == -1) return -1;
8240a8342,8354
> 
> #ifndef	DO_NOT_NOTIFY_MDC1200_ON_REMOTE_BASES
> 	if (tmp[0] == 'I')
> 	{
> 		if (sscanf(tmp,"%s %s %x",cmd,src,&seq) != 3)
> 		{
> 			ast_log(LOG_WARNING, "Unable to parse ident string %s\n",str);
> 			return 0;
> 		}
> 		mdc1200_notify(myrpt,src,seq);
> 		return 0;
> 	}
> #endif
8648d8761
< 
8696a8810,8812
> 	myrpt->zaprxchannel = NULL;
> 	if (!strcasecmp(tmpstr,"Zap"))
> 		myrpt->zaprxchannel = myrpt->rxchannel;
8708a8825,8827
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 		ast_set_flag(myrpt->rxchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
8730a8850
> 	myrpt->zaptxchannel = NULL;
8744a8865,8866
> 		if (!strcasecmp(tmpstr,"Zap"))
> 			myrpt->zaptxchannel = myrpt->txchannel;
8757a8880,8882
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 			ast_set_flag(myrpt->txchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
8800a8926,8949
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(myrpt->pchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
> 	if (!myrpt->zaprxchannel) myrpt->zaprxchannel = myrpt->pchannel;
> 	if (!myrpt->zaptxchannel)
> 	{
> 		/* allocate a pseudo-channel thru asterisk */
> 		myrpt->zaptxchannel = ast_request("zap",AST_FORMAT_SLINEAR,"pseudo",NULL);
> 		if (!myrpt->zaptxchannel)
> 		{
> 			fprintf(stderr,"rpt:Sorry unable to obtain pseudo channel\n");
> 			rpt_mutex_unlock(&myrpt->lock);
> 			if (myrpt->txchannel != myrpt->rxchannel) 
> 				ast_hangup(myrpt->txchannel);
> 			ast_hangup(myrpt->rxchannel);
> 			myrpt->rpt_thread = AST_PTHREADT_STOP;
> 			pthread_exit(NULL);
> 		}
> 		ast_set_read_format(myrpt->zaptxchannel,AST_FORMAT_SLINEAR);
> 		ast_set_write_format(myrpt->zaptxchannel,AST_FORMAT_SLINEAR);
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 		ast_set_flag(myrpt->zaptxchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
> 	}
8814a8964,8966
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(myrpt->monchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
8820c8972
< 	if (ioctl(myrpt->txchannel->fds[0],ZT_SETCONF,&ci) == -1)
---
> 	if (ioctl(myrpt->zaptxchannel->fds[0],ZT_SETCONF,&ci) == -1)
8856c9008,9009
< 	if (strstr(myrpt->txchannel->name,"pseudo") == NULL)
---
> 	if ((strstr(myrpt->txchannel->name,"pseudo") == NULL) &&
> 		(myrpt->zaptxchannel == myrpt->txchannel))
8904a9058,9060
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(myrpt->txpchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
9061a9218
> 		if (myrpt->zaptxchannel && ast_check_hangup(myrpt->zaptxchannel)) break;
9318a9476,9477
> 		if (myrpt->zaptxchannel != myrpt->txchannel)
> 			cs[n++] = myrpt->zaptxchannel;
9611a9771,9772
> 							mdc1200_notify(myrpt,NULL,myrpt->lastunit);
> 							mdc1200_send(myrpt,myrpt->lastunit);
9632c9793
< 				if (ioctl(myrpt->rxchannel->fds[0], ZT_GETCONFMUTE, &ismuted) == -1)
---
> 				if (ioctl(myrpt->zaprxchannel->fds[0], ZT_GETCONFMUTE, &ismuted) == -1)
9772a9934,9957
> 		if (who == myrpt->zaptxchannel) /* if it was a read from pseudo-tx */
> 		{
> 			f = ast_read(myrpt->zaptxchannel);
> 			if (!f)
> 			{
> 				if (debug) printf("@@@@ rpt:Hung Up\n");
> 				break;
> 			}
> 			if (f->frametype == AST_FRAME_VOICE)
> 			{
> 				ast_write(myrpt->txchannel,f);
> 			}
> 			if (f->frametype == AST_FRAME_CONTROL)
> 			{
> 				if (f->subclass == AST_CONTROL_HANGUP)
> 				{
> 					if (debug) printf("@@@@ rpt:Hung Up\n");
> 					ast_frfree(f);
> 					break;
> 				}
> 			}
> 			ast_frfree(f);
> 			continue;
> 		}
10180a10366
> 	if (myrpt->zaptxchannel != myrpt->txchannel) ast_hangup(myrpt->zaptxchannel);
10218a10405,10407
> 	/* wait until asterisk starts */
>         while(!ast_test_flag(&ast_options,AST_OPT_FLAG_FULLY_BOOTED))
>                 usleep(250000);
10397a10587
> 
10445a10636,10642
> #ifdef ALLOW_LOCAL_CHANNELS
> 	        /* Check to insure the connection is IAX2 or Local*/
> 	        if ( (strncmp(chan->name,"IAX2",4)) && (strncmp(chan->name,"Local",5)) ) {
> 	            ast_log(LOG_WARNING, "We only accept links via IAX2 or Local!!\n");
> 	            return -1;
> 	        }
> #else
10450a10648
> #endif
10583a10782,10789
> #ifdef ALLOW_LOCAL_CHANNELS
> 	        /* set IP address if this is a local connection*/
> 	        if (strncmp(chan->name,"Local",5)==0) {
> 	            strcpy(hisip,"127.0.0.1");
> 	        } else {
> 			pbx_substitute_variables_helper(chan,"${IAXPEER(CURRENTCHANNEL)}",hisip,sizeof(hisip) - 1);
> 		}
> #else
10584a10791,10792
> #endif
> 
10740a10949,10951
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 		ast_set_flag(l->pchan->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
10817a11029,11031
> 	myrpt->zaprxchannel = NULL;
> 	if (!strcasecmp(myrpt->rxchanname,"Zap"))
> 		myrpt->zaprxchannel = myrpt->rxchannel;
10821a11036,11038
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 		ast_set_flag(myrpt->rxchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
10838a11056
> 	myrpt->zaptxchannel = NULL;
10850a11069,11070
> 		if (!strcasecmp(myrpt->txchanname,"Zap"))
> 			myrpt->zaptxchannel = myrpt->txchannel;
10854a11075,11077
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 			ast_set_flag(myrpt->txchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
10890a11114,11118
> #ifdef	AST_CDR_FLAG_POST_DISABLED
> 	ast_set_flag(myrpt->pchannel->cdr,AST_CDR_FLAG_POST_DISABLED);
> #endif
> 	if (!myrpt->zaprxchannel) myrpt->zaprxchannel = myrpt->pchannel;
> 	if (!myrpt->zaptxchannel) myrpt->zaptxchannel = myrpt->pchannel;
10905a11134,11135
> 	/* save pseudo channel conference number */
> 	myrpt->conf = myrpt->txconf = ci.confno;
10919c11149
< 	if (myrpt->iofd < 1)
---
> 	if ((myrpt->iofd < 1) && (myrpt->txchannel == myrpt->zaptxchannel))
10923c11153
< 		res = ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z);
---
> 		res = ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z);
10929c11159
< 			if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
10936c11166
< 			if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
10942c11172
< 			if (ioctl(myrpt->txchannel->fds[0],ZT_HOOK,&i) == -1)
---
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_HOOK,&i) == -1)
10950,10955c11180
< 	i = ZT_ONHOOK;
< 	ioctl(myrpt->txchannel->fds[0],ZT_HOOK,&i);
< 	/* if PCIRADIO and Yaesu ft897/ICOM IC-706 selected */
< 	if ((myrpt->iofd < 1) && (!res) &&
< 	   (!strcmp(myrpt->remote,remote_rig_ft897) ||
< 	      (!strcmp(myrpt->remote,remote_rig_ic706))))
---
> 	if (myrpt->txchannel == myrpt->zaptxchannel)
10957,10966c11182,11187
< 		z.radpar = ZT_RADPAR_UIOMODE;
< 		z.data = 1;
< 		if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
< 		{
< 			ast_log(LOG_ERROR,"Cannot set UIOMODE\n");
< 			return -1;
< 		}
< 		z.radpar = ZT_RADPAR_UIODATA;
< 		z.data = 3;
< 		if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 		i = ZT_ONHOOK;
> 		ioctl(myrpt->zaptxchannel->fds[0],ZT_HOOK,&i);
> 		/* if PCIRADIO and Yaesu ft897/ICOM IC-706 selected */
> 		if ((myrpt->iofd < 1) && (!res) &&
> 		   (!strcmp(myrpt->remote,remote_rig_ft897) ||
> 		      (!strcmp(myrpt->remote,remote_rig_ic706))))
10968,10969c11189,11202
< 			ast_log(LOG_ERROR,"Cannot set UIODATA\n");
< 			return -1;
---
> 			z.radpar = ZT_RADPAR_UIOMODE;
> 			z.data = 1;
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
> 			{
> 				ast_log(LOG_ERROR,"Cannot set UIOMODE\n");
> 				return -1;
> 			}
> 			z.radpar = ZT_RADPAR_UIODATA;
> 			z.data = 3;
> 			if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
> 			{
> 				ast_log(LOG_ERROR,"Cannot set UIODATA\n");
> 				return -1;
> 			}
10972,10973d11204
< 	/* save pseudo channel conference number */
< 	myrpt->conf = myrpt->txconf = ci.confno;
11003c11234
< 		ioctl(myrpt->rxchannel->fds[0],ZT_ECHOCANCEL,&i);
---
> 		ioctl(myrpt->zaprxchannel->fds[0],ZT_ECHOCANCEL,&i);
11009c11240
< 	if (ioctl(myrpt->rxchannel->fds[0],ZT_GET_PARAMS,&par) != -1)
---
> 	if (myrpt->rxchannel == myrpt->zaprxchannel)
11011c11242
< 		if (par.rxisoffhook)
---
> 		if (ioctl(myrpt->zaprxchannel->fds[0],ZT_GET_PARAMS,&par) != -1)
11013,11015c11244,11249
< 			ast_indicate(chan,AST_CONTROL_RADIO_KEY);
< 			myrpt->remoterx = 1;
< 			remkeyed = 1;
---
> 			if (par.rxisoffhook)
> 			{
> 				ast_indicate(chan,AST_CONTROL_RADIO_KEY);
> 				myrpt->remoterx = 1;
> 				remkeyed = 1;
> 			}
11271c11505
< 					if (iskenwood_pci4)
---
> 					if ((iskenwood_pci4) && (myrpt->txchannel == myrpt->zaptxchannel))
11275c11509
< 						if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 						if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
11295c11529
< 			if (iskenwood_pci4)
---
> 			if ((iskenwood_pci4) && (myrpt->txchannel == myrpt->zaptxchannel))
11299c11533
< 				if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 				if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
11572c11806
< 	if (iskenwood_pci4)
---
> 	if ((iskenwood_pci4) && (myrpt->txchannel == myrpt->zaptxchannel))
11576c11810
< 		if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 		if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
11583c11817
< 		if (ioctl(myrpt->txchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
---
> 		if (ioctl(myrpt->zaptxchannel->fds[0],ZT_RADIO_SETPARAM,&z) == -1)
11589c11823
< 		if (ioctl(myrpt->txchannel->fds[0],ZT_HOOK,&i) == -1)
---
> 		if (ioctl(myrpt->zaptxchannel->fds[0],ZT_HOOK,&i) == -1)
Only in asterisk-1.4.11/apps: app_sayunixtime.o
Only in asterisk-1.4.11/apps: app_sayunixtime.so
Only in asterisk-1.4.11/apps: app_senddtmf.o
Only in asterisk-1.4.11/apps: app_senddtmf.so
Only in asterisk-1.4.11/apps: app_sendtext.o
Only in asterisk-1.4.11/apps: app_sendtext.so
Only in asterisk-1.4.11/apps: app_setcallerid.o
Only in asterisk-1.4.11/apps: app_setcallerid.so
Only in asterisk-1.4.11/apps: app_setcdruserfield.o
Only in asterisk-1.4.11/apps: app_setcdruserfield.so
Only in asterisk-1.4.11/apps: app_settransfercapability.o
Only in asterisk-1.4.11/apps: app_settransfercapability.so
Only in asterisk-1.4.11/apps: app_sms.o
Only in asterisk-1.4.11/apps: app_sms.so
Only in asterisk-1.4.11/apps: app_softhangup.o
Only in asterisk-1.4.11/apps: app_softhangup.so
Only in asterisk-1.4.11/apps: app_speech_utils.o
Only in asterisk-1.4.11/apps: app_speech_utils.so
Only in asterisk-1.4.11/apps: app_stack.o
Only in asterisk-1.4.11/apps: app_stack.so
diff -r asterisk-1.4.11/apps/app_system.c asterisk-1.4.13/apps/app_system.c
30c30
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 40722 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83179 $")
97a98,99
> 	ast_autoservice_start(chan);
> 
120a123,124
> 	ast_autoservice_stop(chan);
> 
Only in asterisk-1.4.11/apps: app_system.o
Only in asterisk-1.4.11/apps: app_system.so
Only in asterisk-1.4.11/apps: app_talkdetect.o
Only in asterisk-1.4.11/apps: app_talkdetect.so
Only in asterisk-1.4.11/apps: app_test.o
Only in asterisk-1.4.11/apps: app_test.so
Only in asterisk-1.4.11/apps: app_transfer.o
Only in asterisk-1.4.11/apps: app_transfer.so
Only in asterisk-1.4.11/apps: app_url.o
Only in asterisk-1.4.11/apps: app_url.so
Only in asterisk-1.4.11/apps: app_userevent.o
Only in asterisk-1.4.11/apps: app_userevent.so
Only in asterisk-1.4.11/apps: app_verbose.o
Only in asterisk-1.4.11/apps: app_verbose.so
diff -r asterisk-1.4.11/apps/app_voicemail.c asterisk-1.4.13/apps/app_voicemail.c
55c55
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80044 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 85276 $")
120d119
< static void display_body (BODY *body, char *pfx, long i);
133c132
< static int make_gsm_file(char *dest, char *imapuser, char *dir, int num);
---
> static int make_gsm_file(char *dest, size_t len, char *imapuser, char *dir, int num);
136c135
< static void imap_mailbox_name(char *spec, struct vm_state *vms, int box, int target);
---
> static void imap_mailbox_name(char *spec, size_t len, struct vm_state *vms, int box, int target);
866c865
< static int make_gsm_file(char *dest, char *imapuser, char *dir, int num)
---
> static int make_gsm_file(char *dest, size_t len, char *imapuser, char *dir, int num)
870c869
< 		return sprintf(dest, "%s/msg%04d", dir, num);
---
> 		return snprintf(dest, len, "%s/msg%04d", dir, num);
872,873c871
< 	/* return sprintf(dest, "%s/s/msg%04d", dir, imapuser, num); */
< 	return sprintf(dest, "%s/msg%04d", dir, num);
---
> 	return snprintf(dest, len, "%s/msg%04d", dir, num);
892c890
< 	sprintf (arg,"%lu",messageNum);
---
> 	snprintf (arg, sizeof(arg), "%lu",messageNum);
2052c2050,2052
< 	t = time(0);
---
> 
> 	time(&t);
> 
2053a2054
> 
2348c2349
< 		imap_mailbox_name(mailbox, vms, 0, 1);
---
> 		imap_mailbox_name(mailbox, sizeof(mailbox), vms, 0, 1);
2558c2559
< 	imap_mailbox_name(dest, destvms, imbox, 1);
---
> 	imap_mailbox_name(dest, sizeof(dest), destvms, imbox, 1);
3063a3065
> 				fclose(txt);
3199,3200c3201,3202
< 	sprintf(sequence,"%ld",vms->msgArray[msg]);
< 	imap_mailbox_name(dbox, vms, box, 1);
---
> 	snprintf(sequence, sizeof(sequence), "%ld", vms->msgArray[msg]);
> 	imap_mailbox_name(dbox, sizeof(dbox), vms, box, 1);
4004c4006
< 				sprintf(vmcontext, "%s||v", context ? context : "default");
---
> 				snprintf(vmcontext, sizeof(vmcontext), "%s||v", context ? context : "default");
4112c4114
< 				make_gsm_file(vms->fn, vms->imapuser, todir, vms->curmsg);
---
> 				make_gsm_file(vms->fn, sizeof(vms->fn), vms->imapuser, todir, vms->curmsg);
4419c4421
< 	make_gsm_file(vms->fn, vms->imapuser, todir, vms->curmsg);
---
> 	make_gsm_file(vms->fn, sizeof(vms->fn), vms->imapuser, todir, vms->curmsg);
4424c4426
< 	if (body->nested.part->next && body->nested.part->next->body.parameter->value) {
---
> 	if (body->nested.part && body->nested.part->next && body->nested.part->next->body.parameter->value) {
4621c4623
< static void imap_mailbox_name(char *spec, struct vm_state *vms, int box, int use_folder)
---
> static void imap_mailbox_name(char *spec, size_t len, struct vm_state *vms, int box, int use_folder)
4628c4630
< 		sprintf(vms->vmbox, "vm-%s", mbox(1));
---
> 		snprintf(vms->vmbox, sizeof(vms->vmbox), "vm-%s", mbox(1));
4649c4651
< 		sprintf(spec, "%s%s", tmp, use_folder? imapfolder: "INBOX");
---
> 		snprintf(spec, len, "%s%s", tmp, use_folder? imapfolder: "INBOX");
4651c4653
< 		sprintf(spec, "%s%s%c%s", tmp, imapfolder, delimiter, mbox(box));
---
> 		snprintf(spec, len, "%s%s%c%s", tmp, imapfolder, delimiter, mbox(box));
4658c4660
< 	char tmp[255];
---
> 	char tmp[256];
4679c4681
< 		imap_mailbox_name(tmp, vms, 0, 0);
---
> 		imap_mailbox_name(tmp, sizeof(tmp), vms, 0, 0);
4692c4694
< 	imap_mailbox_name(tmp, vms, box, 1);
---
> 	imap_mailbox_name(tmp, sizeof(tmp), vms, box, 1);
4721c4723
< 	imap_mailbox_name(dbox, vms, box, 1);
---
> 	imap_mailbox_name(dbox, sizeof(dbox), vms, box, 1);
8376,8430d8377
< /* MM display body
<  * Accepts: BODY structure pointer
<  *	    prefix string
<  *	    index
<  */
< static void display_body(BODY *body, char *pfx, long i)
< {
< 	char tmp[MAILTMPLEN];
< 	char *s = tmp;
< 	PARAMETER *par;
< 	PART *part;			/* multipart doesn't have a row to itself */
< 	if (body->type == TYPEMULTIPART) {
< 		/* if not first time, extend prefix */
< 		if (pfx)
< 			sprintf (tmp, "%s%ld.", pfx, ++i);
< 		else
< 			tmp[0] = '\0';
< 		for (i = 0, part = body->nested.part; part; part = part->next)
< 			display_body (&part->body, tmp, i++);
< 	} else {				/* non-multipart, output oneline descriptor */
< 		if (!pfx)
< 			pfx = "";		/* dummy prefix if top level */
< 		sprintf (s, " %s%ld %s", pfx, ++i, body_types[body->type]);
< 		if (body->subtype)
< 			sprintf (s += strlen (s), "/%s", body->subtype);
< 		if (body->description)
< 			sprintf (s += strlen (s), " (%s)", body->description);
< 		if ((par = body->parameter))
< 			do
< 				sprintf (s += strlen (s), ";%s=%s", par->attribute, par->value);
< 			while ((par = par->next));
< 		if (body->id)
< 			sprintf (s += strlen (s), ", id = %s", body->id);
< 		switch (body->type) {			/* bytes or lines depending upon body type */
< 			case TYPEMESSAGE:	/* encapsulated message */
< 			case TYPETEXT:		/* plain text */
< 				sprintf (s += strlen (s), " (%lu lines)", body->size.lines);
< 				break;
< 			default:
< 				sprintf (s += strlen (s), " (%lu bytes)", body->size.bytes);
< 				break;
< 		}
< 		/* ast_log (LOG_NOTICE,tmp);	output this line */
< 		/* encapsulated message? */
< 		if ((body->type == TYPEMESSAGE) && !strcmp (body->subtype, "RFC822") && (body = body->nested.msg->body)) {
< 			if (body->type == TYPEMULTIPART)
< 				display_body (body, pfx, i - 1);
< 			else {			/* build encapsulation prefix */
< 				sprintf (tmp, "%s%ld.", pfx, i);
< 				display_body (body, tmp, (long) 0);
< 			}
< 		}
< 	}
< }
< 
9023d8969
< 	display_body (body, NIL, (long) 0);
9026c8972
< 		sprintf(filename,"%s.%s", vms->fn, format);
---
> 		snprintf(filename, sizeof(filename), "%s.%s", vms->fn, format);
9037c8983
< 	sprintf(tmp, "{%s}", imapserver);
---
> 	snprintf(tmp, sizeof(tmp), "{%s}", imapserver);
Only in asterisk-1.4.11/apps: app_voicemail.o
Only in asterisk-1.4.11/apps: app_voicemail.so
Only in asterisk-1.4.11/apps: app_waitforring.o
Only in asterisk-1.4.11/apps: app_waitforring.so
Only in asterisk-1.4.11/apps: app_waitforsilence.o
Only in asterisk-1.4.11/apps: app_waitforsilence.so
Only in asterisk-1.4.11/apps: app_while.o
Only in asterisk-1.4.11/apps: app_while.so
diff -r asterisk-1.4.11/apps/app_zapateller.c asterisk-1.4.13/apps/app_zapateller.c
30c30
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 40722 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80878 $")
88c88
< 	if (chan->cid.cid_num && nocallerid) {
---
> 	if (!ast_strlen_zero(chan->cid.cid_num) && nocallerid) {
Only in asterisk-1.4.11/apps: app_zapateller.o
Only in asterisk-1.4.11/apps: app_zapateller.so
diff -r asterisk-1.4.11/build_tools/make_build_h asterisk-1.4.13/build_tools/make_build_h
6,10c6
< if [ `uname -s` = "SunOS" ]; then
<   USER=`/usr/xpg4/bin/id -un`
< else
<   USER=`id -un`
< fi
---
> USER=`${ID} -un`
diff -r asterisk-1.4.11/build_tools/make_buildopts_h asterisk-1.4.13/build_tools/make_buildopts_h
10c10
< TMP=`grep MENUSELECT_CFLAGS menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'`
---
> TMP=`${GREP} MENUSELECT_CFLAGS menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'`
14c14
< if grep AST_DEVMODE makeopts | grep -q yes
---
> if ${GREP} AST_DEVMODE makeopts | ${GREP} -q yes
diff -r asterisk-1.4.11/build_tools/make_defaults_h asterisk-1.4.13/build_tools/make_defaults_h
17c17
< #define AST_KEY_DIR    "${INSTALL_PATH}${ASTVARLIBDIR}/keys"
---
> #define AST_KEY_DIR    "${INSTALL_PATH}${ASTDATADIR}/keys"
diff -r asterisk-1.4.11/build_tools/make_version asterisk-1.4.13/build_tools/make_version
17c17
< 	echo SVN-'trunk'-r${REV}
---
> 	echo SVN-trunk-r${REV}
31c31,36
< 	  RESULT="${RESULT}-${PART}"
---
> 	  if [ -z ${RESULT} ]
> 	    then
> 	    RESULT="${PART}"
> 	  else
> 	    RESULT="${RESULT}-${PART}"
> 	  fi
37c42,47
< 	  RESULT="${RESULT}-${PART}"
---
> 	  if [ -z ${RESULT} ]
> 	    then
> 	    RESULT="${PART}"
> 	  else
> 	    RESULT="${RESULT}-${PART}"
> 	  fi
65c75
< 	echo SVN-${RESULT##-}-r${REV}${BASE:+-${BASE}}
---
> 	echo SVN-${RESULT}-r${REV}${BASE:+-${BASE}}
diff -r asterisk-1.4.11/build_tools/menuselect-deps asterisk-1.4.13/build_tools/menuselect-deps
28a29
> USB=0
diff -r asterisk-1.4.11/build_tools/menuselect-deps.in asterisk-1.4.13/build_tools/menuselect-deps.in
28a29
> USB=@PBX_USB@
diff -r asterisk-1.4.11/build_tools/mkpkgconfig asterisk-1.4.13/build_tools/mkpkgconfig
17c17
< if [[ `echo "xxx" | sed -r 's/x/y/g' 2>/dev/null | grep -c "yyy"` != 0 ]]; then
---
> if [[ `echo "xxx" | sed -r 's/x/y/g' 2>/dev/null | ${GREP} -c "yyy"` != 0 ]]; then
diff -r asterisk-1.4.11/build_tools/prep_moduledeps asterisk-1.4.13/build_tools/prep_moduledeps
4c4
< 	TDESC=`grep -e AST_MODULE_INFO ${1} | head -n 1 | cut -d '"' -f 2`
---
> 	TDESC=`${GREP} -e AST_MODULE_INFO ${1} | head -n 1 | cut -d '"' -f 2`
diff -r asterisk-1.4.11/build_tools/prep_tarball asterisk-1.4.13/build_tools/prep_tarball
9,10d8
< 
< make menuselect-tree
diff -r asterisk-1.4.11/build_tools/strip_nonapi asterisk-1.4.13/build_tools/strip_nonapi
18c18
< FILTER="grep -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_"
---
> FILTER="${GREP} -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_"
22c22
< 	nm ${1} | grep -e " T " | cut -d" " -f3 | ${FILTER} > striplist
---
> 	nm ${1} | ${GREP} -e " T " | cut -d" " -f3 | ${FILTER} > striplist
diff -r asterisk-1.4.11/cdr/cdr_csv.c asterisk-1.4.13/cdr/cdr_csv.c
33c33
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 69392 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82344 $")
49a50
> #include "asterisk/lock.h"
94,95c95,96
< static FILE *mf = NULL;
< 
---
> AST_MUTEX_DEFINE_STATIC(mf_lock);
> AST_MUTEX_DEFINE_STATIC(acf_lock);
268a270,271
> 
> 	ast_mutex_lock(&acf_lock);
270c273,275
< 	if (!f)
---
> 	if (!f) {
> 		ast_mutex_unlock(&acf_lock);
> 		ast_log(LOG_ERROR, "Unable to open file %s : %s\n", tmp, strerror(errno));
271a277
> 	}
274a281,282
> 	ast_mutex_unlock(&acf_lock);
> 
280a289
> 	FILE *mf = NULL;
293a303
> 		ast_mutex_lock(&mf_lock);
295,297d304
< 		if (!mf) {
< 			ast_log(LOG_ERROR, "Unable to re-open master file %s : %s\n", csvmaster, strerror(errno));
< 		}
302a310,313
> 			ast_mutex_unlock(&mf_lock);
> 		} else {
> 			ast_mutex_unlock(&mf_lock);
> 			ast_log(LOG_ERROR, "Unable to re-open master file %s : %s\n", csvmaster, strerror(errno));
303a315
> 
314,315d325
< 	if (mf)
< 		fclose(mf);
330,331d339
< 		if (mf)
< 			fclose(mf);
Only in asterisk-1.4.11/cdr: cdr_csv.o
Only in asterisk-1.4.11/cdr: cdr_csv.so
Only in asterisk-1.4.11/cdr: cdr_custom.o
Only in asterisk-1.4.11/cdr: cdr_custom.so
Only in asterisk-1.4.11/cdr: cdr_manager.o
Only in asterisk-1.4.11/cdr: cdr_manager.so
diff -r asterisk-1.4.11/ChangeLog asterisk-1.4.13/ChangeLog
0a1,1471
> 2007-10-10  Russell Bryant <russell@digium.com>
> 
> 	* Asterisk 1.4.13 released.
> 
> 2007-10-10 15:56 +0000 [r85316]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/file.h: I introduced a new member to the
> 	  ast_filestream struct in 1.4.12, but put it in the middle of the
> 	  struct, instead of at the end. One of the Debian folks, paravoid,
> 	  pointed out that this breaks binary compatability with modules
> 	  compiled against older headers. So, I'm moving the new member to
> 	  the end of the struct to resolve the situation.
> 
> 2007-10-10 15:51 +0000 [r85315]  Mark Michelson <mmichelson@digium.com>
> 
> 	* main/utils.c: The thread ID should be unsigned.
> 
> 2007-10-10 14:42 +0000 [r85277-85280]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: If devicestate is passed a port number strip
> 	  it out. (closes issue #10930) Reported by: ibc
> 
> 	* channels/chan_sip.c: Add support for handling a 182 Queued
> 	  response. (closes issue #10924) Reported by: ramonpeek Patches:
> 	  queued-182.diff uploaded by ramonpeek (license 266)
> 
> 2007-10-10 14:26 +0000 [r85276]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_voicemail.c: A bunch of changes from sprintf to
> 	  snprintf. See security advisory AST-2002-022
> 
> 2007-10-10 14:14 +0000 [r85242]  Joshua Colp <jcolp@digium.com>
> 
> 	* apps/app_voicemail.c: Close voicemail message description file if
> 	  duration did not meet the minimum, or else we will eventually run
> 	  out of file descriptors. (closes issue #10918) Reported by:
> 	  brak2718 Patches: vm1.4.12.1.patch uploaded by brak2718 (license
> 	  279)
> 
> 2007-10-10 06:24 +0000 [r85195]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* include/asterisk/frame.h: use a macro instead of an inline
> 	  function, so that backtraces will report the caller of
> 	  ast_frame_free() properly
> 
> 2007-10-09 21:55 +0000 [r85158]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/channel.c, main/utils.c, include/asterisk/lock.h: This
> 	  commit fixes the following issues: - Deadlock in ast_write (issue
> 	  #10406) - Deadlock in ast_read (issue #10406) - Possible mutex
> 	  initialization error in lock.h (issue #10571)
> 
> 2007-10-09 14:30 +0000 [r84990-85093]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: Don't perform a reinvite if a transfer is in
> 	  progress. (issue #10915) Reported by: ramonpeek
> 
> 	* main/rtp.c: Only update codec information if the channel has a
> 	  technology private structure. (issue #10915) Reported by:
> 	  ramonpeek
> 
> 	* main/rtp.c: Update codec information as well as address when
> 	  doing hold reinvites. (issue #10868) Reported by: mavince
> 
> 	* main/channel.c: Don't keep trying to native bridge if either of
> 	  the channels are involved in a masquerade operation to be done.
> 	  (closes issue #10696) Reported by: tbelder
> 
> 2007-10-08 03:28 +0000 [r84957]  Russell Bryant <russell@digium.com>
> 
> 	* Makefile.rules: Enable file dependency tracking for _all_ builds,
> 	  and not just for builds with dev-mode enabled. I have seen enough
> 	  problems caused by this that I don't think it's worth keeping. I
> 	  want to continue to encourage anybody that is interested to
> 	  continue to run Asterisk from svn. Furthermore, I do not want
> 	  their systems to break when we change a structure definition in a
> 	  header file. :)
> 
> 2007-10-07 16:15 +0000 [r84890-84902]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* res/res_jabber.c: Presence packets from a client who's connected
> 	  with our Jabber ID are valid, therefore, those clients must be
> 	  considered as buddies. The resource string helps us make the
> 	  distinction between clients. Closes issue #10707, reported by
> 	  yusufmotiwala.
> 
> 	* res/res_jabber.c: Prevent Asterisk from crashing when receiving a
> 	  presence packet without resource from a buddy that is known to
> 	  have a resource list. Revert a change I previously made, where
> 	  Asterisk could point to a freed memory location.
> 
> 2007-10-05 19:42 +0000 [r84851]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/db.c: Log exactly why we can't open the database, if we fail
> 	  (closes issue #10887)
> 
> 2007-10-05 18:55 +0000 [r84818]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/rtp.c: Update the remembered RTP peer information when
> 	  putting an endpoint on hold or taking it off hold so that the RTP
> 	  stack does not initiate a needless reinvite. (closes issue
> 	  #10868) Reported by: mavince
> 
> 2007-10-05 16:44 +0000 [r84783]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_zap.c: Do deadlock avoidance in a couple more
> 	  places. You can't lock two channels at the same time without
> 	  doing extra work to make sure it succeeds. (closes issue #10895,
> 	  patch by me)
> 
> 2007-10-05  Russell Bryant <russell@digium.com>
> 
> 	* Asterisk 1.4.12.1 released. (This is mainly to include the 
> 	  app_queue fix for a memory leak on reload, but includes a couple
> 	  of other bug fixes, as well.)
> 
> 2007-10-05 01:39 +0000 [r84742]  Russell Bryant <russell@digium.com>
> 
> 	* main/manager.c: Fix a copy/paste error in the description of
> 	  UpdateConfig that was pointed out by JerJer on #asterisk-dev
> 
> 2007-10-04 21:57 +0000 [r84692]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Don't allocate space for queue members unless
> 	  it's needed. You end up deleting dynamic members on a reload. Not
> 	  good. closes issue (#10879, reported by dazza76, patched by me)
> 
> 2007-10-04 21:36 +0000 [r84690]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_zap.c: callers of sig2str already add the word
> 	  'signalling' in the appropriate place, so don't duplicate it
> 
> 2007-10-04 14:51 +0000 [r84637]  Joshua Colp <jcolp@digium.com>
> 
> 	* apps/app_queue.c: Create a duplicate of the channel's member name
> 	  as the tab completion stuff will free it. (closes issue #10884)
> 	  Reported by: adamg
> 
> 2007-10-03 22:59 +0000 [r84581]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/rtp.c: When an RFC 2833 event is sent that we don't
> 	  recognize, ignore it, don't queue a NULL digit (closes issue
> 	  #10877)
> 
> 2007-10-03 18:20 +0000 [r84511-84544]  Steve Murphy <murf@digium.com>
> 
> 	* pbx/pbx_ael.c: closes issue #10870 ; where a CUT() function call
> 	  in a switch expr doesn't execute correctly, because the commas in
> 	  the function args are not converted to vertbars before the func
> 	  is called. I modified just the switch code to convert the commas
> 	  to vertbars if there, but if more of these sort of probs are
> 	  found, I may have to resort to something a little more
> 	  fundamental. We'll see, I guess.
> 
> 	* pbx/ael/ael-test/ref.ael-test8, pbx/ael/ael-test/ref.ael-test18,
> 	  pbx/ael/ael-test/ref.ael-vtest13,
> 	  pbx/ael/ael-test/ref.ael-vtest17,
> 	  pbx/ael/ael-test/ref.ael-ntest10, pbx/ael/ael-test/ref.ael-test1,
> 	  pbx/ael/ael-test/ref.ael-test3, pbx/pbx_ael.c,
> 	  pbx/ael/ael-test/ref.ael-test5: closes issue #10834 ; where a
> 	  null input to a switch statement results in a hangup; since
> 	  switch is implemented with extensions, and the default case is
> 	  implemented with a '.', and the '.' matches 1 or more remaining
> 	  characters, the case where 0 characters exist isn't matched, and
> 	  the extension isn't matched, and the goto fails, and a hangup
> 	  occurs. Now, when a default case is generated, it also generates
> 	  a single fixed extension that will match a null input. That
> 	  extension just does a goto to the default extension for that
> 	  switch. I played with an alternate solution, where I just tack an
> 	  extra char onto all the patterns and the goto, but not the
> 	  default case's pattern. Then even a null input will still have at
> 	  least one char in it. But it made me nervous, having that extra
> 	  char in , even if that's a pretty secret and low-level issue.
> 
> 2007-10-02  Russell Bryant <russell@digium.com>
> 
> 	* Asterisk 1.4.12 released.
> 
> 2007-10-02 20:06 +0000 [r84474]  Russell Bryant <russell@digium.com>
> 
> 	* Makefile, build_tools/prep_tarball: * Don't build the
> 	  menuselect-tree for the tarball, as it requires running the
> 	  configure script first * Change the Makefile to note that
> 	  menuselect-tree depends on the configure script.
> 
> 2007-10-02 19:01 +0000 [r84410-84437]  Jason Parker <jparker@digium.com>
> 
> 	* res/res_features.c: Fix some odd formatting I missed..
> 
> 	* res/res_features.c: Finish up on transferee channel before return
> 	  on failure. Issue 10821, patch by Ivan
> 
> 2007-10-02 14:12 +0000 [r84370]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_sip.c: Use snprintf instead of sprintf in one
> 	  place. There is no vulnerability here due to various buffer sizes
> 	  around the code, but I still didn't like seeing a non
> 	  length-limited copy of data coming off of the wire into a stack
> 	  buffer, as this would be a problem in the future if buffer sizes
> 	  elsewhere got changed or size limitations removed ...
> 
> 2007-10-02 09:48 +0000 [r84345]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/chan_misdn.c: terminate USERUSER String with 0
> 
> 2007-10-01 21:52 +0000 [r84291]  Jason Parker <jparker@digium.com>
> 
> 	* Makefile, Makefile.rules, channels/Makefile: Add dist-clean
> 	  support for subdirs. Change h323 to only remove the Makefile on a
> 	  dist-clean, rather than a clean. This fixes a bug I found with
> 	  trying to run make after a make clean
> 
> 2007-10-01 21:25 +0000 [r84274]  Dwayne M. Hubbard <dhubbard@digium.com>
> 
> 	* main/channel.c, main/manager.c, channels/chan_agent.c: moved
> 	  get_base_channel() code from action_redirect to
> 	  ast_channel_masquerade() for issue 7706 and BE-160
> 
> 2007-10-01 21:18 +0000 [r84273]  Steve Murphy <murf@digium.com>
> 
> 	* pbx/pbx_ael.c: Anything to keep gcc 4.2 happy...
> 
> 2007-10-01 21:07 +0000 [r84271]  Russell Bryant <russell@digium.com>
> 
> 	* main/utils.c, include/asterisk/lock.h: Fulfull a feature request
> 	  from Qwell on the "core show locks" output. It will now note the
> 	  lock type for each lock that a thread holds. (mutex, rdlock, or
> 	  wrlock)
> 
> 2007-10-01 20:27 +0000 [r84239]  Steve Murphy <murf@digium.com>
> 
> 	* pbx/ael/ael.tab.c, pbx/ael/ael.y, pbx/pbx_ael.c: closes issue
> 	  #10777 -- by returning a null for the parse tree when there's
> 	  really nothing there, and making sure we don't try to do checking
> 	  on a null tree.
> 
> 2007-10-01 19:56 +0000 [r84166-84236]  Russell Bryant <russell@digium.com>
> 
> 	* res/res_agi.c: Add another sanity check in the AGI read loop. We
> 	  really don't care about EAGAIN unless we didn't read an entire
> 	  line. If there is a newline at the end if the read buffer, break,
> 	  because we got the whole thing. (reported and patched by bmd)
> 
> 	* include/asterisk/lock.h: Show rwlocks in the "core show locks"
> 	  output. Before, it only showed mutexes.
> 
> 	* channels/Makefile: Remove another file in "make clean". (closes
> 	  issue #10814, paravoid)
> 
> 	* apps/app_dial.c: Simplify the CAN_EARLY_BRIDGE macro a bit.
> 
> 2007-10-01 14:10 +0000 [r84158-84163]  Joshua Colp <jcolp@digium.com>
> 
> 	* configs/usbradio.conf.sample (removed): Remove chan_usbradio
> 	  config file from tree, it is not present in here. (closes issue
> 	  #10839) Reported by: casper
> 
> 	* res/res_musiconhold.c: Fix randomness. save_pos was being set to
> 	  0 initially instead of -1, causing it to jump to position 0 when
> 	  moh started. (closes issue #10859) Reported by: jamesgolovich
> 	  Patches: asterisk-mohpos2.diff.txt uploaded by jamesgolovich
> 	  (license 176)
> 
> 	* apps/app_dial.c: Only attempt early bridging if the options given
> 	  to Dial() permit it. (closes issue #10861) Reported by: peekyb
> 
> 2007-09-30 20:02 +0000 [r84146]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/module.h: Fix the AST_MODULE_INFO macro for C++
> 	  modules. The load and reload parameters were in the wrong place.
> 	  (closes issue #10846, alebm)
> 
> 2007-09-29 23:00 +0000 [r84133-84135]  Steve Murphy <murf@digium.com>
> 
> 	* pbx/ael/ael-test/ael-ntest22/t1/a.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t1/b.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t1/c.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t2/d.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t2/e.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t2/f.ael (added),
> 	  pbx/ael/ael-test/ref.ael-test2, pbx/ael/ael-test/ref.ael-ntest22
> 	  (added), pbx/ael/ael-test/ael-ntest22/t3/g.ael (added),
> 	  pbx/ael/ael-test/ref.ael-test3,
> 	  pbx/ael/ael-test/ael-ntest22/t3/h.ael (added),
> 	  pbx/ael/ael-test/ref.ael-test4,
> 	  pbx/ael/ael-test/ael-ntest22/t3/i.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t3/j.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/qq.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22/t1 (added),
> 	  pbx/ael/ael-test/ael-ntest22/t2 (added),
> 	  pbx/ael/ael-test/ael-ntest22/t3 (added),
> 	  pbx/ael/ael-test/ael-ntest22/extensions.ael (added),
> 	  pbx/ael/ael-test/ael-ntest22 (added): This is a regression update
> 	  that matches what I did in 84134 for AEL regressions.
> 
> 	* pbx/ael/ael_lex.c, pbx/ael/ael.flex: This issue sort of closes
> 	  10786; All config files support #include with globbing (you know,
> 	  *,[chars],?,{list,list},etc), so I've updated the AEL system to
> 	  support this also.
> 
> 2007-09-28 14:13 +0000 [r84049-84078]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/say.c: Correct pronunciations of numbers for .nl (Closes
> 	  issue #10837)
> 
> 	* main/channel.c: Avoid a deadlock with ALL of the locks in the
> 	  masquerade function, not just the pairs of channels. (Closes
> 	  issue #10406)
> 
> 2007-09-27 23:12 +0000 [r84018]  Dwayne M. Hubbard <dhubbard@digium.com>
> 
> 	* main/manager.c, channels/chan_agent.c,
> 	  include/asterisk/channel.h: if an Agent is redirected, the base
> 	  channel should actually be redirected. This was causing multiple
> 	  issues, especially issue 7706 and BE-160
> 
> 2007-09-27 00:01 +0000 [r83976]  Russell Bryant <russell@digium.com>
> 
> 	* pbx/pbx_dundi.c: remove a todo item that has been completed
> 
> 2007-09-26 23:53 +0000 [r83974]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_alsa.c: avoid the weird usage of assert() in the
> 	  ALSA header files that gcc 4.2 wants to complain about
> 
> 2007-09-26 21:35 +0000 [r83910-83943]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_sip.c: I changed my mind ... I think this should be
> 	  a LOG_NOTICE.
> 
> 	* channels/chan_sip.c: Add a log message that was requested by the
> 	  masses in the developer tutorial session at Astricon. chan_sip
> 	  did not output any message when a call was rejected because the
> 	  extension was not found. This adds a verbose message (at verbose
> 	  level 3) to note when this happens.
> 
> 	* channels/chan_misdn.c: Fix building chan_misdn under dev-mode.
> 	  (please run the configure script with --enable-dev-mode so this
> 	  doesn't happen again ...)
> 
> 2007-09-26 18:35 +0000 [r83879]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* channels/chan_zap.c: Remove unused 4k of memory on the program
> 	  stack (closes issue #10827)
> 
> 2007-09-25 14:13 +0000 [r83637-83773]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/app.c: jmls pointed out that unsetting the group and setting
> 	  the group to the blank string aren't quite the same.
> 
> 	* build_tools/make_defaults_h: In the source, keys are relative to
> 	  the datadir, not varlib (which is the same in most cases, but
> 	  it's good to be accurate). Closes issue #10811
> 
> 	* doc/realtime.txt: Oops. Removed the unworkable workaround. This
> 	  note should never have been in the release.
> 
> 	* main/app.c: Making change to group splitting, as discussed on the
> 	  -dev list. The main effect of this will be to permit
> 	  Set(GROUP([cat])=), i.e. unsetting a group.
> 
> 2007-09-24 07:54 +0000 [r83620]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/chan_misdn.c: fixed round_robin group dial method, this
> 	  never worked well on BRI Ports (2 channels)
> 
> 2007-09-22 19:39 +0000 [r83558-83589]  Steve Murphy <murf@digium.com>
> 
> 	* pbx/pbx_ael.c: This closes issue #10788 -- The exact same fixes
> 	  are made here for the first arg in the for(arg1; arg2; arg3) {}
> 	  statement, as were done for the 3rd arg. It can now be an
> 	  assignment that will embedded in a Set() app, or a macro call, or
> 	  an app call.
> 
> 	* pbx/pbx_ael.c: This closes issue #10788 -- the 3rd arg in the for
> 	  statement is now wrapped in Set() only if there's an '=' in that
> 	  string. Otherwise, if it begins with '&', then a Macro call is
> 	  generated; otherwise it is made into an app call. A bit more
> 	  accomodating, keeps the new guys happy, and the guys with ael-1
> 	  code should be happy, too
> 
> 2007-09-21 14:37 +0000 [r83432]  Russell Bryant <russell@digium.com>
> 
> 	* main/rtp.c, channels/misdn_config.c, main/cdr.c, main/channel.c,
> 	  channels/chan_misdn.c, pbx/ael/ael.tab.c, main/ast_expr2f.c,
> 	  main/file.c, include/asterisk/sched.h, channels/chan_h323.c,
> 	  pbx/pbx_dundi.c, utils/ael_main.c, main/ast_expr2.fl,
> 	  channels/chan_mgcp.c, main/sched.c, res/res_config_pgsql.c,
> 	  main/dnsmgr.c, channels/chan_sip.c, pbx/ael/ael.y,
> 	  main/db1-ast/hash/hash.c, include/asterisk/channel.h,
> 	  channels/chan_iax2.c: gcc 4.2 has a new set of warnings dealing
> 	  with cosnt pointers. This set of changes gets all of Asterisk
> 	  (minus chan_alsa for now) to compile with gcc 4.2. (closes issue
> 	  #10774, patch from qwell)
> 
> 2007-09-21 13:34 +0000 [r83400]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: Fix video under certain circumstances. It
> 	  would have been possible for the formats on the channel to not
> 	  contain the video format. (closes issue #10782) Reported by:
> 	  cwhuang
> 
> 2007-09-20 21:16 +0000 [r83316-83348]  Russell Bryant <russell@digium.com>
> 
> 	* main/asterisk.c: When daemonizing, don't change working directory
> 	  to "/". It makes it not be able to do a core dump when not
> 	  running as uid=root. (closes issue #10766, xrg)
> 
> 	* contrib/scripts/safe_asterisk: Change safe_asterisk to explicitly
> 	  ask for /bin/bash, as it uses bashisms. (closes issue #10772,
> 	  reported by culrich)
> 
> 2007-09-20 17:09 +0000 [r83246]  Jason Parker <jparker@digium.com>
> 
> 	* apps/app_disa.c: If # is pressed after dialing an extension in
> 	  DISA, stop trying to collect more digits. (issue #10754) Reported
> 	  by: atis Patches: app_disa.c.branch.patch uploaded by atis
> 	  (license 242) app_disa.c.trunk.patch uploaded by atis (license
> 	  242)
> 
> 2007-09-20 16:25 +0000 [r83230-83232]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: Make sure the minimum T1 timer value is
> 	  obeyed in all cases. (closes issue #10768) Reported by: flefoll
> 	  Patches: chan_sip.c.trunk.83071.retrans-patch uploaded by flefoll
> 	  (license 244) chan_sip.c.br14.83070.retrans-patch uploaded by
> 	  flefoll (license 244)
> 
> 	* channels/chan_sip.c: Fix a minor spelling error. (closes issue
> 	  #10769) Reported by: flefoll Patches:
> 	  chan_sip.c.trunk.83071.inita-patch uploaded by flefoll (license
> 	  244) chan_sip.c.br14.83070.inita-patch uploaded by flefoll
> 	  (license 244)
> 
> 2007-09-19 19:50 +0000 [r83121-83179]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_system.c: The System() and TrySystem() applications can
> 	  take a substantial amount of time to execute while not servicing
> 	  the channel. So, put the channel in autoservice while the command
> 	  is being executed. (closes issue #10726, reported by mnicholson)
> 
> 	* funcs/func_curl.c: Using curl can take a substantial amount of
> 	  time, so the channel should be autoserviced while waiting for it
> 	  to complete. (closes issue #10725, reported by mnicholson)
> 
> 	* channels/chan_iax2.c: When handling a reload of chan_iax2, don't
> 	  use an ao2_callback() to POKE all peers. Instead, use an
> 	  iterator. By using an iterator, the peers container is not locked
> 	  while the POKE is being done. It can cause a deadlock if the
> 	  peers container is locked because poking a peer will try to lock
> 	  pvt structs, while there is a lot of other code that will hold a
> 	  pvt lock when trying to go lock the peers container. (reported to
> 	  me directly by Loic Didelot. Thank you for the debug info!)
> 
> 	* main/manager.c: Fix up another potential race condition. Do the
> 	  loop decrementing use count on events with the eventq protected
> 	  from being changed. (reported on IRC by Ivan)
> 
> 2007-09-19 13:47 +0000 [r83070-83074]  Joshua Colp <jcolp@digium.com>
> 
> 	* apps/app_queue.c: Protect the CDR record from modification by
> 	  pbx_exec so that the application data contains the Queue data.
> 	  (closes issue #10761) Reported by: snar Patches:
> 	  app-queue-mixmonitor.patch uploaded by snar (license 245)
> 
> 	* channels/chan_sip.c: (closes issue #10760) Reported by: dimas
> 	  Patches: chan_sip.patch uploaded by dimas (license 88) Read in
> 	  subscribecontext option in general to be the default.
> 
> 2007-09-19 09:32 +0000 [r83023-83024]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/chan_misdn.c: removed comment which violates the coding
> 	  guidelines.
> 
> 	* channels/misdn_config.c, channels/chan_misdn.c,
> 	  channels/misdn/chan_misdn_config.h: added 'astdtmf' option to
> 	  allow configuring the asterisk dtmf detector instead of the
> 	  mISDN_dsp ones. also added the patch from irroot #10190, so that
> 	  dtmf tones detected by the asterisk detector are passed outofband
> 	  to asterisk, to make any use of dtmf tones at all.
> 
> 2007-09-19 00:19 +0000 [r82992]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_flash.c: Change the description of app_flash to note how
> 	  it can be a useful tool instead of just saying that it is
> 	  generally a worthless feature. (Thanks to Jim Van Meggelen for
> 	  pointing it out and providing the proposed text)
> 
> 2007-09-18 23:41 +0000 [r82961]  Joshua Colp <jcolp@digium.com>
> 
> 	* apps/app_queue.c: Initialize a variable to NULL to make the world
> 	  happy.
> 
> 2007-09-18 22:42 +0000 [r82929]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/agi.h, res/res_agi.c: Add a new patch to handle
> 	  interrupting the fgets() call when using FastAGI. This version of
> 	  the patch maintains the original behavior of the code when not
> 	  using FastAGI. (closes issue #10553) Reported by: juggie Patches:
> 	  res_agi_fgets-4.patch uploaded by juggie (license 24)
> 	  res_agi_fgets_1.4svn.patch uploaded by juggie (license 24) Slight
> 	  mods by me Tested by: juggie, festr
> 
> 2007-09-18 21:49 +0000 [r82887-82913]  Doug Bailey <dbailey@digium.com>
> 
> 	* main/manager.c: Corrected patch applied in revision r82887.
> 
> 	* main/manager.c: Fixed a bug where http manager sessions prevented
> 	  the eventq from being cleaned out because http manager sessions
> 	  do not have a valid file descriptor.
> 
> 2007-09-18 20:56 +0000 [r82867]  Russell Bryant <russell@digium.com>
> 
> 	* main/manager.c: Fix a memory leak that can occur on systems under
> 	  higher load. The issue is that when events are appended to the
> 	  master event queue, they use the number of active sessions as a
> 	  use count so it will know when all active sessions at the time
> 	  the event happened have consumed it. However, the handling of the
> 	  number of sessions was not properly synchronized, so the use
> 	  count was not always correct, causing an event to disappear
> 	  early, or get stuck in the event queue for forever. (closes issue
> 	  #9238, reported by bweschke, patch from Ivan, modified by me)
> 
> 2007-09-18 20:09 +0000 [r82865]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Moving the logic for handling an empty
> 	  membername to the create_member function so that there is a
> 	  common place where this occurs instead of being spread out to
> 	  several different places.
> 
> 2007-09-18 18:59 +0000 [r82834]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* apps/app_queue.c: there is no need for conditional logic to
> 	  select ->interface or ->membername, snince ->membername will
> 	  always be populated
> 
> 2007-09-18 16:31 +0000 [r82802]  Russell Bryant <russell@digium.com>
> 
> 	* pbx/pbx_dundi.c: When copying the contents from the wildcard
> 	  peer, do a deep copy instead of shallow copy so that it doesn't
> 	  crash when beging destroyed. (closes issue #10546, patch by me)
> 
> 2007-09-18 15:28 +0000 [r82751]  Jason Parker <jparker@digium.com>
> 
> 	* configs/sip.conf.sample: Correct the allowexternaldomains option
> 	  in SIP sample config. Issue 10753
> 
> 2007-09-17 20:16 +0000 [r82594-82676]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_voicemail.c, main/stdtime/localtime.c: Put a memset in
> 	  ast_localtime() instead of a couple places in app_voicemail to
> 	  prevent the problem everywhere instead of just a couple of
> 	  places. (related to issue #10746)
> 
> 	* apps/app_voicemail.c: Initialize some memory to fix crashes when
> 	  leaving voicemail. This problem was fixed by running Asterisk
> 	  under valgrind. (closes issue #10746, reported by arcivanov,
> 	  patched by me) *** IMPORTANT NOTE: We need to check to see if
> 	  this same bug exists elsewhere.
> 
> 	* res/res_features.c: Handle the case where there are multiple
> 	  dynamic features with the same digit mapping, but won't always
> 	  match the activated on/by access controls. In that case, the code
> 	  needs to keep trying features for a match. (reported by Atis on
> 	  the asterisk-dev list, patched by me)
> 
> 2007-09-17 16:40 +0000 [r82590-82592]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_iax2.c: revert a change that wasn't supposed to be
> 	  committed... doh!
> 
> 	* apps/app_queue.c, channels/chan_iax2.c: fix a couple of places
> 	  where a logical member name (if specified) was not used, but
> 	  instead the direct interface was listed
> 
> 2007-09-17 02:00 +0000 [r82514]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/pbx.c: (closes issue #10734) Reported by: asgaroth Instead
> 	  of passing a NULL pointer into snprintf pass "". It makes Solaris
> 	  much happier.
> 
> 2007-09-14 21:19 +0000 [r82444]  Steve Murphy <murf@digium.com>
> 
> 	* main/cdr.c: closes issue #10668; thanks to arkadia for his patch;
> 	  had to leave out the bit about ending the previous cdr in the
> 	  fork; it would destroy current implementations.
> 
> 2007-09-14 21:17 +0000 [r82435]  Russell Bryant <russell@digium.com>
> 
> 	* configs/zapata.conf.sample: Add a note to help clarify the value
> 	  set with the echocancel option. (inspired by Malcolm's blog post
> 	  on blogs.digium.com about HPEC)
> 
> 2007-09-14 18:35 +0000 [r82396-82398]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Crap, I broke the build. Fixed.
> 
> 	* apps/app_queue.c: Adding member name field to manager events
> 	  where they were missing before (closes issue #10721, reported by
> 	  snar)
> 
> 2007-09-14 17:48 +0000 [r82394]  Jason Parker <jparker@digium.com>
> 
> 	* channels/chan_zap.c: If a channel does not have an owner, do not
> 	  try to set a channel variable. This will end up making the
> 	  channel variable global, which is not right. Closes issue #10720,
> 	  patch by flefoll.
> 
> 2007-09-14 15:50 +0000 [r82382-82385]  Russell Bryant <russell@digium.com>
> 
> 	* build_tools/menuselect-deps.in, configure,
> 	  include/asterisk/autoconfig.h.in, configure.ac, makeopts.in: Add
> 	  checking for libusb here, so nobody has to deal with conflicts in
> 	  the chan_usbradio-1.4 branch every time the configure script gets
> 	  changed
> 
> 	* channels/chan_usbradio.c (removed), channels/xpmr (removed),
> 	  channels/Makefile: Remove chan_usbradio from the main 1.4 branch.
> 	  It can't live here because we have a strict policy to not include
> 	  new features in release branches. However, I'm going to merge it
> 	  into trunk, and I also have a special 1.4 based branch that
> 	  includes this module. svn co
> 	  http://svn.digium.com/svn/asterisk/team/jdixon/chan_usbradio-1.4
> 
> 2007-09-14 14:42 +0000 [r82376]  Mark Michelson <mmichelson@digium.com>
> 
> 	* doc/CODING-GUIDELINES: Fixing a typo in the coding guidelines
> 	  (closes issue #10717, reported and patched by leedm777)
> 
> 2007-09-14 01:24 +0000 [r82368]  Jim Dixon <telesistant@hotmail.com>
> 
> 	* apps/app_rpt.c: Fixed problem with changes made to cdr
> 	  functionality
> 
> 2007-09-14 00:52 +0000 [r82367]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_usbradio.c: this new driver may not live in this
> 	  branch for long (since it is a new feature), but it definitely
> 	  should not be built by default
> 
> 2007-09-14 00:34 +0000 [r82366]  Jim Dixon <telesistant@hotmail.com>
> 
> 	* apps/app_rpt.c, channels/xpmr/xpmr_coef.h (added),
> 	  channels/chan_usbradio.c (added), channels/xpmr/xpmr.h (added),
> 	  channels/xpmr (added), channels/xpmr/LICENSE (added),
> 	  channels/xpmr/sinetabx.h (added), configs/usbradio.conf.sample
> 	  (added), channels/Makefile, channels/xpmr/xpmr.c (added): Added
> 	  channel driver for USB Radio device and support thereof.
> 
> 2007-09-13 23:11 +0000 [r82358]  Jason Parker <jparker@digium.com>
> 
> 	* pbx/pbx_spool.c: Fix a small typo. retrytime > waittime
> 
> 2007-09-13 20:16 +0000 [r82346]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Preemptively fixing a possible segfault. It is
> 	  possible that queuename is NULL (meaning pause ALL queues), so
> 	  use q->name instead.
> 
> 2007-09-13 20:11 +0000 [r82344]  Jason Parker <jparker@digium.com>
> 
> 	* cdr/cdr_csv.c: Fix a crash that could occur in cdr_csv when
> 	  mutliple threads tried to close the same file. Do we actually
> 	  need the locking here? What happens if you open the same file
> 	  twice, and two threads try to write to it at the same time? Is
> 	  fputs() going to write out the entire line at once? I suspect
> 	  that it could be possible for the second fopen to run during the
> 	  first fputs, so the position could be in the middle of the
> 	  previously written line... Issue 10347, initial patch by
> 	  explidous (but I removed all of the paranoia stuff..)
> 
> 2007-09-13 18:57 +0000 [r82337-82339]  Russell Bryant <russell@digium.com>
> 
> 	* main/astobj2.c: resolve a warning when not building under dev
> 	  mode
> 
> 	* main/astobj2.c, main/asterisk.c, include/asterisk.h: Only compile
> 	  in tracking astobj2 statistics if dev-mode is enabled. Also, when
> 	  dev mode is enabled, register the CLI command that can be used to
> 	  run the astobj2 test and print out statistics.
> 
> 2007-09-13 18:12 +0000 [r82335]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* /, LICENSE: Merged revisions 82334 via svnmerge from
> 	  https://origsvn.digium.com/svn/asterisk/branches/1.2 ........
> 	  r82334 | kpfleming | 2007-09-13 11:10:12 -0700 (Thu, 13 Sep 2007)
> 	  | 2 lines clarify the OpenSSL and OpenH323 license exceptions
> 	  ........
> 
> 2007-09-13 16:25 +0000 [r82326]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Added logic to handle the unlikely case that
> 	  someone has two queues with the same name. Asterisk will log a
> 	  warning message letting the user know that one was already
> 	  defined with that name and is it skipping all further instances.
> 	  This also will work for realtime queues but in order for that to
> 	  happen, the user would have to trigger a perfectly timed reload
> 	  as a realtime queue is being looked up, which is highly unlikely
> 	  (but taken care of nonetheless).
> 
> 2007-09-13 11:47 +0000 [r82309]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* channels/chan_gtalk.c: Closes issue #9401, reported and patched
> 	  by irrot, with slight modifications by me. Handle DTMF sent by
> 	  Asterisk properly.
> 
> 2007-09-12 21:56 +0000 [r82296]  Russell Bryant <russell@digium.com>
> 
> 	* res/res_agi.c: Fix a check of the wrong pointer, as pointed out
> 	  by an XXX comment left in the code. The problem was harmless,
> 	  however.
> 
> 2007-09-12 21:28 +0000 [r82291]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/stdtime/tzfile.h: Oops, wrong location for FreeBSD zone
> 	  files
> 
> 2007-09-12 20:24 +0000 [r82286]  Dwayne M. Hubbard <dhubbard@digium.com>
> 
> 	* apps/app_meetme.c: remove a race condition for the creation of
> 	  recordthread's, and fix a small memory leak. This closes issue#
> 	  10636
> 
> 2007-09-12 20:12 +0000 [r82285]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/stdtime/private.h, main/stdtime/tzfile.h,
> 	  include/asterisk/localtime.h, main/stdtime/localtime.c: Working
> 	  on issue #10531 exposed a rather nasty 64-bit issue on
> 	  ast_mktime, so we updated the localtime.c file from source. Next
> 	  we'll have to write ast_strptime to match.
> 
> 2007-09-12 15:16 +0000 [r82278-82280]  Russell Bryant <russell@digium.com>
> 
> 	* main/asterisk.c: Clean up the output of "asterisk -h". This
> 	  tweaks the wording and wraps lines at 80 characters. (closes
> 	  issue #10699, seanbright)
> 
> 	* res/res_agi.c: revert patch from issue #10553, as someone not
> 	  using fastagi reported that this broke their system.
> 
> 2007-09-12 14:30 +0000 [r82274-82276]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_voicemail.c: Accidentally committed changes to
> 	  app_voicemail which do NOT need to be in the 1.4 branch yet.
> 	  reverting...
> 
> 	* apps/app_voicemail.c, apps/app_queue.c: We should only initialize
> 	  a realtime queue when it is allocated, not every time we access
> 	  it. This prevents the members ao2_container from being
> 	  reallocated every time the queue is accessed. I also removed a
> 	  debug message I had accidentally left in on a previous commit.
> 
> 2007-09-11 22:37 +0000 [r82267]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_queue.c: Fix incorrect uses of ao2_find(). Every one of
> 	  these calls was reading bogus memory ...
> 
> 2007-09-11 21:41 +0000 [r82265]  Joshua Colp <jcolp@digium.com>
> 
> 	* codecs/gsm/src/lpc.c, codecs/gsm/src/long_term.c: (closes issue
> 	  #10679) Reported by: andrew Build under dev mode when K6OPTS is
> 	  enabled.
> 
> 2007-09-11 20:49 +0000 [r82263]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_queue.c: Fix another missing unref of member objects.
> 	  This one was pointed out by Marta. When building the outgoing
> 	  list in try_calling(), a member reference is stored in each
> 	  outgoing entry. However, when this list got destroyed, the
> 	  reference was not released.
> 
> 2007-09-11 20:36 +0000 [r82261]  Steve Murphy <murf@digium.com>
> 
> 	* main/cdr.c: this change should fix issue # 10659 -- what I worry
> 	  about is how many other bug reports it may generate. Hopefully,
> 	  we can please the/a majority. Hopefully. We shall see. Calls not
> 	  marked ANSWERED and with only one channel name will not be
> 	  posted. This should eliminate the double CDR's.
> 
> 2007-09-11 16:05 +0000 [r82252]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: All instances of ao2_iterators which were just
> 	  named 'i' have been renamed to 'mem_iter' so that when refcounted
> 	  queues are merged into trunk, there will be little confusion
> 	  regarding iterator names, especially when a queue and member
> 	  iterator are used in the same function.
> 
> 2007-09-11 16:03 +0000 [r82250]  Russell Bryant <russell@digium.com>
> 
> 	* pbx/pbx_dundi.c: The sample dundi.conf claims support for a
> 	  wildcard peer entry - [*], but the code did not support it. This
> 	  patch makes it work. (closes issue #10546, patch by dds, with
> 	  some changes by me)
> 
> 2007-09-11 16:01 +0000 [r82249]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/misdn/isdn_lib.c, channels/chan_misdn.c: fixed a
> 	  hold/retrieve issue.
> 
> 2007-09-11 15:26 +0000 [r82245]  Russell Bryant <russell@digium.com>
> 
> 	* res/res_agi.c: (closes issue #10553) Reported by: juggie Patches:
> 	  res_agi_fgets-2.patch uploaded by juggie (license 24) Tested by:
> 	  juggie When using fastagi, fgets() can return before a full line
> 	  is read. Add explicit handling for the case where it gets
> 	  interrupted.
> 
> 2007-09-11 14:56 +0000 [r82243]  Joshua Colp <jcolp@digium.com>
> 
> 	* pbx/pbx_dundi.c: (closes issue #10577) Reported by: jamesgolovich
> 	  Patches: asterisk-dundifree.diff.txt uploaded by jamesgolovich
> 	  (license 176) Don't leak memory when unloading DUNDi.
> 
> 2007-09-11 14:34 +0000 [r82198-82240]  Russell Bryant <russell@digium.com>
> 
> 	* apps/app_queue.c: Add a couple more missing unrefs of queue
> 	  member objects
> 
> 	* apps/app_queue.c: Add a missing unref of a queue member in an
> 	  error handling block
> 
> 	* apps/app_queue.c: Document why membercount can not simply be
> 	  replaced by ao2_container_count()
> 
> 	* main/astobj2.c: backport astobj2 race condition fix. This
> 	  function is the exact same as trunk so it applies here as well.
> 
> 2007-09-10 18:02 +0000 [r82155]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* apps/app_queue.c: Convert struct member to use refcounts (closes
> 	  issue #10199)
> 
> 2007-09-10 15:02 +0000 [r82091]  Mark Michelson <mmichelson@digium.com>
> 
> 	* configs/misdn.conf.sample: Removing non-existent options from
> 	  misdn configuration sample. (closes issue #10678, reported and
> 	  patched by IgorG)
> 
> 2007-09-09 02:35 +0000 [r82028]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* include/asterisk/lock.h: Fix inline compiles on really old
> 	  compilers (who uses gcc 2.7 anymore, really?)
> 
> 2007-09-08 18:41 +0000 [r81952-81997]  Russell Bryant <russell@digium.com>
> 
> 	* main/asterisk.c: Fix a small memory leak. ast_unregister_atexit()
> 	  did not free the entry it removed.
> 
> 	* .cleancount: (closes issue #10672) Bump the cleancount so that a
> 	  "make clean" will be forced. This is needed because my fix in
> 	  revision 81599 made a change to a data structure in file.h, and
> 	  since file dependency tracking is only on with dev-mode enabled,
> 	  file format modules that don't get rebuilt may crash, as is the
> 	  case with this issue. This makes me wonder - how much faster does
> 	  the code build without the file dependency tracking enabled? If
> 	  it doesn't make much of a difference, then it may be worth just
> 	  keeping it on all of the time, or perhaps just not in release
> 	  tarballs, so that this type of issue is avoided.
> 
> 2007-09-07 19:48 +0000 [r81923]  Jason Parker <jparker@digium.com>
> 
> 	* apps/app_queue.c: Allow the MEMBERINTERFACE variable to be used
> 	  as the mixmonitor filename. This moves the setting of the
> 	  MEMBERINTERFACE variable to before mixmonitor. Issue 10671, patch
> 	  by sim.
> 
> 2007-09-07 15:25 +0000 [r81886]  Mark Michelson <mmichelson@digium.com>
> 
> 	* configs/queues.conf.sample: Moving the explanation for joinempty
> 	  to a more appropriate place
> 
> 2007-09-06 22:28 +0000 [r81832]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_sip.c: (closes issue #9724, closes issue #10374)
> 	  Reported by: kenw Patches: 9724.txt uploaded by russell (license
> 	  2) Tested by: kenw, russell Resolve a deadlock that occurs when
> 	  doing a SIP transfer to parking. I come across this type of
> 	  deadlock fairly often it seems. It is very important to mind the
> 	  boundary between the channel driver and the core in respect to
> 	  the channel lock and the channel-pvt lock. Channel drivers lock
> 	  to lock the pvt and then the channel once it calls into the core,
> 	  while the core will do it in the opposite order. The way this is
> 	  avoided is by having channel drivers either release their pvt
> 	  lock while calling into the core, or such as in this case,
> 	  unlocking the pvt just long enough to acquire the channel lock.
> 
> 2007-09-06 22:05 +0000 [r81778-81826]  Jason Parker <jparker@digium.com>
> 
> 	* Makefile: We added COPTS for ASTCFLAGS additions, but not LDOPTS
> 	  for ASTLDFLAGS. This adds LDOPTS
> 
> 	* include/asterisk/astobj2.h: This should fix a build issue that
> 	  people building against uClibc were seeing with the addition of
> 	  astobj2
> 
> 2007-09-06 19:40 +0000 [r81776]  Joshua Colp <jcolp@digium.com>
> 
> 	* apps/app_meetme.c: (closes issue #10122) Reported by:
> 	  stevefeinstein Patches: meetme-unmute-manager.diff uploaded by
> 	  qwell (license 4) Tested by: stevefeinstein After looking over
> 	  the code I agree with Qwell. Setting the file descriptor to
> 	  conference each time just causes a fight back and forth.
> 
> 2007-09-06 16:56 +0000 [r81743]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* include/asterisk/jabber.h, channels/chan_gtalk.c: Various string
> 	  length fixes. Removed an unused variable in aji_client structure
> 	  (context)
> 
> 2007-09-06 16:25 +0000 [r81682-81713]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Fixes an issue where valid DTMF had to be
> 	  pressed twice to exit a queue if a member's phone was ringing.
> 	  (closes issue #10655, reported by strider2k, patched by me)
> 
> 	* res/res_features.c: Fixes a memory leak (closes issue #10658,
> 	  reported and patched by Ivan)
> 
> 2007-09-06 14:20 +0000 [r81650]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* res/res_jabber.c: According to both RFC 3920 - section 9.1.2 -
> 	  and Google's XMPP server complaint, if set, the 'from' attribute
> 	  must be set to the user's full JID.
> 
> 2007-09-05 20:53 +0000 [r81599]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/file.h, main/say.c, res/res_features.c,
> 	  main/file.c, include/asterisk/channel.h: Fix an issue that can
> 	  occur when you do an attended transfer to parking. If you
> 	  complete the transfer before the announcement of the parking spot
> 	  finishes, then the channel being parked will hear the remainder
> 	  of the announcement. These changes make it so that will not
> 	  happen anymore. Basically, res_features sets a flag on the
> 	  channel is playing the announcement to so that the file streaming
> 	  core knows that it needs to watch out for a channel masquerade,
> 	  and if it occurs, to abort the announcement. (closes BE-182)
> 
> 2007-09-05 17:18 +0000 [r81569]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* include/asterisk/lock.h: Solaris x86 compatibility fix
> 
> 2007-09-05 15:19 +0000 [r81525]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Fixing the build...
> 
> 2007-09-05 15:14 +0000 [r81523]  Jason Parker <jparker@digium.com>
> 
> 	* channels/chan_phone.c: Do not try to unregister a NULL channel
> 	  tech. Also changed load_module function to use defines rather
> 	  than numbers for return values. Issue 10651, patch by
> 	  rbraun_proformatique, with additions by me.
> 
> 2007-09-05 15:03 +0000 [r81520]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Reverting behavior of QUEUE_MEMBER_COUNT to
> 	  only count members who are logged in and available. (related to
> 	  issue #10652, reported by wuwu)
> 
> 2007-09-05 13:11 +0000 [r81492]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/channel.c: (closes issue #10650) Reported by: tacvbo Only
> 	  print out that the spy was removed while holding the spy lock.
> 
> 2007-09-04 20:54 +0000 [r81453-81455]  Jason Parker <jparker@digium.com>
> 
> 	* apps/app_followme.c: Rather than attempt to play a file, we can
> 	  just check whether it exists. Issue 10634, patch by me, testing
> 	  by pabelanger, sanity checked by bweschke
> 
> 	* configs/followme.conf.sample: Change default followme config file
> 	  to point to the correct files. Issue 10644, patch by pabelanger
> 
> 2007-09-04 18:37 +0000 [r81448]  Russell Bryant <russell@digium.com>
> 
> 	* main/astobj2.c, include/asterisk/astobj2.h, channels/chan_iax2.c:
> 	  Remove the typedefs on ao2_container and ao2_iterator. This is
> 	  simply because we don't typedef objects anywhere else in
> 	  Asterisk, so we might as well make this follow the same
> 	  convention.
> 
> 2007-09-04 16:40 +0000 [r81442]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_sip.c: there is no point in sending 401
> 	  Unauthorized to a UAS that sent us a properly-formatted
> 	  Authentication header with the expected username and nonce but an
> 	  incorrect response (which indicates the shared secret does not
> 	  match)... instead, let's send 403 Forbidden so that the UAS
> 	  doesn't retry with the same authentication credentials repeatedly
> 
> 2007-09-04 14:23 +0000 [r81435-81439]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_iax2.c: (closes issue #10632) Reported by:
> 	  jamesgolovich Patches: asterisk-iaxfirmwareleak.diff.txt uploaded
> 	  by jamesgolovich (license 176) Fix memory leak when unloading
> 	  chan_iax2. The firmware files were not being freed.
> 
> 	* main/channel.c: (closes issue #10476) Reported by: mdu113 Only
> 	  look for the end of a digit when waiting for a digit. This in
> 	  turn disables emulation in the core.
> 
> 	* main/dns.c: (closes issue #10610) Reported by: john Patches:
> 	  dns.c.patch uploaded by john (license 218) Tested by: mvanbaak
> 	  Don't return a match if no SRV record actually exists.
> 
> 2007-09-03 18:57 +0000 [r81433]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: Remove a couple of calls to
> 	  ast_string_field_free_pools() on peers in error handling blocks
> 	  in the code for building peers. The peer object destructor does
> 	  this and doing it twice will cause a crash. (closes issue #10625,
> 	  reported by and patched by pnlarsson)
> 
> 2007-09-01 15:57 +0000 [r81426-81428]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Changed a comment to be more accurate. (really
> 	  this is just a test to make sure I can commit properly from home)
> 
> 	* main/astobj2.c, include/asterisk/astobj2.h: Making match_by_addr
> 	  into ao2_match_by_addr and making it available everywhere since
> 	  it could be a handy callback to have
> 
> 2007-08-31 21:27 +0000 [r81418]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/astobj2.h: Remove references to a debugging
> 	  parameter that does not exist
> 
> 2007-08-31 19:48 +0000 [r81416]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Fixed broken behavior of a reload on realtime
> 	  queues. Prior to this patch, if a reload was issued and a
> 	  realtime queue had callers waiting in it, then the queue would be
> 	  removed from the queue list, but it would not actually be freed
> 	  (in fact, a debug message warning about a memory leak would come
> 	  up). With this patch, reloads do not touch realtime queues at
> 	  all.
> 
> 2007-08-31 19:16 +0000 [r81415]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* funcs/func_logic.c: The IF() function was not allowing true
> 	  values that had embedded colons (closes issue #10613)
> 
> 2007-08-31 18:44 +0000 [r81412]  Jason Parker <jparker@digium.com>
> 
> 	* apps/app_dial.c: Re-order dial options to be in line with the
> 	  existing alpha order. Issue 10621, initial patch by junky
> 
> 2007-08-31 17:38 +0000 [r81410]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* channels/chan_gtalk.c: Make the 'gtalk show channels' CLI command
> 	  available. Closes issue 10548, reported by keepitcool.
> 
> 2007-08-31 15:53 +0000 [r81406]  Joshua Colp <jcolp@digium.com>
> 
> 	* res/res_speech.c: Make it the engine's responsible to check for
> 	  the presence of results.
> 
> 2007-08-31 15:51 +0000 [r81405]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* codecs/codec_zap.c: add missing "transcoder show" (and deprecated
> 	  "show transcoder") CLI commands that were in 1.2 but never added
> 	  to 1.4
> 
> 2007-08-31 14:38 +0000 [r81401-81403]  Joshua Colp <jcolp@digium.com>
> 
> 	* res/res_features.c: (closes issue #10618) Reported by: dimas
> 	  Don't pass through the stopped sounds frame.... just drop it.
> 
> 	* res/res_features.c: (closes issue #10009) Reported by: dimas
> 	  Don't output a bridge failed warning message if it failed because
> 	  one of the channels was part of the masquerade process. That is
> 	  perfectly normal.
> 
> 2007-08-30 22:05 +0000 [r81397]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Removing an extraneous (and possibly
> 	  misleading) log message. Firstly, if the announce file isn't
> 	  found, the streaming functions will report it. Secondly, not all
> 	  non-zero returns from play_file mean that the announce file
> 	  wasn't found. Positive return values simply mean that a digit was
> 	  pressed (most likely to skip through the announcement). (closes
> 	  issue #10612, reported and patched by dimas)
> 
> 2007-08-30 21:23 +0000 [r81395]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: (closes issue #10514) Reported by: casper
> 	  Patches: chan_sip.c.80129.diff uploaded by casper (license 55)
> 	  Remove needless check for AUTH_UNKNOWN_DOMAIN. It was impossible
> 	  for it to ever be that value.
> 
> 2007-08-30 21:11 +0000 [r81392]  Steve Murphy <murf@digium.com>
> 
> 	* main/cdr.c: via issue 10599, where 'CDR already initialized'
> 	  messages are being generated. Since all channels will have an
> 	  init'd CDR attached at creation time, this message is now
> 	  particularly useless. Removed.
> 
> 2007-08-30 15:38 +0000 [r81383]  Russell Bryant <russell@digium.com>
> 
> 	* channels/h323/ast_h323.cxx: Add missing checks for the PTRACING
> 	  define. (closes issue #10559, paravoid)
> 
> 2007-08-30 15:35 +0000 [r81381]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Changed some manager event messages to reflect
> 	  whether a queue member is a realtime member or not
> 
> 2007-08-30 15:33 +0000 [r81379]  Russell Bryant <russell@digium.com>
> 
> 	* configs/modem.conf.sample (removed), configs/enum.conf.sample,
> 	  configs/extensions.ael.sample: Fix a typo, update a reload
> 	  command, and remove an unused configuration file. (closes issue
> 	  #10606, casper)
> 
> 2007-08-30 14:53 +0000 [r81375]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/pbx.c: (closes issue #10603) Reported by: jmls Patches:
> 	  pbx.diff uploaded by jmls (license 141) Backport changes from
> 	  81372. Add REASON dialplan variable for when an originated call
> 	  fails and the failed extension is executed.
> 
> 2007-08-30 14:43 +0000 [r81373]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/chan_misdn.c: Fixed some warnings.
> 
> 2007-08-30 14:23 +0000 [r81369]  Joshua Colp <jcolp@digium.com>
> 
> 	* res/res_features.c: (issue #10599) Reported by: dimas Handle the
> 	  -1 control subclass during feature dialing (it indicates to stop
> 	  sounds).
> 
> 2007-08-30 08:31 +0000 [r81367]  Christian Richter <christian.richter@beronet.com>
> 
> 	* channels/misdn/isdn_lib.c, channels/chan_misdn.c: Fixed a severe
> 	  issue where a misdn_read would lock the channel, but read would
> 	  not return because it blocks. later chan_misdn would try to queue
> 	  a frame like a AST_CONTROL_ANSWER which could result in a
> 	  deadlock situation. misdn_read will now not block forever
> 	  anymore, and we don't queue the ANSWER frame at all when we
> 	  already was called with misdn_answer -> answer would be called
> 	  twice. Also we don't explicitly send a RELEASE_COMPLETE on
> 	  receiption of a RELEASE anymore, because mISDN does that for us,
> 	  this resulted in a problem on some switches, which would block
> 	  our port after some calls for a short while.
> 
> 2007-08-29 16:35 +0000 [r81346-81349]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: This patch, in essence, will correctly pause a
> 	  realtime queue member and reflect those changes in the realtime
> 	  engine. (issue #10424, reported by irroot, patch by me) This
> 	  patch creates a new function called update_realtime_member_field,
> 	  which is a generic function which will allow any one field of a
> 	  realtime queue member to be updated. This patch only uses this
> 	  function to update the paused status of a queue member, but it
> 	  lays the foundation for persisting the state of a realtime member
> 	  the same way that static members' state is maintained when using
> 	  the persistentmembers setting
> 
> 	* apps/app_queue.c: Changed some tabs to spaces
> 
> 2007-08-29 15:57 +0000 [r81342]  Russell Bryant <russell@digium.com>
> 
> 	* main/Makefile: If chan_h323 is not being built, don't use g++ to
> 	  do the final link of Asterisk. (in response to a question on the
> 	  asterisk-dev list)
> 
> 2007-08-29 15:52 +0000 [r81340]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: This fix creates a more accurate way of
> 	  detecting whether realtime members were deleted. (closes issue
> 	  10541, reported by Alric, patched by me) The REALLY nice things
> 	  about this patch is that queue members now have a "realtime"
> 	  field which will be true if the member is a realtime member. This
> 	  means we can check this value prior to certain processing if it
> 	  should ONLY be done for realtime members.
> 
> 2007-08-29 14:13 +0000 [r81331]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: (closes issue #9690) Reported by: mattv Make
> 	  rtp timeouts work even if two RTP streams are directly bridged in
> 	  the RTP stack.
> 
> 2007-08-28 21:38 +0000 [r81226-81291]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: Change the message about receiving a
> 	  mini-frame before the first full voice frame to a DEBUG message.
> 
> 	* pbx/pbx_dundi.c: revert unintentional changes in rev 81226
> 
> 	* configs/indications.conf.sample, pbx/pbx_dundi.c: Add Russian
> 	  tones. (closes issue #7953, hanabana)
> 
> 2007-08-28 14:12 +0000 [r81120-81189]  Mark Michelson <mmichelson@digium.com>
> 
> 	* contrib/scripts/vmail.cgi: Fixes a forwarding problem when using
> 	  res_config_mysql (closes issue #10573, reported by chrisvaughan,
> 	  patch suggested by chrisvaughan as well)
> 
> 	* apps/app_queue.c: Resolve a potential deadlock. In this case, a
> 	  single queue is locked, then the queue list. In changethread(),
> 	  the queue list is locked, and then each individual queue is
> 	  locked. Under the right circumstances, this could deadlock. As
> 	  such, I have unlocked the individual queue before locking the
> 	  queue list, and then locked the queue back after the queue list
> 	  is unlocked.
> 
> 	* channels/chan_agent.c: DTMF begin frames should be ignored so
> 	  that when an agent acks a call with the '#' key, he doesn't cause
> 	  a queue's announce file to be interrupted. Also went ahead and
> 	  did the same for the '*' key and for ending a call. (closes issue
> 	  #10528, reported by deskhack, patched by me)
> 
> 2007-08-27 17:27 +0000 [r81042-81074]  Russell Bryant <russell@digium.com>
> 
> 	* pbx/pbx_dundi.c: Add a \todo to note that this module leaks most
> 	  of the memory it allocates on unload and should be fixed (when
> 	  I'm not in the middle of something else ...).
> 
> 	* pbx/pbx_dundi.c: explicity define a variable as a boolean
> 
> 	* res/res_musiconhold.c: (closes issue #10419) Reported by:
> 	  mustardman Patches: asterisk-mohposition.diff.txt uploaded by
> 	  jamesgolovich (license 176) This patch fixes a few problems with
> 	  music on hold. * Fix issues with starting at the beginning of a
> 	  file when it shouldn't. * Fix the inuse counter to be decremented
> 	  even if the class had not been set to be deleted when not in use
> 	  anymore * Don't arbitrarily limit the number of MOH files to 255
> 
> 2007-08-27 15:01 +0000 [r81012]  Joshua Colp <jcolp@digium.com>
> 
> 	* channels/chan_sip.c: (closes issue #10561) Reported by: jesselang
> 	  Patches: chan_sip-ChannelReload-20080825.patch uploaded by
> 	  jesselang (license 202) Remove an extra \r\n to make the
> 	  ChannelReload event conform with every other event.
> 
> 2007-08-27 14:55 +0000 [r81010]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_queue.c: Found a case where the queue's membercount is
> 	  off. It does not take into account dynamic members on a reload.
> 
> 2007-08-27 13:20 +0000 [r80974]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/rtp.c: (closes issue #10562) Reported by: idkpmiller Correct
> 	  jitter value output in the CLI to be as expected.
> 
> 2007-08-26 18:11 +0000 [r80932]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: Remove an extra signal_condition() for the
> 	  scheduler thread. (closes issue #10564, patch from casper)
> 
> 2007-08-25 17:37 +0000 [r80895]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: Fix some issues with the handling of the
> 	  scheduler in chan_iax2. Most of the places that scheduled items
> 	  to be executed by the scheduler thread did not signal the
> 	  scheduler thread to wake up so that it could recalculate the time
> 	  until the next action. These changes will make the scheduler
> 	  thread more responsive and ensure that actions get executed as
> 	  close to when intended as possible instead of it being possible
> 	  for very long delays.
> 
> 2007-08-24 22:59 +0000 [r80878]  Dwayne M. Hubbard <dhubbard@digium.com>
> 
> 	* apps/app_zapateller.c: An empty string is an empty callerid ...
> 	  so zap it. This closes issue #10502, which was pointed out by
> 	  dswartz. Thank you, and may the swartz be with you
> 
> 2007-08-24 21:22 +0000 [r80820-80849]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: If dnsmgr is in use, and no DNS servers are
> 	  available when Asterisk first starts, then don't give up on
> 	  poking peers. Allow the poke to get rescheduled so that it will
> 	  work once the dnsmgr is able to resolve the host. (closes issue
> 	  #10521, patch by jamesgolovich)
> 
> 	* main/dsp.c: Improve the debouncing logic in the DTMF detector to
> 	  fix some reliability issues. Previously, this code used a shift
> 	  register of hits and non-hits. However, if the start of the digit
> 	  isn't clean, it is possible for the leading edge detector to miss
> 	  the digit. These changes replace the flawed shift register logic
> 	  and also does the debouncing on the trailing edge as well.
> 	  (closes issue #10535, many thanks to softins for the patch)
> 
> 2007-08-24 19:52 +0000 [r80818]  BJ Weschke <bweschke@btwtech.com>
> 
> 	* apps/app_queue.c: A minor correction to the available logic of
> 	  autofill. If a queue member is paused, they're not really
> 	  "available" so don't count them as such. Somewhat related to
> 	  issue #10155
> 
> 2007-08-24 18:52 +0000 [r80789]  Steve Murphy <murf@digium.com>
> 
> 	* main/cdr.c: From a complaint by jmls, I realize that the message
> 	  in cdr_disposition is unnecessary. To get failure disposition,
> 	  just return -1; no use having more than one case do that.
> 
> 2007-08-24 15:51 +0000 [r80750]  Mark Michelson <mmichelson@digium.com>
> 
> 	* apps/app_voicemail.c: Fix a possible crash in IMAP voicemail.
> 
> 2007-08-24 15:41 +0000 [r80747]  Tilghman Lesher <tlesher@digium.com>
> 
> 	* main/pbx.c, UPGRADE.txt: Make the deprecation warning inline with
> 	  the code, instead of only in documentation (closes issue #10549)
> 
> 2007-08-24 15:28 +0000 [r80722]  Russell Bryant <russell@digium.com>
> 
> 	* utils/ael_main.c: Tweak the formatting of this MODULEINFO block.
> 	  I think this would have caused a "*" to get in the
> 	  menuselect-tree file.
> 
> 2007-08-24 14:48 +0000 [r80689-80717]  Steve Murphy <murf@digium.com>
> 
> 	* utils/ael_main.c: This change addresses JerJer's complaint that
> 	  aelparse builds and installs even if pbx_ael is unchecked in the
> 	  menuselect stuff.
> 
> 	* pbx/ael/ael.tab.c, pbx/ael/ael.y, pbx/ael/ael-test/ref.ael-test6:
> 	  backport of 80649, a fix to an unreported problem in the ael
> 	  parser, that results in a crash on a 64bit machine
> 
> 2007-08-24 11:42 +0000 [r80661]  Philippe Sultan <philippe.sultan@gmail.com>
> 
> 	* channels/chan_gtalk.c: Closes issue #10509 Googletalk calls are
> 	  answered too early, which results in CDRs wrongly stating that a
> 	  call was ANSWERED when the calling party cancelled a call before
> 	  before being established. We must not answer the call upon
> 	  reception of a 'transport-accept' iq packet, but this packet
> 	  still needs to be acknowledged, otherwise the remote peer would
> 	  close the call (like in #8970).
> 
> 2007-08-23 21:34 +0000 [r80601-80617]  Dwayne M. Hubbard <dhubbard@digium.com>
> 
> 	* channels/misdn/isdn_lib.c: make misdn/isdn_lib compile without
> 	  warnings
> 
> 	* channels/chan_misdn.c: make chan_misdn compile without warnings
> 
> 2007-08-23 20:16 +0000 [r80539-80573]  Russell Bryant <russell@digium.com>
> 
> 	* include/asterisk/features.h, res/res_features.c: When executing a
> 	  dynamic feature, don't look it up a second time by digit pattern
> 	  after we already looked it up by name. This causes broken
> 	  behavior if there is more than one feature defined with the same
> 	  digit pattern. (closes issue #10539, reported by bungalow, patch
> 	  by me)
> 
> 	* funcs/func_timeout.c: Revert very broken fix for issue #10540 ...
> 	  none of these values take ms so I don't know what I was thinking
> 
> 	* funcs/func_timeout.c: Fix func_timeout to take values in floating
> 	  point so 1.5 actually means 1.5 seconds instead of being rounded.
> 	  (closes issue #10540, reported by spendergrass, patch by me)
> 
> 2007-08-23 17:14 +0000 [r80505-80507]  Jason Parker <jparker@digium.com>
> 
> 	* /: *sigh*
> 
> 	* /: use autotagged externals
> 
> 2007-08-23 17:08 +0000 [r80501]  Kevin P. Fleming <kpfleming@digium.com>
> 
> 	* channels/chan_zap.c: report the actual channel number that was
> 	  unregistered, instead of assuming that the interface list
> 	  consists of channels 1 through <x> with no gaps in the sequence
> 
> 2007-08-23 17:02 +0000 [r80360-80499]  Russell Bryant <russell@digium.com>
> 
> 	* channels/chan_iax2.c: Fix some code where it was possible for a
> 	  reference to a peer to not get released when it should. Thank you
> 	  to Marta Carbone for pointing this out!
> 
> 	* main/astobj2.c, include/asterisk/astobj2.h, channels/chan_iax2.c:
> 	  This is a hack to maintain old behavior of chan_iax2. This
> 	  ensures that if the peers and users are being stored in a linked
> 	  list, that they go in the list in the same order that the older
> 	  code used. This is necessary to maintain the behavior of which
> 	  peers and users get matched when traversing the container.
> 
> 	* res/res_agi.c: Revert res_agi fix that didn't quite work until we
> 	  get it right ...
> 
> 	* include/asterisk/astobj2.h: Add some more documentation on
> 	  iterating ao2 containers. The documentation implies that is
> 	  possible to miss an object or see an object twice while
> 	  iterating. After looking through the code and talking with
> 	  mmichelson, I have documented the exact conditions under which
> 	  this can happen (which are rare and harmless in most cases).
> 
> 	* main/astobj2.c: When converting this code to use the list macros,
> 	  I changed it so objects are added to the head of a bucket instead
> 	  of the tail. However, while looking over code with mmichelson, we
> 	  noticed that the algorithm used in ao2_iterator_next requires
> 	  that items are added to the tail. This wouldn't have caused any
> 	  huge problem, but it wasn't correct. It meant that if an object
> 	  was added to a container while you were iterating it, and it was
> 	  added to the same bucket that the current element is in, then the
> 	  new object would be returned by ao2_iterator_next, and any other
> 	  objects in the bucket would be bypassed in the traversal.
> 
> 	* channels/chan_sip.c: Don't crash when using realtime in chan_sip
> 	  without an insecure setting in the database. (closes issue
> 	  #10348, reported by link55, fixed by me)
> 
> 	* main/astobj2.c (added), main/Makefile, include/asterisk/astobj2.h
> 	  (added), doc/iax.txt, UPGRADE.txt, include/asterisk/strings.h,
> 	  channels/chan_iax2.c: Merge changes from
> 	  team/russell/iax_refcount. This set of changes fixes problems
> 	  with the handling of iax2_user and iax2_peer objects. It was very
> 	  possible for a thread to still hold a reference to one of these
> 	  objects while a reload operation tries to delete them. The fix
> 	  here is to ensure that all references to these objects are
> 	  tracked so that they can't go away while still in use. To
> 	  accomplish this, I used the astobj2 reference counted object
> 	  model. This code has been in one of Luigi Rizzo's branches for a
> 	  long time and was primarily developed by one of his students,
> 	  Marta Carbone. I wanted to go ahead and bring this in to 1.4
> 	  because there are other problems similar to the ones fixed by
> 	  these changes, so we might as well go ahead and use the new
> 	  astobj if we're going to go through all of the work necessary to
> 	  fix the problems. As a nice side benefit of these changes, peer
> 	  and user handling got more efficient. Using astobj2 lets us not
> 	  hold the container lock for peers or users nearly as long while
> 	  iterating. Also, by changing a define at the top of chan_iax2.c,
> 	  the objects will be distributed in a hash table, drastically
> 	  increasing lookup speed in these containers, which will have a
> 	  very big impact on systems that have a large number of users or
> 	  peers. The use of the hash table will be made the default in
> 	  trunk. It is not the default in 1.4 because it changes the
> 	  behavior slightly. Previously, since peers and users were stored
> 	  in memory in the same order they were specified in the
> 	  configuration file, you could influence peer and user matching
> 	  order based on the order they are specified in the configuration.
> 	  The hash table does not guarantee any order in the container, so
> 	  this behavior will be going away. It just means that you have to
> 	  be a little more careful ensuring that peers and users are
> 	  matched explicitly and not forcing chan_iax2 to have to guess
> 	  which user is the right one based on secret, host, and access
> 	  list settings, instead of simply using the username. If you have
> 	  any questions, feel free to ask on the asterisk-dev list.
> 
> 	* res/res_agi.c: Juggie in #asterisk-dev was reporting problems
> 	  where fgets would return without reading the whole line when
> 	  using fastagi. When this happens, errno was set to EINTR or
> 	  EAGAIN. This patch accounts for the possibility and lets fgets
> 	  continue in that case.
> 
> 2007-08-22 18:53 +0000 [r80302-80330]  Jason Parker <jparker@digium.com>
> 
> 	* Makefile, build_tools/mkpkgconfig, build_tools/make_build_h,
> 	  build_tools/strip_nonapi, build_tools/prep_moduledeps,
> 	  build_tools/make_buildopts_h: Fix a few build issues in Solaris
> 	  (and likely others). Use GREP and ID variables from autoconf.
> 	  Reported to me in #asterisk-dev I forgot who reported this -
> 	  sorry. :(
> 
> 	* Makefile: Change a syntax that the GNU make in Solaris dislikes.
> 
> 	* build_tools/make_version: Fix a bashism (we explicitly request
> 	  /bin/sh). Remove some oddly placed quotes I found in passing.
> 
> 2007-08-22 16:21 +0000 [r80257]  Russell Bryant <russell@digium.com>
> 
> 	* Makefile: Honor the contents of the COPTS variable as custom
> 	  target CFLAGS. Apparently this is what openwrt does. (reported by
> 	  Brian Capouch on the asterisk-dev list, patch by me)
> 
> 2007-08-22 16:14 +0000 [r80255]  Joshua Colp <jcolp@digium.com>
> 
> 	* main/rtp.c: (closes issue #10526) Reported by: sinistermidget
> 	  Revert commit from issue #10355 and return timestamp skew to 640.
> 
Only in asterisk-1.4.11/channels: busy.h
diff -r asterisk-1.4.11/channels/chan_agent.c asterisk-1.4.13/channels/chan_agent.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79748 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84274 $")
253a254,255
> static struct ast_channel* agent_get_base_channel(struct ast_channel *chan);
> static int agent_set_base_channel(struct ast_channel *chan, struct ast_channel *base);
275a278,279
> 	.get_base_channel = agent_get_base_channel,
> 	.set_base_channel = agent_set_base_channel,
496a501,506
> 			/*ignore DTMF begin's as it can cause issues with queue announce files*/
> 			if((!p->acknowledged && f->subclass == '#') || (f->subclass == '*' && endcall)){
> 				ast_frfree(f);
> 				f = &ast_null_frame;
> 			}
> 			break;
722a733,766
> /*! \brief return the channel or base channel if one exists.  This function assumes the channel it is called on is already locked */
> struct ast_channel* agent_get_base_channel(struct ast_channel *chan)
> {
> 	struct agent_pvt *p = NULL;
> 	struct ast_channel *base = chan;
> 
> 	/* chan is locked by the calling function */
> 	if (!chan || !chan->tech_pvt) {
> 		ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) with a tech_pvt (0x%ld) to get a base channel.\n", (long)chan, (chan)?(long)chan->tech_pvt:(long)NULL);
> 		return NULL;
> 	}
> 	p = chan->tech_pvt;
> 	if (p->chan) 
> 		base = p->chan;
> 	return base;
> }
> 
> int agent_set_base_channel(struct ast_channel *chan, struct ast_channel *base)
> {
> 	struct agent_pvt *p = NULL;
> 	
> 	if (!chan || !base) {
> 		ast_log(LOG_ERROR, "whoa, you need a channel (0x%ld) and a base channel (0x%ld) for setting.\n", (long)chan, (long)base);
> 		return -1;
> 	}
> 	p = chan->tech_pvt;
> 	if (!p) {
> 		ast_log(LOG_ERROR, "whoa, channel %s is missing his tech_pvt structure!!.\n", chan->name);
> 		return -1;
> 	}
> 	p->chan = base;
> 	return 0;
> }
> 
Only in asterisk-1.4.11/channels: chan_agent.o
Only in asterisk-1.4.11/channels: chan_agent.so
diff -r asterisk-1.4.11/channels/chan_alsa.c asterisk-1.4.13/channels/chan_alsa.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 64306 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83974 $")
370c370,371
< 	snd_pcm_hw_params_alloca(&hwparams);
---
> 	hwparams = alloca(snd_pcm_hw_params_sizeof());
> 	memset(hwparams, 0, snd_pcm_hw_params_sizeof());
419c420,421
< 	snd_pcm_sw_params_alloca(&swparams);
---
> 	swparams = alloca(snd_pcm_sw_params_sizeof());
> 	memset(swparams, 0, snd_pcm_sw_params_sizeof());
diff -r asterisk-1.4.11/channels/chan_gtalk.c asterisk-1.4.13/channels/chan_gtalk.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79174 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82309 $")
114,115c114,115
< 	char us[100];
< 	char them[100];
---
> 	char us[AJI_MAX_JIDLEN];
> 	char them[AJI_MAX_JIDLEN];
157,158c157,158
< 	char user[100];
< 	char context[100];
---
> 	char user[AJI_MAX_JIDLEN];
> 	char context[AST_MAX_CONTEXT];
625a626,649
> static int gtalk_is_accepted(struct gtalk *client, ikspak *pak)
> {
> 	struct gtalk_pvt *tmp;
> 	char *from;
> 
> 	ast_log(LOG_DEBUG, "The client is %s\n", client->name);
> 	/* find corresponding call */
> 	for (tmp = client->p; tmp; tmp = tmp->next) {
> 		if (iks_find_with_attrib(pak->x, "session", "id", tmp->sid))
> 			break;
> 	}
> 
> 	from = iks_find_attrib(pak->x, "to");
> 	if(!from)
> 		from = client->connection->jid->full;
> 
> 	if (!tmp)
> 		ast_log(LOG_NOTICE, "Whoa, didn't find call!\n");
> 
> 	/* answer 'iq' packet to let the remote peer know that we're alive */
> 	gtalk_response(client, from, pak, NULL, NULL);
> 	return 1;
> }
> 
629c653
< 	iks *dtmfnode = NULL;
---
> 	iks *dtmfnode = NULL, *dtmfchild = NULL;
634c658
< 		if (iks_find_with_attrib(pak->x, "session", "id", tmp->sid))
---
> 		if (iks_find_with_attrib(pak->x, "session", "id", tmp->sid) || iks_find_with_attrib(pak->x, "gtalk", "sid", tmp->sid))
667a692,707
> 		} else if ((dtmfnode = iks_find_with_attrib(pak->x, "gtalk", "action", "session-info"))) {
> 			if((dtmfchild = iks_find(dtmfnode, "dtmf"))) {
> 				if((dtmf = iks_find_attrib(dtmfchild, "code"))) {
> 					if(iks_find_with_attrib(dtmfnode, "dtmf", "action", "button-up")) {
> 						struct ast_frame f = {AST_FRAME_DTMF_END, };
> 						f.subclass = dtmf[0];
> 						ast_queue_frame(tmp->owner, &f);
> 						ast_verbose("GOOGLE! DTMF-relay event received: %c\n", f.subclass);
> 					} else if(iks_find_with_attrib(dtmfnode, "dtmf", "action", "button-down")) {
> 						struct ast_frame f = {AST_FRAME_DTMF_BEGIN, };
> 						f.subclass = dtmf[0];
> 						ast_queue_frame(tmp->owner, &f);
> 						ast_verbose("GOOGLE! DTMF-relay event received: %c\n", f.subclass);
> 					}
> 				}
> 			}
678d717
< 
1412c1451
< 	iks_insert_attrib(gtalk, "action", "content-info");
---
> 	iks_insert_attrib(gtalk, "action", "session-info");
1421c1460
< 	if (ast->dtmff.frametype == AST_FRAME_DTMF_BEGIN) {
---
> 	if (ast->dtmff.frametype == AST_FRAME_DTMF_BEGIN || duration == 0) {
1423c1462
< 	} else if (ast->dtmff.frametype == AST_FRAME_DTMF_END) {
---
> 	} else if (ast->dtmff.frametype == AST_FRAME_DTMF_END || duration != 0) {
1541a1581,1588
> #define FORMAT  "%-30.30s  %-30.30s  %-15.15s  %-5.5s %-5.5s \n"
> 	struct gtalk_pvt *p;
> 	struct ast_channel *chan;
> 	int numchans = 0;
> 	char them[AJI_MAX_JIDLEN];
> 	char *jid = NULL;
> 	char *resource = NULL;
> 
1543a1591
> 
1545,1546c1593,1623
< //	if (!gtalk_list->p)
< 		ast_cli(fd, "No gtalk channels in use\n");
---
> 	ast_cli(fd, FORMAT, "Channel", "Jabber ID", "Resource", "Read", "Write");
> 	ASTOBJ_CONTAINER_TRAVERSE(&gtalk_list, 1, {
> 		ASTOBJ_WRLOCK(iterator);
> 		p = iterator->p;
> 		while(p) {
> 			chan = p->owner;
> 			ast_copy_string(them, p->them, sizeof(them));
> 			jid = them;
> 			resource = strchr(them, '/');
> 			if (!resource)
> 				resource = "None";
> 			else {
> 				*resource = '\0';
> 				resource ++;
> 			}
> 			if (chan)
> 				ast_cli(fd, FORMAT, 
> 					chan->name,
> 					jid,
> 					resource,
> 					ast_getformatname(chan->readformat),
> 					ast_getformatname(chan->writeformat)					
> 					);
> 			else 
> 				ast_log(LOG_WARNING, "No available channel\n");
> 			numchans ++;
> 			p = p->next;
> 		}
> 		ASTOBJ_UNLOCK(iterator);
> 	});
> 
1547a1625,1626
> 
> 	ast_cli(fd, "%d active gtalk channel%s\n", numchans, (numchans != 1) ? "s" : "");
1548a1628
> #undef FORMAT
1571c1651
< 	} else if (iks_find_with_attrib(pak->x, "session", "type", "accept") || iks_find_with_attrib(pak->x, "session", "type", "transport-accept")) {
---
> 	} else if (iks_find_with_attrib(pak->x, "session", "type", "accept")) {
1573c1653,1655
< 	} else if (iks_find_with_attrib(pak->x, "session", "type", "content-info")) {
---
> 	} else if (iks_find_with_attrib(pak->x, "session", "type", "transport-accept")) {
> 		gtalk_is_accepted(client, pak);
> 	} else if (iks_find_with_attrib(pak->x, "session", "type", "content-info") || iks_find_with_attrib(pak->x, "gtalk", "action", "session-info")) {
1670,1673c1752,1756
< 				iks_filter_add_rule(client->f, gtalk_parser, member, IKS_RULE_TYPE,
< 									IKS_PAK_IQ, IKS_RULE_FROM_PARTIAL, member->user,
< 									IKS_RULE_NS, "http://www.google.com/session",
< 									IKS_RULE_DONE);
---
> 				iks_filter_add_rule(client->f, gtalk_parser, member, 
> 						    IKS_RULE_TYPE, IKS_PAK_IQ, 
> 						    IKS_RULE_FROM_PARTIAL, member->user,
> 						    IKS_RULE_NS, "http://www.google.com/session",
> 						    IKS_RULE_DONE);
1694c1777
< 	char context[100];
---
> 	char context[AST_MAX_CONTEXT];
1786,1787c1869,1870
< 						iks_filter_add_rule(iterator->f, gtalk_parser, member, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_NS,
< 										"http://www.google.com/session", IKS_RULE_DONE);
---
> 						iks_filter_add_rule(iterator->f, gtalk_parser, member, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_NS, "http://www.google.com/session", IKS_RULE_DONE);
> 						iks_filter_add_rule(iterator->f, gtalk_parser, member, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_NS, "http://jabber.org/protocol/gtalk", IKS_RULE_DONE);
diff -r asterisk-1.4.11/channels/chan_h323.c asterisk-1.4.13/channels/chan_h323.c
47c47
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79174 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
306c306
< static int oh323_simulate_dtmf_end(void *data)
---
> static int oh323_simulate_dtmf_end(const void *data)
308c308
< 	struct oh323_pvt *pvt = data;
---
> 	struct oh323_pvt *pvt = (struct oh323_pvt *)data;
diff -r asterisk-1.4.11/channels/chan_iax2.c asterisk-1.4.13/channels/chan_iax2.c
37c37
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79756 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
96a97
> #include "asterisk/astobj2.h"
308d308
< 	AST_LIST_ENTRY(iax2_user) entry;
361d360
< 	AST_LIST_ENTRY(iax2_peer) entry;
635c634,648
< static AST_LIST_HEAD_STATIC(users, iax2_user);
---
> /*!
>  * This module will get much higher performance when doing a lot of
>  * user and peer lookups if the number of buckets is increased from 1.
>  * However, to maintain old behavior for Asterisk 1.4, these are set to
>  * 1 by default.  When using multiple buckets, search order through these
>  * containers is considered random, so you will not be able to depend on
>  * the order the entires are specified in iax.conf for matching order. */
> #ifdef LOW_MEMORY
> #define MAX_PEER_BUCKETS 1
> /* #define MAX_PEER_BUCKETS 17 */
> #else
> #define MAX_PEER_BUCKETS 1
> /* #define MAX_PEER_BUCKETS 563 */
> #endif
> static struct ao2_container *peers;
637c650,651
< static AST_LIST_HEAD_STATIC(peers, iax2_peer);
---
> #define MAX_USER_BUCKETS MAX_PEER_BUCKETS
> static struct ao2_container *users;
678d691
< static void destroy_peer(struct iax2_peer *peer);
700,701c713,714
< 	void (*schedfunc)(void *);
< 	void *scheddata;
---
> 	void (*schedfunc)(const void *);
> 	const void *scheddata;
802c815
< static int expire_registry(void *data);
---
> static int expire_registry(const void *data);
831d843
< static void destroy_user(struct iax2_user *user);
926c938
< static int __schedule_action(void (*func)(void *data), void *data, const char *funcname)
---
> static int __schedule_action(void (*func)(const void *data), const void *data, const char *funcname)
954c966,974
< static int send_ping(void *data);
---
> static int iax2_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data)
> {
> 	int res;
> 
> 	res = ast_sched_add(con, when, callback, data);
> 	signal_condition(&sched_lock, &sched_cond);
> 
> 	return res;
> }
956c976,978
< static void __send_ping(void *data)
---
> static int send_ping(const void *data);
> 
> static void __send_ping(const void *data)
962c984
< 		iaxs[callno]->pingid = ast_sched_add(sched, ping_time * 1000, send_ping, data);
---
> 		iaxs[callno]->pingid = iax2_sched_add(sched, ping_time * 1000, send_ping, data);
967c989
< static int send_ping(void *data)
---
> static int send_ping(const void *data)
988c1010
< static int send_lagrq(void *data);
---
> static int send_lagrq(const void *data);
990c1012
< static void __send_lagrq(void *data)
---
> static void __send_lagrq(const void *data)
997c1019
< 		iaxs[callno]->lagid = ast_sched_add(sched, lagrq_time * 1000, send_lagrq, data);
---
> 		iaxs[callno]->lagid = iax2_sched_add(sched, lagrq_time * 1000, send_lagrq, data);
1002c1024
< static int send_lagrq(void *data)
---
> static int send_lagrq(const void *data)
1045a1068,1107
>  * \note The only member of the peer passed here guaranteed to be set is the name field
>  */
> static int peer_hash_cb(const void *obj, const int flags)
> {
> 	const struct iax2_peer *peer = obj;
> 
> 	return ast_str_hash(peer->name);
> }
> 
> /*!
>  * \note The only member of the peer passed here guaranteed to be set is the name field
>  */
> static int peer_cmp_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_peer *peer = obj, *peer2 = arg;
> 
> 	return !strcasecmp(peer->name, peer2->name) ? CMP_MATCH : 0;
> }
> 
> /*!
>  * \note The only member of the user passed here guaranteed to be set is the name field
>  */
> static int user_hash_cb(const void *obj, const int flags)
> {
> 	const struct iax2_user *user = obj;
> 
> 	return ast_str_hash(user->name);
> }
> 
> /*!
>  * \note The only member of the user passed here guaranteed to be set is the name field
>  */
> static int user_cmp_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_user *user = obj, *user2 = arg;
> 
> 	return !strcasecmp(user->name, user2->name) ? CMP_MATCH : 0;
> }
> 
> /*!
1051a1114,1116
> 	struct iax2_peer tmp_peer = {
> 		.name = name,
> 	};
1053,1060c1118
< 	/* Grab peer from linked list */
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry) {
< 		if (!strcasecmp(peer->name, name)) {
< 			break;
< 		}
< 	}
< 	AST_LIST_UNLOCK(&peers);
---
> 	peer = ao2_find(peers, &tmp_peer, OBJ_POINTER);
1064a1123
> 
1068c1127,1151
< static int iax2_getpeername(struct sockaddr_in sin, char *host, int len, int lockpeer)
---
> static struct iax2_peer *peer_ref(struct iax2_peer *peer)
> {
> 	ao2_ref(peer, +1);
> 	return peer;
> }
> 
> static inline struct iax2_peer *peer_unref(struct iax2_peer *peer)
> {
> 	ao2_ref(peer, -1);
> 	return NULL;
> }
> 
> static inline struct iax2_user *user_ref(struct iax2_user *user)
> {
> 	ao2_ref(user, +1);
> 	return user;
> }
> 
> static inline struct iax2_user *user_unref(struct iax2_user *user)
> {
> 	ao2_ref(user, -1);
> 	return NULL;
> }
> 
> static int iax2_getpeername(struct sockaddr_in sin, char *host, int len)
1071a1155
> 	struct ao2_iterator i;
1073,1075c1157,1158
< 	if (lockpeer)
< 		AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry) {
---
> 	i = ao2_iterator_init(peers, 0);
> 	while ((peer = ao2_iterator_next(&i))) {
1078a1162
> 			peer_unref(peer);
1081a1166
> 		peer_unref(peer);
1083,1084c1168
< 	if (lockpeer)
< 		AST_LIST_UNLOCK(&peers);
---
> 
1089,1090c1173
< 			if (ast_test_flag(peer, IAX_TEMPONLY))
< 				destroy_peer(peer);
---
> 			peer_unref(peer);
1098c1181
< static struct chan_iax2_pvt *new_iax(struct sockaddr_in *sin, int lockpeer, const char *host)
---
> static struct chan_iax2_pvt *new_iax(struct sockaddr_in *sin, const char *host)
1229,1230c1312,1313
< 			iaxs[x]->pingid = ast_sched_add(sched, ping_time * 1000, send_ping, (void *)(long)x);
< 			iaxs[x]->lagid = ast_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)(long)x);
---
> 			iaxs[x]->pingid = iax2_sched_add(sched, ping_time * 1000, send_ping, (void *)(long)x);
> 			iaxs[x]->lagid = iax2_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)(long)x);
1254c1337
< static int find_callno(unsigned short callno, unsigned short dcallno, struct sockaddr_in *sin, int new, int lockpeer, int sockfd)
---
> static int find_callno(unsigned short callno, unsigned short dcallno, struct sockaddr_in *sin, int new, int sockfd)
1291c1374
< 		if (!iax2_getpeername(*sin, host, sizeof(host), lockpeer))
---
> 		if (!iax2_getpeername(*sin, host, sizeof(host)))
1305c1388
< 		iaxs[x] = new_iax(sin, lockpeer, host);
---
> 		iaxs[x] = new_iax(sin, host);
1318,1319c1401,1402
< 			iaxs[x]->pingid = ast_sched_add(sched, ping_time * 1000, send_ping, (void *)(long)x);
< 			iaxs[x]->lagid = ast_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)(long)x);
---
> 			iaxs[x]->pingid = iax2_sched_add(sched, ping_time * 1000, send_ping, (void *)(long)x);
> 			iaxs[x]->lagid = iax2_sched_add(sched, lagrq_time * 1000, send_lagrq, (void *)(long)x);
1651c1734
< static void reload_firmware(void)
---
> static void reload_firmware(int unload)
1664a1748
> 
1666,1674c1750,1760
< 	snprintf(dir, sizeof(dir), "%s/firmware/iax", (char *)ast_config_AST_DATA_DIR);
< 	fwd = opendir(dir);
< 	if (fwd) {
< 		while((de = readdir(fwd))) {
< 			if (de->d_name[0] != '.') {
< 				snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
< 				if (!try_firmware(fn)) {
< 					if (option_verbose > 1)
< 						ast_verbose(VERBOSE_PREFIX_2 "Loaded firmware '%s'\n", de->d_name);
---
> 	if (!unload) {
> 		snprintf(dir, sizeof(dir), "%s/firmware/iax", (char *)ast_config_AST_DATA_DIR);
> 		fwd = opendir(dir);
> 		if (fwd) {
> 			while((de = readdir(fwd))) {
> 				if (de->d_name[0] != '.') {
> 					snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
> 					if (!try_firmware(fn)) {
> 						if (option_verbose > 1)
> 							ast_verbose(VERBOSE_PREFIX_2 "Loaded firmware '%s'\n", de->d_name);
> 					}
1677,1680c1763,1766
< 		}
< 		closedir(fwd);
< 	} else 
< 		ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
---
> 			closedir(fwd);
> 		} else 
> 			ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
> 	}
1807,1808d1892
< 	struct iax2_user *user = NULL;
< 
1811,1816c1895,1903
< 		AST_LIST_LOCK(&users);
< 		AST_LIST_TRAVERSE(&users, user, entry) {
< 			if (!strcmp(user->name, pvt->username)) {
< 				user->curauthreq--;
< 				break;
< 			}
---
> 		struct iax2_user *user;
> 		struct iax2_user tmp_user = {
> 			.name = pvt->username,
> 		};
> 
> 		user = ao2_find(users, &tmp_user, OBJ_POINTER);
> 		if (user) {
> 			ast_atomic_fetchadd_int(&user->curauthreq, -1);
> 			user_unref(user);	
1818c1905
< 		AST_LIST_UNLOCK(&users);
---
> 
1949,1950c2036,2037
< static int attempt_transmit(void *data);
< static void __attempt_transmit(void *data)
---
> static int attempt_transmit(const void *data);
> static void __attempt_transmit(const void *data)
1954c2041
< 	struct iax_frame *f = data;
---
> 	struct iax_frame *f = (struct iax_frame *)data;
2009c2096
< 			f->retrans = ast_sched_add(sched, f->retrytime, attempt_transmit, f);
---
> 			f->retrans = iax2_sched_add(sched, f->retrytime, attempt_transmit, f);
2031c2118
< static int attempt_transmit(void *data)
---
> static int attempt_transmit(const void *data)
2052c2139
< 			expire_registry((void *)peer->name);
---
> 			expire_registry((const void *)peer->name);
2056a2144
> 		peer_unref(peer);
2183,2184c2271
< 		if (ast_test_flag(peer, IAX_TEMPONLY))
< 			destroy_peer(peer);
---
> 		peer_unref(peer);
2196c2283
< 	struct iax2_peer *p = NULL;
---
> 	struct iax2_peer *peer;
2198a2286
> 	struct ao2_iterator i;
2201,2207c2289,2297
< 	if (pos == 3) {
< 		AST_LIST_LOCK(&peers);
< 		AST_LIST_TRAVERSE(&peers, p, entry) {
< 			if (!strncasecmp(p->name, word, wordlen) && ++which > state) {
< 				res = ast_strdup(p->name);
< 				break;
< 			}
---
> 	if (pos != 3)
> 		return NULL;
> 
> 	i = ao2_iterator_init(peers, 0);
> 	while ((peer = ao2_iterator_next(&i))) {
> 		if (!strncasecmp(peer->name, word, wordlen) && ++which > state) {
> 			res = ast_strdup(peer->name);
> 			peer_unref(peer);
> 			break;
2209c2299
< 		AST_LIST_UNLOCK(&peers);
---
> 		peer_unref(peer);
2324c2414
< static int get_from_jb(void *p);
---
> static int get_from_jb(const void *p);
2341,2344c2431
< 	pvt->jbid = ast_sched_add(sched, when, get_from_jb, CALLNO_TO_PTR(pvt->callno));
< 	
< 	/* Signal scheduler thread */
< 	signal_condition(&sched_lock, &sched_cond);
---
> 	pvt->jbid = iax2_sched_add(sched, when, get_from_jb, CALLNO_TO_PTR(pvt->callno));
2347c2434
< static void __get_from_jb(void *p) 
---
> static void __get_from_jb(const void *p) 
2424c2511
< static int get_from_jb(void *data)
---
> static int get_from_jb(const void *data)
2623,2624c2710
< 				destroy_peer(peer);
< 				peer = NULL;
---
> 				peer = peer_unref(peer);
2649c2735
< 			peer->expire = ast_sched_add(sched, (global_rtautoclear) * 1000, expire_registry, (void*)peer->name);
---
> 			peer->expire = iax2_sched_add(sched, (global_rtautoclear) * 1000, expire_registry, (void*)peer->name);
2651,2653c2737
< 		AST_LIST_LOCK(&peers);
< 		AST_LIST_INSERT_HEAD(&peers, peer, entry);
< 		AST_LIST_UNLOCK(&peers);
---
> 		ao2_link(peers, peer_ref(peer));
2710,2712c2794
< 		AST_LIST_LOCK(&users);
< 		AST_LIST_INSERT_HEAD(&users, user, entry);
< 		AST_LIST_UNLOCK(&users);
---
> 		ao2_link(users, user_ref(user));
2755a2838
> 	int res = -1;
2781,2785c2864,2865
< 	if (!(peer->addr.sin_addr.s_addr || peer->defaddr.sin_addr.s_addr)) {
< 		if (ast_test_flag(peer, IAX_TEMPONLY))
< 			destroy_peer(peer);
< 		return -1;
< 	}
---
> 	if (!(peer->addr.sin_addr.s_addr || peer->defaddr.sin_addr.s_addr))
> 		goto return_unref;
2788,2792c2868,2869
< 	if (peer->maxms && ((peer->lastms > peer->maxms) || (peer->lastms < 0))) {
< 		if (ast_test_flag(peer, IAX_TEMPONLY))
< 			destroy_peer(peer);
< 		return -1;
< 	}
---
> 	if (peer->maxms && ((peer->lastms > peer->maxms) || (peer->lastms < 0)))
> 		goto return_unref;
2820,2822c2897
< 			if (ast_test_flag(peer, IAX_TEMPONLY))
< 				destroy_peer(peer);
< 			return -1;
---
> 			goto return_unref;
2834,2835c2909
< 	if (ast_test_flag(peer, IAX_TEMPONLY))
< 		destroy_peer(peer);
---
> 	res = 0;
2837c2911,2914
< 	return 0;
---
> return_unref:
> 	peer_unref(peer);
> 
> 	return res;
2840c2917
< static void __auto_congest(void *nothing)
---
> static void __auto_congest(const void *nothing)
2853c2930
< static int auto_congest(void *data)
---
> static int auto_congest(const void *data)
3073c3150
< 		iaxs[callno]->initid = ast_sched_add(sched, iaxs[callno]->maxtime * 2, auto_congest, CALLNO_TO_PTR(callno));
---
> 		iaxs[callno]->initid = iax2_sched_add(sched, iaxs[callno]->maxtime * 2, auto_congest, CALLNO_TO_PTR(callno));
3076c3153
< 		iaxs[callno]->initid = ast_sched_add(sched, autokill * 2, auto_congest, CALLNO_TO_PTR(callno));
---
> 		iaxs[callno]->initid = iax2_sched_add(sched, autokill * 2, auto_congest, CALLNO_TO_PTR(callno));
3413c3490
< 	struct iax2_peer *peer = NULL;
---
> 	struct iax2_peer *peer;
3414a3492
> 	struct ao2_iterator i;
3416,3417c3494,3495
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry) {
---
> 	i = ao2_iterator_init(peers, 0);
> 	while ((peer = ao2_iterator_next(&i))) {
3420a3499
> 			peer_unref(peer);
3422a3502
> 		peer_unref(peer);
3424d3503
< 	AST_LIST_UNLOCK(&peers);
4141a4221
> 	struct ao2_iterator i;
4158,4159c4238,4240
< 	AST_LIST_LOCK(&users);
< 	AST_LIST_TRAVERSE(&users, user, entry) {
---
> 	i = ao2_iterator_init(users, 0);
> 	for (user = ao2_iterator_next(&i); user; 
> 		user_unref(user), user = ao2_iterator_next(&i)) {
4180d4260
< 		
4182d4261
< 	AST_LIST_UNLOCK(&users);
4199a4279
> 	struct ao2_iterator i;
4248,4249c4328,4330
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry) {
---
> 	i = ao2_iterator_init(peers, 0);
> 	for (peer = ao2_iterator_next(&i); peer; 
> 		peer_unref(peer), peer = ao2_iterator_next(&i)) {
4298d4378
< 	AST_LIST_UNLOCK(&peers);
4763a4844
> 	struct ao2_iterator i;
4818,4819c4899,4900
< 	AST_LIST_LOCK(&users);
< 	AST_LIST_TRAVERSE(&users, user, entry) {
---
> 	i = ao2_iterator_init(users, 0);
> 	while ((user = ao2_iterator_next(&i))) {
4826a4908,4909
> 				if (best)
> 					user_unref(best);
4834a4918,4919
> 						if (best)
> 							user_unref(best);
4835a4921
> 						continue;
4840a4927,4928
> 						if (best)
> 							user_unref(best);
4841a4930
> 						continue;
4848a4938,4939
> 						if (best)
> 							user_unref(best);
4849a4941
> 						continue;
4854a4947,4948
> 						if (best)
> 							user_unref(best);
4855a4950
> 						continue;
4859a4955
> 		user_unref(user);
4861d4956
< 	AST_LIST_UNLOCK(&users);
4867,4868c4962
< 			destroy_user(user);
< 			user = NULL;
---
> 			user = user_unref(user);
4947,4948d5040
< 		if (ast_test_flag(user, IAX_TEMPONLY))
< 			destroy_user(user);
4949a5042
> 		user = user_unref(user);
4995d5087
< 	struct iax2_user *user = NULL;
5005,5013c5097,5107
< 		AST_LIST_LOCK(&users);
< 		AST_LIST_TRAVERSE(&users, user, entry) {
< 			if (!strcmp(user->name, p->username)) {
< 				if (user->curauthreq == user->maxauthreq)
< 					authreq_restrict = 1;
< 				else
< 					user->curauthreq++;
< 				break;
< 			}
---
> 		struct iax2_user *user, tmp_user = {
> 			.name = p->username,	
> 		};
> 
> 		user = ao2_find(users, &tmp_user, OBJ_POINTER);
> 		if (user) {
> 			if (user->curauthreq == user->maxauthreq)
> 				authreq_restrict = 1;
> 			else
> 				user->curauthreq++;
> 			user = user_unref(user);
5015d5108
< 		AST_LIST_UNLOCK(&users);
5054c5147,5149
< 	struct iax2_user *user = NULL;
---
> 	struct iax2_user *user, tmp_user = {
> 		.name = p->username,	
> 	};
5056,5060c5151
< 	AST_LIST_LOCK(&users);
< 	AST_LIST_TRAVERSE(&users, user, entry) {
< 		if (!strcmp(user->name, p->username))
< 			break;
< 	}
---
> 	user = ao2_find(users, &tmp_user, OBJ_POINTER);
5063c5154
< 			user->curauthreq--;
---
> 			ast_atomic_fetchadd_int(&user->curauthreq, -1);
5066a5158
> 		user = user_unref(user);
5068d5159
< 	AST_LIST_UNLOCK(&users);
5130c5221
< 	struct iax2_peer *p;
---
> 	struct iax2_peer *p = NULL;
5134a5226
> 	int res = -1;
5161c5253
< 		return -1;
---
> 		goto return_unref;
5167,5169c5259
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return -1;
---
> 		goto return_unref;
5175,5177c5265
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return -1;
---
> 		goto return_unref;
5203,5205c5291
< 				if (ast_test_flag(p, IAX_TEMPONLY))
< 					destroy_peer(p);
< 				return -1;
---
> 				goto return_unref;
5210,5212c5296
< 			if (ast_test_flag(p, IAX_TEMPONLY))
< 				destroy_peer(p);
< 			return -1;
---
> 			goto return_unref;
5236,5238c5320
< 			if (ast_test_flag(p, IAX_TEMPONLY))
< 				destroy_peer(p);
< 			return -1;
---
> 			goto return_unref;
5245,5247c5327
< 			if (ast_test_flag(p, IAX_TEMPONLY))
< 				destroy_peer(p);
< 			return -1;
---
> 			goto return_unref;
5253,5255c5333
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return -1;
---
> 		goto return_unref;
5264,5265c5342
< 	if (ast_test_flag(p, IAX_TEMPONLY))
< 		destroy_peer(p);
---
> 	res = 0;
5267c5344,5348
< 	return 0;
---
> return_unref:
> 	if (p)
> 		peer_unref(p);
> 
> 	return res;
5354,5355c5435,5436
< 		AST_LIST_LOCK(&peers);
< 		AST_LIST_TRAVERSE(&peers, peer, entry) {
---
> 		struct ao2_iterator i = ao2_iterator_init(peers, 0);
> 		while ((peer = ao2_iterator_next(&i))) {
5364,5365c5445,5448
< 				if (!res)
< 					break;	
---
> 				if (!res) {
> 					peer_unref(peer);
> 					break;
> 				}
5366a5450
> 			peer_unref(peer);
5368d5451
< 		AST_LIST_UNLOCK(&peers);
5377,5378c5460
< 					if (ast_test_flag(peer, IAX_TEMPONLY))
< 						destroy_peer(peer);
---
> 					peer_unref(peer);
5382,5383c5464
< 				if (ast_test_flag(peer, IAX_TEMPONLY))
< 					destroy_peer(peer);
---
> 				peer_unref(peer);
5401c5482
< static void __iax2_do_register_s(void *data)
---
> static void __iax2_do_register_s(const void *data)
5403c5484
< 	struct iax2_registry *reg = data;
---
> 	struct iax2_registry *reg = (struct iax2_registry *)data;
5408c5489
< static int iax2_do_register_s(void *data)
---
> static int iax2_do_register_s(const void *data)
5596c5677
< 	reg->expire = ast_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
---
> 	reg->expire = iax2_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
5684c5765
< static void __expire_registry(void *data)
---
> static void __expire_registry(const void *data)
5686,5698c5767,5771
< 	char *name = data;
< 	struct iax2_peer *p = NULL;
< 
< 	/* Go through and grab this peer... and if it needs to be removed... then do it */
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE_SAFE_BEGIN(&peers, p, entry) {
< 		if (!strcasecmp(p->name, name)) {
< 			p->expire = -1;
< 			break;
< 		}
< 	}
< 	AST_LIST_TRAVERSE_SAFE_END
< 	AST_LIST_UNLOCK(&peers);
---
> 	const char *name = data;
> 	struct iax2_peer *peer = NULL;
> 	struct iax2_peer tmp_peer = {
> 		.name = name,
> 	};
5700,5701c5773,5774
< 	/* Peer is already gone for whatever reason */
< 	if (!p)
---
> 	peer = ao2_find(peers, &tmp_peer, OBJ_POINTER);
> 	if (!peer)
5704,5707c5777,5782
< 	ast_log(LOG_DEBUG, "Expiring registration for peer '%s'\n", p->name);
< 	if (ast_test_flag((&globalflags), IAX_RTUPDATE) && (ast_test_flag(p, IAX_TEMPONLY|IAX_RTCACHEFRIENDS)))
< 		realtime_update_peer(p->name, &p->addr, 0);
< 	manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: IAX2/%s\r\nPeerStatus: Unregistered\r\nCause: Expired\r\n", p->name);
---
> 	peer->expire = -1;
> 
> 	ast_log(LOG_DEBUG, "Expiring registration for peer '%s'\n", peer->name);
> 	if (ast_test_flag((&globalflags), IAX_RTUPDATE) && (ast_test_flag(peer, IAX_TEMPONLY|IAX_RTCACHEFRIENDS)))
> 		realtime_update_peer(peer->name, &peer->addr, 0);
> 	manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: IAX2/%s\r\nPeerStatus: Unregistered\r\nCause: Expired\r\n", peer->name);
5709c5784
< 	memset(&p->addr, 0, sizeof(p->addr));
---
> 	memset(&peer->addr, 0, sizeof(peer->addr));
5711,5715c5786,5790
< 	p->expiry = min_reg_expire;
< 	if (!ast_test_flag(p, IAX_TEMPONLY))
< 		ast_db_del("IAX/Registry", p->name);
< 	register_peer_exten(p, 0);
< 	ast_device_state_changed("IAX2/%s", p->name); /* Activate notification */
---
> 	peer->expiry = min_reg_expire;
> 	if (!ast_test_flag(peer, IAX_TEMPONLY))
> 		ast_db_del("IAX/Registry", peer->name);
> 	register_peer_exten(peer, 0);
> 	ast_device_state_changed("IAX2/%s", peer->name); /* Activate notification */
5717c5792
< 		iax2_regfunk(p->name, 0);
---
> 		iax2_regfunk(peer->name, 0);
5719,5722c5794,5797
< 	if (ast_test_flag(p, IAX_RTAUTOCLEAR)) {
< 		ast_set_flag(p, IAX_DELME);
< 		prune_peers();
< 	}
---
> 	if (ast_test_flag(peer, IAX_RTAUTOCLEAR))
> 		ao2_unlink(peers, peer);
> 
> 	peer_unref(peer);
5725c5800
< static int expire_registry(void *data)
---
> static int expire_registry(const void *data)
5763c5838
< 					p->expire = ast_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (void *)p->name);
---
> 					p->expire = iax2_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (void *)p->name);
5788a5864
> 	int res = -1;
5802,5806c5878,5879
< 	if (!iaxs[callno]) {
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return -1;
< 	}
---
> 	if (!iaxs[callno])
> 		goto return_unref;
5847,5849c5920,5921
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return 0;
---
> 		res = 0;
> 		goto return_unref;
5872c5944
< 		p->expire = ast_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (void *)p->name);
---
> 		p->expire = iax2_sched_add(sched, (p->expiry + 10) * 1000, expire_registry, (const void *)p->name);
5896,5898c5968,5974
< 	if (ast_test_flag(p, IAX_TEMPONLY))
< 		destroy_peer(p);
< 	return send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGACK, 0, ied.buf, ied.pos, -1);
---
> 
> 	res = 0;
> 
> return_unref:
> 	peer_unref(p);
> 
> 	return res ? res : send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGACK, 0, ied.buf, ied.pos, -1);
5906a5983
> 	int res = -1;
5914,5917c5991,5995
< 	if (!iaxs[callno]) {
< 		if (p && ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return -1;
---
> 	if (!iaxs[callno])
> 		goto return_unref;
> 	if (!p) {
> 		ast_log(LOG_WARNING, "No such peer '%s'\n", peer_name);
> 		goto return_unref;
5919,5935c5997,6013
< 	if (p) {
< 		memset(&ied, 0, sizeof(ied));
< 		iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
< 		if (p->authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) {
< 			/* Build the challenge */
< 			snprintf(challenge, sizeof(challenge), "%d", (int)ast_random());
< 			ast_string_field_set(iaxs[callno], challenge, challenge);
< 			/* snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", (int)ast_random()); */
< 			iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
< 		}
< 		iax_ie_append_str(&ied, IAX_IE_USERNAME, peer_name);
< 		if (ast_test_flag(p, IAX_TEMPONLY))
< 			destroy_peer(p);
< 		return send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, ied.buf, ied.pos, -1);;
< 	} 
< 	ast_log(LOG_WARNING, "No such peer '%s'\n", peer_name);
< 	return 0;
---
> 	
> 	memset(&ied, 0, sizeof(ied));
> 	iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
> 	if (p->authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) {
> 		/* Build the challenge */
> 		snprintf(challenge, sizeof(challenge), "%d", (int)ast_random());
> 		ast_string_field_set(iaxs[callno], challenge, challenge);
> 		iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
> 	}
> 	iax_ie_append_str(&ied, IAX_IE_USERNAME, peer_name);
> 
> 	res = 0;
> 
> return_unref:
> 	peer_unref(p);
> 
> 	return res ? res : send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, ied.buf, ied.pos, -1);;
5990c6068
< static void __auth_reject(void *nothing)
---
> static void __auth_reject(const void *nothing)
6010c6088
< static int auth_reject(void *data)
---
> static int auth_reject(const void *data)
6033c6111
< 			iaxs[callno]->authid = ast_sched_add(sched, 1000, auth_reject, (void *)(long)callno);
---
> 			iaxs[callno]->authid = iax2_sched_add(sched, 1000, auth_reject, (void *)(long)callno);
6040c6118
< static void __auto_hangup(void *nothing)
---
> static void __auto_hangup(const void *nothing)
6055c6133
< static int auto_hangup(void *data)
---
> static int auto_hangup(const void *data)
6076c6154
< 	iaxs[callno]->autoid = ast_sched_add(sched, 30000, auto_hangup, (void *)(long)callno);
---
> 	iaxs[callno]->autoid = iax2_sched_add(sched, 30000, auto_hangup, (void *)(long)callno);
6104c6182
< static void __iax2_poke_peer_s(void *data)
---
> static void __iax2_poke_peer_s(const void *data)
6106c6184
< 	struct iax2_peer *peer = data;
---
> 	struct iax2_peer *peer = (struct iax2_peer *)data;
6110c6188
< static int iax2_poke_peer_s(void *data)
---
> static int iax2_poke_peer_s(const void *data)
6112c6190
< 	struct iax2_peer *peer = data;
---
> 	struct iax2_peer *peer = (struct iax2_peer *)data;
6646c6724
< 		fr->callno = find_callno(ntohs(vh->callno) & ~0x8000, dcallno, &sin, new, 1, fd);
---
> 		fr->callno = find_callno(ntohs(vh->callno) & ~0x8000, dcallno, &sin, new, fd);
6704c6782
< 				fr->callno = find_callno(callno & ~IAX_FLAG_FULL, 0, &sin, NEW_PREVENT, 1, fd);
---
> 				fr->callno = find_callno(callno & ~IAX_FLAG_FULL, 0, &sin, NEW_PREVENT, fd);
6791c6869
< 		fr->callno = find_callno(ntohs(mh->callno) & ~IAX_FLAG_FULL, dcallno, &sin, new, 1, fd);
---
> 		fr->callno = find_callno(ntohs(mh->callno) & ~IAX_FLAG_FULL, dcallno, &sin, new, fd);
7524c7602
< 						peer->pokeexpire = ast_sched_add(sched, peer->pokefreqnotok, iax2_poke_peer_s, peer);
---
> 						peer->pokeexpire = iax2_sched_add(sched, peer->pokefreqnotok, iax2_poke_peer_s, peer);
7526c7604
< 						peer->pokeexpire = ast_sched_add(sched, peer->pokefreqok, iax2_poke_peer_s, peer);
---
> 						peer->pokeexpire = iax2_sched_add(sched, peer->pokefreqok, iax2_poke_peer_s, peer);
8016c8094,8095
< 			ast_log(LOG_WARNING, "Received mini frame before first full voice frame\n ");
---
> 			if (option_debug)
> 				ast_log(LOG_DEBUG, "Received mini frame before first full voice frame\n");
8235c8314
< 		reg->expire  = ast_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
---
> 		reg->expire  = iax2_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
8242c8321
< 		reg->callno = find_callno(0, 0, &reg->addr, NEW_FORCE, 1, defaultsockfd);
---
> 		reg->callno = find_callno(0, 0, &reg->addr, NEW_FORCE, defaultsockfd);
8254c8333
< 	reg->expire  = ast_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
---
> 	reg->expire  = iax2_sched_add(sched, (5 * reg->refresh / 6) * 1000, iax2_do_register_s, reg);
8302c8381
< 	callno = find_callno(0, 0, &sin, NEW_FORCE, 1, cai.sockfd);
---
> 	callno = find_callno(0, 0, &sin, NEW_FORCE, cai.sockfd);
8311c8390
< 		iaxs[callno]->autoid = ast_sched_add(sched, 15000, auto_hangup, (void *)(long)callno);
---
> 		iaxs[callno]->autoid = iax2_sched_add(sched, 15000, auto_hangup, (void *)(long)callno);
8384c8463
< static void __iax2_poke_noanswer(void *data)
---
> static void __iax2_poke_noanswer(const void *data)
8386c8465
< 	struct iax2_peer *peer = data;
---
> 	struct iax2_peer *peer = (struct iax2_peer *)data;
8400c8479
< 	peer->pokeexpire = ast_sched_add(sched, peer->pokefreqnotok, iax2_poke_peer_s, peer);
---
> 	peer->pokeexpire = iax2_sched_add(sched, peer->pokefreqnotok, iax2_poke_peer_s, peer);
8403c8482
< static int iax2_poke_noanswer(void *data)
---
> static int iax2_poke_noanswer(const void *data)
8405c8484
< 	struct iax2_peer *peer = data;
---
> 	struct iax2_peer *peer = (struct iax2_peer *)data;
8413a8493,8501
> static int iax2_poke_peer_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_peer *peer = obj;
> 
> 	iax2_poke_peer(peer, 0);
> 
> 	return 0;
> }
> 
8416,8417c8504,8505
< 	if (!peer->maxms || !peer->addr.sin_addr.s_addr) {
< 		/* IF we have no IP, or this isn't to be monitored, return
---
> 	if (!peer->maxms || (!peer->addr.sin_addr.s_addr && !peer->dnsmgr)) {
> 		/* IF we have no IP without dnsmgr, or this isn't to be monitored, return
8433c8521
< 	peer->callno = find_callno(0, 0, &peer->addr, NEW_FORCE, 0, peer->sockfd);
---
> 	peer->callno = find_callno(0, 0, &peer->addr, NEW_FORCE, peer->sockfd);
8452c8540
< 		peer->pokeexpire = ast_sched_add(sched, peer->pokefreqnotok, iax2_poke_noanswer, peer);
---
> 		peer->pokeexpire = iax2_sched_add(sched, peer->pokefreqnotok, iax2_poke_noanswer, peer);
8454c8542
< 		peer->pokeexpire = ast_sched_add(sched, DEFAULT_MAXMS * 2, iax2_poke_noanswer, peer);
---
> 		peer->pokeexpire = iax2_sched_add(sched, DEFAULT_MAXMS * 2, iax2_poke_noanswer, peer);
8507c8595
< 	callno = find_callno(0, 0, &sin, NEW_FORCE, 1, cai.sockfd);
---
> 	callno = find_callno(0, 0, &sin, NEW_FORCE, cai.sockfd);
8628,8629c8716
< 				f->retrans = ast_sched_add(sched, f->retrytime, attempt_transmit, f);
< 				signal_condition(&sched_lock, &sched_cond);
---
> 				f->retrans = iax2_sched_add(sched, f->retrytime, attempt_transmit, f);
8804c8891,8915
< 		
---
> static void peer_destructor(void *obj)
> {
> 	struct iax2_peer *peer = obj;
> 
> 	ast_free_ha(peer->ha);
> 
> 	/* Delete it, it needs to disappear */
> 	if (peer->expire > -1)
> 		ast_sched_del(sched, peer->expire);
> 	if (peer->pokeexpire > -1)
> 		ast_sched_del(sched, peer->pokeexpire);
> 	if (peer->callno > 0) {
> 		ast_mutex_lock(&iaxsl[peer->callno]);
> 		iax2_destroy(peer->callno);
> 		ast_mutex_unlock(&iaxsl[peer->callno]);
> 	}
> 
> 	register_peer_exten(peer, 0);
> 
> 	if (peer->dnsmgr)
> 		ast_dnsmgr_release(peer->dnsmgr);
> 
> 	ast_string_field_free_pools(peer);
> }
> 
8812a8924,8926
> 	struct iax2_peer tmp_peer = {
> 		.name = name,
> 	};
8814d8927
< 	AST_LIST_LOCK(&peers);
8816,8824c8929,8933
< 		AST_LIST_TRAVERSE(&peers, peer, entry) {
< 			if (!strcmp(peer->name, name)) {	
< 				if (!ast_test_flag(peer, IAX_DELME))
< 					firstpass = 0;
< 				break;
< 			}
< 		}
< 	} else
< 		peer = NULL;	
---
> 		peer = ao2_find(peers, &tmp_peer, OBJ_POINTER);
> 		if (peer && !ast_test_flag(peer, IAX_DELME))
> 			firstpass = 0;
> 	}
> 
8831,8843c8940,8946
< 		AST_LIST_REMOVE(&peers, peer, entry);
< 		AST_LIST_UNLOCK(&peers);
<  	} else {
< 		AST_LIST_UNLOCK(&peers);
< 		if ((peer = ast_calloc(1, sizeof(*peer)))) {
< 			peer->expire = -1;
< 			peer->pokeexpire = -1;
< 			peer->sockfd = defaultsockfd;
< 			if (ast_string_field_init(peer, 32)) {
< 				free(peer);
< 				peer = NULL;
< 			}
< 		}
---
> 		ao2_unlink(peers, peer);
> 	} else if ((peer = ao2_alloc(sizeof(*peer), peer_destructor))) {
> 		peer->expire = -1;
> 		peer->pokeexpire = -1;
> 		peer->sockfd = defaultsockfd;
> 		if (ast_string_field_init(peer, 32))
> 			peer = peer_unref(peer);
8844a8948
> 
8928,8932c9032,9033
< 					if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) {
< 						ast_string_field_free_pools(peer);
< 						free(peer);
< 						return NULL;
< 					}
---
> 					if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr))
> 						return peer_unref(peer);
8939,8943c9040,9041
< 				if (ast_get_ip(&peer->defaddr, v->value)) {
< 					ast_string_field_free_pools(peer);
< 					free(peer);
< 					return NULL;
< 				}
---
> 				if (ast_get_ip(&peer->defaddr, v->value))
> 					return peer_unref(peer);
9047a9146,9158
> static void user_destructor(void *obj)
> {
> 	struct iax2_user *user = obj;
> 
> 	ast_free_ha(user->ha);
> 	free_context(user->contexts);
> 	if(user->vars) {
> 		ast_variables_destroy(user->vars);
> 		user->vars = NULL;
> 	}
> 	ast_string_field_free_pools(user);
> }
> 
9060,9061c9171,9174
< 	
< 	AST_LIST_LOCK(&users);
---
> 	struct iax2_user tmp_user = {
> 		.name = name,
> 	};
> 
9063,9071c9176,9179
< 		AST_LIST_TRAVERSE(&users, user, entry) {
< 			if (!strcmp(user->name, name)) {	
< 				if (!ast_test_flag(user, IAX_DELME))
< 					firstpass = 0;
< 				break;
< 			}
< 		}
< 	} else
< 		user = NULL;
---
> 		user = ao2_find(users, &tmp_user, OBJ_POINTER);
> 		if (user && !ast_test_flag(user, IAX_DELME))
> 			firstpass = 0;
> 	}
9082,9083c9190
< 		AST_LIST_REMOVE(&users, user, entry);
< 		AST_LIST_UNLOCK(&users);
---
> 		ao2_unlink(users, user);
9085,9087c9192
< 		AST_LIST_UNLOCK(&users);
< 		/* This is going to memset'd to 0 in the next block */
< 		user = ast_calloc(sizeof(*user),1);
---
> 		user = ao2_alloc(sizeof(*user), user_destructor);
9095,9096c9200,9201
< 				free(user);
< 				user = NULL;
---
> 				user = user_unref(user);
> 				goto cleanup;
9259a9365
> cleanup:
9266a9373,9390
> static int peer_delme_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_peer *peer = obj;
> 
> 	ast_set_flag(peer, IAX_DELME);
> 
> 	return 0;
> }
> 
> static int user_delme_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_user *user = obj;
> 
> 	ast_set_flag(user, IAX_DELME);
> 
> 	return 0;
> }
> 
9269,9270d9392
< 	struct iax2_user *user;
< 	struct iax2_peer *peer;
9273,9276c9395
< 	AST_LIST_LOCK(&users);
< 	AST_LIST_TRAVERSE(&users, user, entry)
< 		ast_set_flag(user, IAX_DELME);
< 	AST_LIST_UNLOCK(&users);
---
> 	ao2_callback(users, 0, user_delme_cb, NULL);
9296,9311c9415
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry)
< 		ast_set_flag(peer, IAX_DELME);
< 	AST_LIST_UNLOCK(&peers);
< }
< 
< static void destroy_user(struct iax2_user *user)
< {
< 	ast_free_ha(user->ha);
< 	free_context(user->contexts);
< 	if(user->vars) {
< 		ast_variables_destroy(user->vars);
< 		user->vars = NULL;
< 	}
< 	ast_string_field_free_pools(user);
< 	free(user);
---
> 	ao2_callback(peers, 0, peer_delme_cb, NULL);
9316c9420,9421
< 	struct iax2_user *user = NULL;
---
> 	struct iax2_user *user;
> 	struct ao2_iterator i;
9318,9323c9423,9427
< 	AST_LIST_LOCK(&users);
< 	AST_LIST_TRAVERSE_SAFE_BEGIN(&users, user, entry) {
< 		if (ast_test_flag(user, IAX_DELME)) {
< 			destroy_user(user);
< 			AST_LIST_REMOVE_CURRENT(&users, entry);
< 		}
---
> 	i = ao2_iterator_init(users, 0);
> 	while ((user = ao2_iterator_next(&i))) {
> 		if (ast_test_flag(user, IAX_DELME))
> 			ao2_unlink(users, user);
> 		user_unref(user);
9325,9327d9428
< 	AST_LIST_TRAVERSE_SAFE_END
< 	AST_LIST_UNLOCK(&users);
< 
9330c9431,9432
< static void destroy_peer(struct iax2_peer *peer)
---
> /* Prune peers who still are supposed to be deleted */
> static void prune_peers(void)
9332,9357c9434,9435
< 	ast_free_ha(peer->ha);
< 
< 	/* Delete it, it needs to disappear */
< 	if (peer->expire > -1)
< 		ast_sched_del(sched, peer->expire);
< 	if (peer->pokeexpire > -1)
< 		ast_sched_del(sched, peer->pokeexpire);
< 	if (peer->callno > 0) {
< 		ast_mutex_lock(&iaxsl[peer->callno]);
< 		iax2_destroy(peer->callno);
< 		ast_mutex_unlock(&iaxsl[peer->callno]);
< 	}
< 
< 	register_peer_exten(peer, 0);
< 
< 	if (peer->dnsmgr)
< 		ast_dnsmgr_release(peer->dnsmgr);
< 
< 	ast_string_field_free_pools(peer);
< 
< 	free(peer);
< }
< 
< static void prune_peers(void){
< 	/* Prune peers who still are supposed to be deleted */
< 	struct iax2_peer *peer = NULL;
---
> 	struct iax2_peer *peer;
> 	struct ao2_iterator i;
9359,9364c9437,9441
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE_SAFE_BEGIN(&peers, peer, entry) {
< 		if (ast_test_flag(peer, IAX_DELME)) {
< 			destroy_peer(peer);
< 			AST_LIST_REMOVE_CURRENT(&peers, entry);
< 		}
---
> 	i = ao2_iterator_init(peers, 0);
> 	while ((peer = ao2_iterator_next(&i))) {
> 		if (ast_test_flag(peer, IAX_DELME))
> 			ao2_unlink(peers, peer);
> 		peer_unref(peer);
9366,9367d9442
< 	AST_LIST_TRAVERSE_SAFE_END
< 	AST_LIST_UNLOCK(&peers);
9671,9673c9746,9747
< 						AST_LIST_LOCK(&users);
< 						AST_LIST_INSERT_HEAD(&users, user, entry);
< 						AST_LIST_UNLOCK(&users);
---
> 						__ao2_link(users, user, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
> 						user = NULL;
9677,9679d9750
< 						AST_LIST_LOCK(&peers);
< 						AST_LIST_INSERT_HEAD(&peers, peer, entry);
< 						AST_LIST_UNLOCK(&peers);
9681a9753,9754
> 						__ao2_link(peers, peer, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
> 						peer = NULL;
9717,9719c9790,9791
< 						AST_LIST_LOCK(&users);
< 						AST_LIST_INSERT_HEAD(&users, user, entry);
< 						AST_LIST_UNLOCK(&users);
---
> 						__ao2_link(users, user, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
> 						user = NULL;
9725,9727d9796
< 						AST_LIST_LOCK(&peers);
< 						AST_LIST_INSERT_HEAD(&peers, peer, entry);
< 						AST_LIST_UNLOCK(&peers);
9729a9799,9800
> 						__ao2_link(peers, peer, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
> 						peer = NULL;
9743a9815,9825
> static void poke_all_peers(void)
> {
> 	struct ao2_iterator i;
> 	struct iax2_peer *peer;
> 
> 	i = ao2_iterator_init(peers, 0);
> 	while ((peer = ao2_iterator_next(&i))) {
> 		iax2_poke_peer(peer, 0);
> 		peer_unref(peer);
> 	}
> }
9748d9829
< 	struct iax2_peer *peer;
9769,9773c9850,9851
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry)
< 		iax2_poke_peer(peer, 0);
< 	AST_LIST_UNLOCK(&peers);
< 	reload_firmware();
---
> 	poke_all_peers();
> 	reload_firmware(0);
9825c9903
< 	callno = find_callno(0, 0, &sin, NEW_FORCE, 1, cai.sockfd);
---
> 	callno = find_callno(0, 0, &sin, NEW_FORCE, cai.sockfd);
10187,10188c10265
< 	if (ast_test_flag(peer, IAX_TEMPONLY))
< 		destroy_peer(peer);
---
> 	peer_unref(peer);
10249,10250c10326
< 	if (ast_test_flag(p, IAX_TEMPONLY))
< 		destroy_peer(p);
---
> 	peer_unref(p);
10556a10633
> 	reload_firmware(1);
10562a10640,10642
> 	ao2_ref(peers, -1);
> 	ao2_ref(users, -1);
> 
10571a10652,10660
> static int peer_set_sock_cb(void *obj, void *arg, int flags)
> {
> 	struct iax2_peer *peer = obj;
> 
> 	if (peer->sockfd < 0)
> 		peer->sockfd = defaultsockfd;
> 
> 	return 0;
> }
10580,10581c10669,10678
< 	struct iax2_peer *peer = NULL;
< 	
---
> 
> 	peers = ao2_container_alloc(MAX_PEER_BUCKETS, peer_hash_cb, peer_cmp_cb);
> 	if (!peers)
> 		return AST_MODULE_LOAD_FAILURE;
> 	users = ao2_container_alloc(MAX_USER_BUCKETS, user_hash_cb, user_cmp_cb);
> 	if (!users) {
> 		ao2_ref(peers, -1);
> 		return AST_MODULE_LOAD_FAILURE;
> 	}
> 
10665,10672c10762,10765
< 	AST_LIST_LOCK(&peers);
< 	AST_LIST_TRAVERSE(&peers, peer, entry) {
< 		if (peer->sockfd < 0)
< 			peer->sockfd = defaultsockfd;
< 		iax2_poke_peer(peer, 0);
< 	}
< 	AST_LIST_UNLOCK(&peers);
< 	reload_firmware();
---
> 	ao2_callback(peers, 0, peer_set_sock_cb, NULL);
> 	ao2_callback(peers, 0, iax2_poke_peer_cb, NULL);
> 
> 	reload_firmware(0);
Only in asterisk-1.4.11/channels: chan_iax2.o
Only in asterisk-1.4.11/channels: chan_iax2.so
Only in asterisk-1.4.11/channels: chan_local.o
Only in asterisk-1.4.11/channels: chan_local.so
diff -r asterisk-1.4.11/channels/chan_mgcp.c asterisk-1.4.13/channels/chan_mgcp.c
33c33
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80132 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
607c607
< static int retrans_pkt(void *data)
---
> static int retrans_pkt(const void *data)
Only in asterisk-1.4.11/channels: chan_mgcp.o
Only in asterisk-1.4.11/channels: chan_mgcp.so
diff -r asterisk-1.4.11/channels/chan_misdn.c asterisk-1.4.13/channels/chan_misdn.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79833 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84345 $")
263a264
> 	struct robin_list *new;
269c270
< 	struct robin_list *new = (struct robin_list *)calloc(1, sizeof(struct robin_list));
---
> 	new = (struct robin_list *)calloc(1, sizeof(struct robin_list));
271c272,273
< 	new->channel = 1;
---
> 	new->port = 0;
> 	new->channel = 0;
615c617
< static inline int _misdn_tasks_add_variable (int timeout, ast_sched_cb callback, void *data, int variable)
---
> static inline int _misdn_tasks_add_variable (int timeout, ast_sched_cb callback, const void *data, int variable)
628c630
< static int misdn_tasks_add (int timeout, ast_sched_cb callback, void *data)
---
> static int misdn_tasks_add (int timeout, ast_sched_cb callback, const void *data)
633c635
< static int misdn_tasks_add_variable (int timeout, ast_sched_cb callback, void *data)
---
> static int misdn_tasks_add_variable (int timeout, ast_sched_cb callback, const void *data)
643c645
< static int misdn_l1_task (void *data)
---
> static int misdn_l1_task (const void *data)
650c652
< static int misdn_overlap_dial_task (void *data)
---
> static int misdn_overlap_dial_task (const void *data)
733a736,737
> 	int level;
> 
737c741
< 	int level = atoi(argv[3]);
---
> 	level = atoi(argv[3]);
741a746
> 					int i;
749d753
< 					int i;
758a763
> 					int port;
761c766
< 					int port = atoi(argv[5]);
---
> 					port = atoi(argv[5]);
1223a1229
> 	char buf[128];
1232d1237
< 	char buf[128];
1540a1546,1551
> 	struct ast_channel *ast=ch->ast;
> 	struct misdn_bchannel *bc=ch->bc;
> 	int port;
> 	int pres, screen;
> 	int hdlc=0;
> 
1546,1547c1557,1558
< 	struct ast_channel *ast=ch->ast;
< 	struct misdn_bchannel *bc=ch->bc;
---
> 	ast=ch->ast;
> 	bc=ch->bc;
1553c1564
< 	int port=bc->port;
---
> 	port=bc->port;
1557d1567
< 	int hdlc=0;
1571,1573d1580
< 	
< 	int pres, screen;
< 			
1737c1744,1752
< static int read_config(struct chan_list *ch, int orig) {
---
> static int read_config(struct chan_list *ch, int orig) 
> {
> 	struct ast_channel *ast;
> 	struct misdn_bchannel *bc;
> 	int port;
> 	char lang[BUFFERSIZE+1];
> 	char localmusicclass[BUFFERSIZE+1];
>   	char faxdetect[BUFFERSIZE+1];
> 	int hdlc = 0;
1744,1745c1759,1760
< 	struct ast_channel *ast=ch->ast;
< 	struct misdn_bchannel *bc=ch->bc;
---
> 	ast=ch->ast;
> 	bc=ch->bc;
1751c1766
< 	int port=bc->port;
---
> 	port=bc->port;
1753d1767
< 	chan_misdn_log(1,port,"read_config: Getting Config\n");
1755,1756c1769
< 	char lang[BUFFERSIZE+1];
< 	
---
> 	chan_misdn_log(1,port,"read_config: Getting Config\n");
1761,1762d1773
< 	char localmusicclass[BUFFERSIZE+1];
< 	
1773a1785,1790
> 	misdn_cfg_get( port, MISDN_CFG_ASTDTMF, &ch->ast_dsp, sizeof(int));
> 
> 	if (ch->ast_dsp) {
> 		ch->ignore_dtmf=1;
> 	}
> 
1783d1799
<   	char faxdetect[BUFFERSIZE+1];
1786d1801
< 	int hdlc=0;
1871a1887
> 		char prefix[BUFFERSIZE+1]="";
1882d1897
< 		char prefix[BUFFERSIZE+1]="";
1897c1912
< 			char tmp[l+1];
---
> 			char *tmp = alloca(l+1);
1926c1941
< 			char tmp[l+1];
---
> 			char *tmp = alloca(l+1);
1950c1965
< 	if (ch->faxdetect) {
---
> 	if (ch->faxdetect  || ch->ast_dsp) {
1954,1955c1969,1974
< 		if (ch->dsp)
< 			ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT | DSP_FEATURE_FAX_DETECT);
---
> 		if (ch->dsp) {
> 			if (ch->faxdetect) 
> 				ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT | DSP_FEATURE_FAX_DETECT);
> 			else 
> 				ast_dsp_set_features(ch->dsp, DSP_FEATURE_DTMF_DETECT );
> 		}
1974a1994
> 	int exceed;
2025,2026d2044
< 
< 	int exceed;
2063a2082
> 		int bridging;
2087d2105
< 		int bridging;
2196a2215
> 	struct misdn_bchannel *bc;
2200c2219
< 	struct misdn_bchannel *bc=p->bc;
---
> 	bc=p->bc;
2211c2230
< 			
---
> 			int l;		
2216c2235
< 			int l = sizeof(bc->infos_pending);
---
> 			l = sizeof(bc->infos_pending);
2230c2249
< 		}
---
> 			}
2647c2666
< 	return frame;
---
> 	return f;
2654,2655c2673,2676
< 	int len;
< 	
---
> 	fd_set rrfs;
> 	struct timeval tv;
> 	int len, t;
> 
2670c2691,2716
< 	len=read(tmp->pipe[0],tmp->ast_rd_buf,sizeof(tmp->ast_rd_buf));
---
> 	tv.tv_sec=0;
> 	tv.tv_usec=20000;
> 
> 	FD_ZERO(&rrfs);
> 	FD_SET(tmp->pipe[0],&rrfs);
> 
> 	t=select(FD_SETSIZE,&rrfs,NULL, NULL,&tv);
> 
> 	if (!t) {
> 		chan_misdn_log(3, tmp->bc->port, "read Select Timed out\n");
> 		len=160;
> 	}
> 
> 	if (t<0) {
> 		chan_misdn_log(-1, tmp->bc->port, "Select Error (err=%s)\n",strerror(errno));
> 		return NULL;
> 	}
> 
> 	if (FD_ISSET(tmp->pipe[0],&rrfs)) {
> 		len=read(tmp->pipe[0],tmp->ast_rd_buf,sizeof(tmp->ast_rd_buf));
> 
> 		if (len<=0) {
> 			/* we hangup here, since our pipe is closed */
> 			chan_misdn_log(2,tmp->bc->port,"misdn_read: Pipe closed, hanging up\n");
> 			return NULL;
> 		}
2672,2674c2718
< 	if (len<=0) {
< 		/* we hangup here, since our pipe is closed */
< 		chan_misdn_log(2,tmp->bc->port,"misdn_read: Pipe closed, hanging up\n");
---
> 	} else {
2836a2881,2882
> 	int p1_b, p2_b;
> 	int bridging;
2848,2849d2893
< 	int p1_b, p2_b;
< 
2858d2901
< 	int bridging;
2939a2983
> 	int nd=0;
2946d2989
< 	int nd=0;
3092,3116d3134
< 		
< 			
< 		if (rr) {
< 			int robin_channel = rr->channel;
< 			int port_start;
< 			int next_chan = 1;
< 
< 			do {
< 				port_start = 0;
< 				for (port = misdn_cfg_get_next_port_spin(rr->port); port > 0 && port != port_start;
< 					 port = misdn_cfg_get_next_port_spin(port)) {
< 
< 					if (!port_start)
< 						port_start = port;
< 
< 					if (port >= port_start)
< 						next_chan = 1;
< 					
< 					if (port <= port_start && next_chan) {
< 						int maxbchans=misdn_lib_get_maxchans(port);
< 						if (++robin_channel >= maxbchans) {
< 							robin_channel = 1;
< 						}
< 						next_chan = 0;
< 					}
3118,3144c3136,3183
< 					misdn_cfg_get(port, MISDN_CFG_GROUPNAME, cfg_group, BUFFERSIZE);
< 					
< 					if (!strcasecmp(cfg_group, group)) {
< 						int port_up;
< 						int check;
< 						misdn_cfg_get(port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(int));
< 						port_up = misdn_lib_port_up(port, check);
< 
< 						if (check && !port_up) 
< 							chan_misdn_log(1,port,"L1 is not Up on this Port\n");
< 						
< 						if (check && port_up<0) {
< 							ast_log(LOG_WARNING,"This port (%d) is blocked\n", port);
< 						}
< 						
< 						
< 						if ( port_up>0 )	{
< 							newbc = misdn_lib_get_free_bc(port, robin_channel,0, 0);
< 							if (newbc) {
< 								chan_misdn_log(4, port, " Success! Found port:%d channel:%d\n", newbc->port, newbc->channel);
< 								if (port_up)
< 									chan_misdn_log(4, port, "portup:%d\n",  port_up);
< 								rr->port = newbc->port;
< 								rr->channel = newbc->channel;
< 								break;
< 							}
< 						}
---
> 		if (rr) {
> 			int port_start = 0;
> 			int port_bak = rr->port;
> 			int chan_bak = rr->channel;
> 
> 			if (!rr->port)
> 				rr->port = misdn_cfg_get_next_port_spin(rr->port);
> 			
> 			for (; rr->port > 0 && rr->port != port_start;
> 				 rr->port = misdn_cfg_get_next_port_spin(rr->port)) {
> 				int port_up;
> 				int check;
> 				int max_chan;
> 				int last_chance = 0;
> 
> 				if (!port_start)
> 					port_start = rr->port;
> 
> 				misdn_cfg_get(rr->port, MISDN_CFG_GROUPNAME, cfg_group, BUFFERSIZE);
> 				if (strcasecmp(cfg_group, group))
> 					continue;
> 
> 				misdn_cfg_get(rr->port, MISDN_CFG_PMP_L1_CHECK, &check, sizeof(int));
> 				port_up = misdn_lib_port_up(rr->port, check);
> 
> 				if (check && !port_up) 
> 					chan_misdn_log(1, rr->port, "L1 is not Up on this Port\n");
> 
> 				if (check && port_up < 0)
> 					ast_log(LOG_WARNING,"This port (%d) is blocked\n", rr->port);
> 
> 				if (port_up <= 0)
> 					continue;
> 
> 				max_chan = misdn_lib_get_maxchans(rr->port);
> 
> 				for (++rr->channel; !last_chance && rr->channel <= max_chan; ++rr->channel) {
> 					if (rr->port == port_bak && rr->channel == chan_bak)
> 						last_chance = 1;
> 
> 					chan_misdn_log(1, 0, "trying port:%d channel:%d\n", rr->port, rr->channel);
> 					newbc = misdn_lib_get_free_bc(rr->port, rr->channel, 0, 0);
> 					if (newbc) {
> 						chan_misdn_log(4, rr->port, " Success! Found port:%d channel:%d\n", newbc->port, newbc->channel);
> 						if (port_up)
> 							chan_misdn_log(4, rr->port, "portup:%d\n",  port_up);
> 						port = rr->port;
> 						break;
3147,3148c3186,3195
< 			} while (!newbc && robin_channel != rr->channel);
< 			
---
> 
> 				if (newbc || last_chance)
> 					break;
> 
> 				rr->channel = 0;
> 			}
> 			if (!newbc) {
> 				rr->port = port_bak;
> 				rr->channel = chan_bak;
> 			}
3309a3357
> 		int bridging;
3321d3368
< 		int bridging;
3784c3831,3832
< 	if (bc->uulen) {
---
> 	if (bc->uulen && (bc->uulen < sizeof(bc->uu))) {
> 		bc->uu[bc->uulen]=0;
3849a3898
> 	int msn_valid;
4050a4100
> 			int digits;
4062,4063d4111
< 			
< 			int digits;
4097c4145
< 	int msn_valid = misdn_cfg_is_msn_valid(bc->port, bc->dad);
---
> 	msn_valid = misdn_cfg_is_msn_valid(bc->port, bc->dad);
4105d4152
< 		chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
4106a4154
> 		chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
4114a4163,4166
> 		struct chan_list *ch;
> 		struct ast_channel *chan;
> 		int exceed;
> 		int pres,screen;
4115a4168
> 		int ai, im;
4122d4174
< 			chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
4123a4176
> 			chan_misdn_log(0, bc->port, " --> Call Waiting on PMP sending RELEASE_COMPLETE\n");
4131,4133c4184
< 		struct chan_list *ch=init_chan_list(ORG_MISDN);
< 		struct ast_channel *chan;
< 		int exceed;
---
> 		ch=init_chan_list(ORG_MISDN);
4165,4166d4215
< 		int pres,screen;
< 
4251d4299
< 		int ai;
4259d4306
< 		int im;
4446a4494
> 		struct ast_channel *bridged;
4452c4500
< 		struct ast_channel *bridged=ast_bridged_channel(ch->ast);
---
> 		bridged=ast_bridged_channel(ch->ast);
4464a4513,4518
> 	ch->l3id=bc->l3_id;
> 	ch->addr=bc->addr;
> 
> 	start_bc_tones(ch);
> 	
> 	ch->state = MISDN_CONNECTED;
4466c4520,4521
< 	/* notice that we don't break here!*/
---
> 	ast_queue_control(ch->ast, AST_CONTROL_ANSWER);
> 	break;
4475,4478d4529
< 		
< 		if (!ch->ast) break;
< 
< 		ast_queue_control(ch->ast, AST_CONTROL_ANSWER);
4538,4540d4588
< 		
< 			if (bc->need_release_complete) 
< 				misdn_lib_send_event(bc,EVENT_RELEASE_COMPLETE);
4630a4679
> 			int t;
4640c4689
< 			int t=select(FD_SETSIZE,NULL,&wrfs,NULL,&tv);
---
> 			t=select(FD_SETSIZE,NULL,&wrfs,NULL,&tv);
4652a4702
> 				int ret;
4654c4704
< 				int ret=write(ch->pipe[1], bc->bframe, bc->bframe_len);
---
> 				ret=write(ch->pipe[1], bc->bframe, bc->bframe_len);
4657c4707
< 					chan_misdn_log(-1, bc->port, "Write returned <=0 (err=%s) --> hanging up channel\n",strerror(errno));
---
> 					chan_misdn_log(0, bc->port, "Write returned <=0 (err=%s) --> hanging up channel\n",strerror(errno));
4721a4772
> 		struct ast_channel *hold_ast;
4723c4774
< 			chan_misdn_log(4, bc->port, " --> no CH, searching in holded");
---
> 			chan_misdn_log(4, bc->port, " --> no CH, searching in holded\n");
4740c4791
< 		struct ast_channel *hold_ast=ast_bridged_channel(ch->ast);
---
> 		hold_ast=ast_bridged_channel(ch->ast);
4746c4797,4798
< 		if ( misdn_lib_send_event(bc, EVENT_RETRIEVE_ACKNOWLEDGE) < 0)
---
> 		if ( misdn_lib_send_event(bc, EVENT_RETRIEVE_ACKNOWLEDGE) < 0) {
> 			chan_misdn_log(4, bc->port, " --> RETRIEVE_ACK failed\n");
4747a4800
> 		}
4753a4807
> 		struct ast_channel *bridged;
4763c4817
< 		struct ast_channel *bridged=ast_bridged_channel(ch->ast);
---
> 		bridged=ast_bridged_channel(ch->ast);
4947a5002,5003
> 		int ntflags=0;
> 		char ntfile[BUFFERSIZE+1];
4957,4959d5012
< 		int ntflags=0;
< 		char ntfile[BUFFERSIZE+1];
< 
5099a5153,5159
> 	char group[BUFFERSIZE+1];
> 	char *port_str;
> 	int port_up;
> 	int timeout;
> 	int dowait=0;
> 	int port=0;
> 
5118,5124c5178
< 	char group[BUFFERSIZE+1];
< 	char *port_str;
< 
< 	int port=0;
< 	int timeout=atoi(args.timeout);
< 	int dowait=0;
< 
---
> 	timeout=atoi(args.timeout);
5126,5127d5179
< 
< 	int port_up;
5137c5189,5191
< 			port = misdn_cfg_get_next_port(port)) {
---
> 			port = misdn_cfg_get_next_port(port)) 
> 		{
> 			char cfg_group[BUFFERSIZE+1];
5141d5194
< 			char cfg_group[BUFFERSIZE+1];
5195a5249,5251
> 		char keys[4096];
> 		char *key, *tmp;
> 		int i;
5267,5270c5323
<       
< 			char keys[4096];
< 			char *key=NULL, *tmp;
< 			int i;
---
> 			key=NULL;
5563a5617,5620
> 	va_list ap;
> 	char buf[1024];
> 	char port_buf[8];
> 
5570,5572d5626
< 	va_list ap;
< 	char buf[1024];
< 	char port_buf[8];
Only in asterisk-1.4.11/channels: chan_oss.o
Only in asterisk-1.4.11/channels: chan_oss.so
diff -r asterisk-1.4.11/channels/chan_phone.c asterisk-1.4.13/channels/chan_phone.c
34c34
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79174 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81523 $")
1264c1264,1265
< 	ast_channel_unregister(cur_tech);
---
> 	if (cur_tech)
> 		ast_channel_unregister(cur_tech);
1337c1338
< 		return -1;
---
> 		return AST_MODULE_LOAD_FAILURE;
1353c1354
< 					return -1;
---
> 					return AST_MODULE_LOAD_FAILURE;
1421c1422
< 		return -1;
---
> 		return AST_MODULE_LOAD_FAILURE;
1426c1427
< 	return 0;
---
> 	return AST_MODULE_LOAD_SUCCESS;
Only in asterisk-1.4.11/channels: chan_phone.o
Only in asterisk-1.4.11/channels: chan_phone.so
diff -r asterisk-1.4.11/channels/chan_sip.c asterisk-1.4.13/channels/chan_sip.c
93c93
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80183 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 85280 $")
1228c1228
< static int retrans_pkt(void *data);
---
> static int retrans_pkt(const void *data);
1261c1261
< static int __sip_autodestruct(void *data);
---
> static int __sip_autodestruct(const void *data);
1269c1269
< static int auto_congest(void *nothing);
---
> static int auto_congest(const void *nothing);
1324c1324
< static int expire_register(void *data);
---
> static int expire_register(const void *data);
1337c1337
< static int sip_poke_noanswer(void *data);
---
> static int sip_poke_noanswer(const void *data);
1416c1416
< static int sip_poke_peer_s(void *data);
---
> static int sip_poke_peer_s(const void *data);
1423c1423
< static int expire_register(void *data);
---
> static int expire_register(const void *data);
1440c1440
< static int sip_reregister(void *data);
---
> static int sip_reregister(const void *data);
1442c1442
< static int sip_reg_timeout(void *data);
---
> static int sip_reg_timeout(const void *data);
1884c1884
< static int retrans_pkt(void *data)
---
> static int retrans_pkt(const void *data)
1886c1886
< 	struct sip_pkt *pkt = data, *prev, *cur = NULL;
---
> 	struct sip_pkt *pkt = (struct sip_pkt *)data, *prev, *cur = NULL;
2037c2037
< 		ast_log(LOG_DEBUG, "*** SIP TIMER: Initalizing retransmit timer on packet: Id  #%d\n", pkt->retransid);
---
> 		ast_log(LOG_DEBUG, "*** SIP TIMER: Initializing retransmit timer on packet: Id  #%d\n", pkt->retransid);
2057c2057
< static int __sip_autodestruct(void *data)
---
> static int __sip_autodestruct(const void *data)
2059c2059
< 	struct sip_pvt *p = data;
---
> 	struct sip_pvt *p = (struct sip_pvt *)data;
2871c2871
< static int auto_congest(void *nothing)
---
> static int auto_congest(const void *nothing)
2873c2873
< 	struct sip_pvt *p = nothing;
---
> 	struct sip_pvt *p = (struct sip_pvt *)nothing;
3904c3904
< 	int needvideo = 0;
---
> 	int needvideo = 0, video = 0;
3933c3933
< 	if (i->jointcapability)	 	/* The joint capabilities of us and peer */
---
> 	if (i->jointcapability) {	 	/* The joint capabilities of us and peer */
3935c3935,3936
< 	else if (i->capability)		/* Our configured capability for this peer */
---
> 		video = i->jointcapability & AST_FORMAT_VIDEO_MASK;
> 	} else if (i->capability)	{	/* Our configured capability for this peer */
3937c3938,3939
< 	else
---
> 		video = i->capability & AST_FORMAT_VIDEO_MASK;
> 	} else {
3938a3941,3942
> 		video = global_capability & AST_FORMAT_VIDEO_MASK;
> 	}
3941c3945
< 	tmp->nativeformats = ast_codec_choose(&i->prefs, what, 1) | (i->jointcapability & AST_FORMAT_VIDEO_MASK);
---
> 	tmp->nativeformats = ast_codec_choose(&i->prefs, what, 1) | video;
6938c6942
< 				sprintf(buf, "%s <%s>", p->refer->referred_by_name, p->refer->referred_by);
---
> 				snprintf(buf, sizeof(buf), "%s <%s>", p->refer->referred_by_name, p->refer->referred_by);
7278c7282
< static int sip_reregister(void *data) 
---
> static int sip_reregister(const void *data) 
7310c7314
< static int sip_reg_timeout(void *data)
---
> static int sip_reg_timeout(const void *data)
7715c7719
< static int expire_register(void *data)
---
> static int expire_register(const void *data)
7717c7721
< 	struct sip_peer *peer = data;
---
> 	struct sip_peer *peer = (struct sip_peer *)data;
7744c7748
< static int sip_poke_peer_s(void *data)
---
> static int sip_poke_peer_s(const void *data)
7746c7750
< 	struct sip_peer *peer = data;
---
> 	struct sip_peer *peer = (struct sip_peer *)data;
8331,8333c8335,8337
< 	/* Challenge again, and again, and again */
< 	transmit_response_with_auth(p, response, req, p->randdata, reliable, respheader, 0);
< 	sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
---
> 	/* Tell the UAS not to re-send this authentication data, because
> 	   it will continue to fail
> 	*/
8335c8339
< 	return AUTH_CHALLENGE_SENT;
---
> 	return AUTH_SECRET_FAILED;
8555c8559
< 				if (res == AUTH_UNKNOWN_DOMAIN || res == AUTH_PEER_NOT_DYNAMIC)
---
> 				if (res == AUTH_PEER_NOT_DYNAMIC)
9335c9339
< 				p->timer_t1 = peer->lastms;
---
> 				p->timer_t1 = peer->lastms < global_t1min ? global_t1min : peer->lastms;
11833c11837
< 	if (resp > 100 && resp < 200 && resp!=101 && resp != 180 && resp != 183)
---
> 	if (resp > 100 && resp < 200 && resp!=101 && resp != 180 && resp != 182 && resp != 183)
11853a11858
> 	case 182:       /* 182 Queued */
11866c11871
< 				/* Queue a progress frame only if we have SDP in 180 */
---
> 				/* Queue a progress frame only if we have SDP in 180 or 182 */
12414a12420,12423
> 		case 182:       /* 182 Queued */
> 			if (sipmethod == SIP_INVITE)
> 				handle_response_invite(p, resp, rest, req, seqno);
> 			break;
12876c12885,12893
< 	/* Prepare for taking over the channel */
---
> 	/* Prepare for taking over the channel.  Go ahead and grab this channel
> 	 * lock here to avoid a deadlock with callbacks into the channel driver
> 	 * that hold the channel lock and want the pvt lock.  */
> 	while (ast_channel_trylock(chan2)) {
> 		struct sip_pvt *pvt = chan2->tech_pvt;
> 		ast_mutex_unlock(&pvt->lock);
> 		usleep(1);
> 		ast_mutex_lock(&pvt->lock);
> 	}
12877a12895
> 	ast_channel_unlock(chan2);
13649c13667
< 			else
---
> 			else {
13650a13669,13672
> 				ast_log(LOG_NOTICE, "Call from '%s' to extension"
> 					" '%s' rejected because extension not found.\n",
> 					S_OR(p->username, p->peername), p->exten);
> 			}
15321,15329c15343,15348
< 								if (!(ast_rtp_get_bridged(sip->rtp))) {
< 									ast_log(LOG_NOTICE,
< 										"Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
< 										sip->owner->name,
< 										(long) (t - sip->lastrtprx));
< 									/* Issue a softhangup */
< 									ast_softhangup_nolock(sip->owner, AST_SOFTHANGUP_DEV);
< 								} else
< 									ast_log(LOG_NOTICE, "'%s' will not be disconnected in %ld seconds because it is directly bridged to another RTP stream\n", sip->owner->name, (long) (t - sip->lastrtprx));
---
> 								ast_log(LOG_NOTICE,
> 									"Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
> 									sip->owner->name,
> 									(long) (t - sip->lastrtprx));
> 								/* Issue a softhangup */
> 								ast_softhangup_nolock(sip->owner, AST_SOFTHANGUP_DEV);
15435c15454
< static int sip_poke_noanswer(void *data)
---
> static int sip_poke_noanswer(const void *data)
15437c15456
< 	struct sip_peer *peer = data;
---
> 	struct sip_peer *peer = (struct sip_peer *)data;
15613a15633,15635
> 		char *port = strchr(host, ':');
> 		if (port)
> 			*port = '\0';
15715a15738,15741
> 
> 	if (ast_strlen_zero(value))
> 		return;
> 
16585a16612,16613
> 		} else if (!strcasecmp(v->name, "subscribecontext")) {
> 			ast_copy_string(default_subscribecontext, v->value, sizeof(default_subscribecontext));
17000c17028
< 	manager_event(EVENT_FLAG_SYSTEM, "ChannelReload", "Channel: SIP\r\nReloadReason: %s\r\nRegistry_Count: %d\r\nPeer_Count: %d\r\nUser_Count: %d\r\n\r\n", channelreloadreason2txt(reason), registry_count, peer_count, user_count);
---
> 	manager_event(EVENT_FLAG_SYSTEM, "ChannelReload", "Channel: SIP\r\nReloadReason: %s\r\nRegistry_Count: %d\r\nPeer_Count: %d\r\nUser_Count: %d\r\n", channelreloadreason2txt(reason), registry_count, peer_count, user_count);
17245c17273
< 	if (changed && !ast_test_flag(&p->flags[0], SIP_GOTREFER)) {
---
> 	if (changed && !ast_test_flag(&p->flags[0], SIP_GOTREFER) && !ast_test_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER)) {
Only in asterisk-1.4.11/channels: chan_sip.o
Only in asterisk-1.4.11/channels: chan_sip.so
Only in asterisk-1.4.11/channels: chan_skinny.o
Only in asterisk-1.4.11/channels: chan_skinny.so
diff -r asterisk-1.4.11/channels/chan_zap.c asterisk-1.4.13/channels/chan_zap.c
50c50
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79912 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84783 $")
1196c1196
< 		return "PRI Signalling";
---
> 		return "ISDN PRI";
1198c1198
< 		return "SF (Tone) Signalling Immediate";
---
> 		return "SF (Tone) Immediate";
1200c1200
< 		return "SF (Tone) Signalling Wink";
---
> 		return "SF (Tone) Wink";
1202c1202
< 		return "SF (Tone) Signalling with Feature Group D (DTMF)";
---
> 		return "SF (Tone) with Feature Group D (DTMF)";
1204c1204
< 		return "SF (Tone) Signalling with Feature Group D (MF)";
---
> 		return "SF (Tone) with Feature Group D (MF)";
1206c1206
< 		return "SF (Tone) Signalling with Feature Group B (MF)";
---
> 		return "SF (Tone) with Feature Group B (MF)";
1208c1208
< 		return "GR-303 Signalling with FXOKS";
---
> 		return "GR-303 with FXOKS";
1210c1210
< 		return "GR-303 Signalling with FXSKS";
---
> 		return "GR-303 with FXSKS";
1212c1212
< 		return "Pseudo Signalling";
---
> 		return "Pseudo";
3170c3170,3174
< 	ast_mutex_lock(&c1->lock);
---
> 	while (ast_mutex_trylock(&c1->lock)) {
> 		ast_mutex_unlock(&c0->lock);
> 		usleep(1);
> 		ast_mutex_lock(&c0->lock);
> 	}
3338c3342,3347
< 		ast_mutex_lock(&c1->lock);
---
> 		while (ast_mutex_trylock(&c1->lock)) {
> 			ast_mutex_unlock(&c0->lock);
> 			usleep(1);
> 			ast_mutex_lock(&c0->lock);
> 		}
> 
4917d4925
< 	unsigned char outbuf[4096];
4971,4974d4978
< 	if (frame->datalen > sizeof(outbuf) * 2) {
< 		ast_log(LOG_WARNING, "Frame too large\n");
< 		return 0;
< 	}
9130c9134
< 						if (!ast_strlen_zero(e->hangup.useruserinfo)) {
---
> 						if (pri->pvts[chanpos]->owner && !ast_strlen_zero(e->hangup.useruserinfo)) {
10307c10311
< 	int x = 0;
---
> 	int x;
10308a10313
> 
10357c10362
< 		x++;
---
> 		x = pl->channel;
Only in asterisk-1.4.11/channels: gentone
diff -r asterisk-1.4.11/channels/h323/ast_h323.cxx asterisk-1.4.13/channels/h323/ast_h323.cxx
29c29
<  * Version Info: $Id: ast_h323.cxx 53131 2007-02-03 10:02:55Z pcadach $
---
>  * Version Info: $Id: ast_h323.cxx 81383 2007-08-30 15:38:29Z russell $
289a290
> #ifdef PTRACING
290a292
> #endif
1651a1654
> #ifdef PTRACING
1655a1659
> #endif
1714a1719
> #ifdef PTRACING
1717a1723
> #endif
Only in asterisk-1.4.11/channels: iax2-parser.o
Only in asterisk-1.4.11/channels: iax2-provision.o
diff -r asterisk-1.4.11/channels/Makefile asterisk-1.4.13/channels/Makefile
82a83,85
> dist-clean::
> 	rm -f h323/Makefile
> 
diff -r asterisk-1.4.11/channels/misdn/chan_misdn_config.h asterisk-1.4.13/channels/misdn/chan_misdn_config.h
50a51
> 	MISDN_CFG_ASTDTMF,            /* int (bool) */
diff -r asterisk-1.4.11/channels/misdn/isdn_lib.c asterisk-1.4.13/channels/misdn/isdn_lib.c
381a382
> 	struct misdn_stack *stack;
384c385
< 	struct misdn_stack *stack=get_stack_by_bc(bc);
---
> 	stack=get_stack_by_bc(bc);
476a478
> 	int bnums;
494c496
< 	int bnums=stack->pri?stack->b_num:stack->b_num-1;
---
> 	bnums=stack->pri?stack->b_num:stack->b_num-1;
950a953,955
> 	int midev, i;
> 	int channel;
> 	int b_stid;
963,965c968,970
< 	int midev=stack->midev;
< 	int channel=bc->channel-1-(bc->channel>16);
< 	int b_stid=stack->b_stids[channel>=0?channel:0];
---
> 	midev=stack->midev;
> 	channel=bc->channel-1-(bc->channel>16);
> 	b_stid=stack->b_stids[channel>=0?channel:0];
979d983
< 	int i;
1565,1567d1568
< 
< 		setup_bc(bc);
< 
1578a1580,1581
> 
> 		setup_bc(bc);
1594a1598
> 	struct misdn_bchannel* bc;
1601c1605
< 		struct misdn_bchannel* bc=misdn_lib_get_free_bc(stack->port, 0, 1, 0);
---
> 		bc=misdn_lib_get_free_bc(stack->port, 0, 1, 0);
1791a1796,1797
> 			struct misdn_bchannel *bc;
> 			struct misdn_bchannel *hold_bc;
1808,1809c1814,1815
< 			struct misdn_bchannel *bc=find_bc_by_l3id(stack, hh->dinfo);
< 			struct misdn_bchannel *hold_bc=stack_holder_find(stack,bc->l3_id);
---
> 			bc=find_bc_by_l3id(stack, hh->dinfo);
> 			hold_bc=stack_holder_find(stack,bc->l3_id);
1820a1827
> 				bc->b_stid=0;
2041a2049,2050
> 				int channel;
> 				int tmpcause;	
2052,2053c2061,2062
< 					int channel=bc->channel;
< 					int tmpcause=bc->cause;	
---
> 					channel=bc->channel;
> 					tmpcause=bc->cause;	
2267,2268c2276
< 
< 
---
> 	struct misdn_stack *stack;
2276c2284
< 	struct misdn_stack *stack=get_stack_by_bc(bc);
---
> 	stack=get_stack_by_bc(bc);
2464a2473
> 				int i;
2482c2491
< 				int i=cb_event( EVENT_BCHAN_DATA, bc, glob_mgr->user_data);
---
> 				i=cb_event( EVENT_BCHAN_DATA, bc, glob_mgr->user_data);
2596a2606
> 			int ret;
2603c2613
< 			int ret=handle_event(bc, event, frm);
---
> 			ret=handle_event(bc, event, frm);
2684d2693
< 			cb_log(0, stack->port, " --> Didn't find BC so temporarly creating dummy BC (l3id:%x) on this port.\n", frm->dinfo);
2685a2695
> 			cb_log(0, stack->port, " --> Didn't find BC so temporarly creating dummy BC (l3id:%x) on this port.\n", frm->dinfo);
2817a2828
> 	struct misdn_stack *stack;
2826c2837
< 	struct misdn_stack * stack=find_stack_by_addr(frm->addr);
---
> 	stack=find_stack_by_addr(frm->addr);
2853d2863
< 
3101a3112
> 			int maxnum;
3121c3132
< 			int maxnum=inout&&!stack->pri&&!stack->ptp?stack->b_num+1:stack->b_num;
---
> 			maxnum=inout&&!stack->pri&&!stack->ptp?stack->b_num+1:stack->b_num;
3177a3189
> 	struct misdn_stack *stack;
3180c3192
< 	struct misdn_stack *stack=get_stack_by_bc(bc);
---
> 	stack=get_stack_by_bc(bc);
3229a3242
> 	struct misdn_stack *stack;
3234c3247
< 	struct misdn_stack *stack=get_stack_by_bc(bc);
---
> 	stack=get_stack_by_bc(bc);
3332a3346
> 			int channel;
3333a3348
> 				struct misdn_bchannel *bc2;
3335c3350
< 				struct misdn_bchannel *bc2=find_bc_by_confid(bc->conf_id);
---
> 				bc2=find_bc_by_confid(bc->conf_id);
3343c3358
< 			int channel=bc->channel;
---
> 			channel=bc->channel;
3485a3501
> 			struct misdn_bchannel *bc;
3497c3513
< 			struct misdn_bchannel *bc=find_bc_by_channel( port , channel);
---
> 			bc=find_bc_by_channel( port , channel);
3664a3681,3683
> 	int max;
> 	int i;
> 	struct misdn_bchannel dummybc;
3668d3686
< 	struct misdn_bchannel dummybc;
3672,3673c3690,3691
< 	int max=stack->pri?30:2;
< 	int i=1;
---
> 	max=stack->pri?30:2;
> 	i=1;
3681a3700
> 		int cnt;
3689d3707
< 		int cnt;
3767a3786
> 					struct misdn_bchannel *bc;
3775c3794
< 					struct misdn_bchannel *bc=find_bc_by_l3id(stack,frm->addr);
---
> 					bc=find_bc_by_l3id(stack,frm->addr);
4042c4061,4062
< 
---
> 	char buf[128];	
> 	iframe_t dact;
4045d4064
< 
4062d4080
< 	iframe_t dact;
4067d4084
< 	char buf[128];	
4079a4097,4099
> 	char buf[4096 + mISDN_HEADER_LEN];
> 	iframe_t *frm;
> 	int  r;
4091,4093c4111
< 	char buf[4096 + mISDN_HEADER_LEN];
< 	iframe_t *frm= (iframe_t*)buf;
< 	int  r;
---
> 	frm= (iframe_t*)buf;
4299a4318,4319
> 	char buf[mISDN_HEADER_LEN+128];
> 	iframe_t *frm;
4319,4320c4339
< 	char buf[mISDN_HEADER_LEN+128];
< 	iframe_t *frm=(iframe_t*)buf;
---
> 	frm=(iframe_t*)buf;
4409a4429,4431
> 	char data[16];
> 	int len=15;
> 
4416,4418d4437
< 	char data[16];
< 	int len=15;
< 
4435c4454,4455
< void misdn_lib_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2) {
---
> void misdn_lib_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2) 
> {
4437,4439d4456
< 
< 	cb_log(4, bc1->port, "I Send: BRIDGE from:%d to:%d\n",bc1->port,bc2->port);
< 	
4444c4461,4463
< 		
---
> 
> 	cb_log(4, bc1->port, "I Send: BRIDGE from:%d to:%d\n",bc1->port,bc2->port);
> 	
diff -r asterisk-1.4.11/channels/misdn_config.c asterisk-1.4.13/channels/misdn_config.c
31c31
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 67210 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
222a223,226
> 	{ "astdtmf", MISDN_CFG_ASTDTMF, MISDN_CTYPE_BOOL, "no", NONE,
> 		"Enable this if you want to use the Asterisk dtmf detector\n"
> 		"instead of the mISDN_dsp/hfcmulti one."
> 		},
999c1003
< 	if (misdn_init) {
---
> 	if (!ast_strlen_zero(misdn_init)) {
Only in asterisk-1.4.11/channels: ringtone.h
diff -r asterisk-1.4.11/.cleancount asterisk-1.4.13/.cleancount
1c1
< 28
---
> 29
Only in asterisk-1.4.11/codecs: codec_adpcm.o
Only in asterisk-1.4.11/codecs: codec_adpcm.so
Only in asterisk-1.4.11/codecs: codec_alaw.o
Only in asterisk-1.4.11/codecs: codec_alaw.so
Only in asterisk-1.4.11/codecs: codec_a_mu.o
Only in asterisk-1.4.11/codecs: codec_a_mu.so
Only in asterisk-1.4.11/codecs: codec_g726.o
Only in asterisk-1.4.11/codecs: codec_g726.so
Only in asterisk-1.4.11/codecs: codec_gsm.o
Only in asterisk-1.4.11/codecs: codec_gsm.so
Only in asterisk-1.4.11/codecs: codec_ilbc.o
Only in asterisk-1.4.11/codecs: codec_ilbc.so
Only in asterisk-1.4.11/codecs: codec_lpc10.o
Only in asterisk-1.4.11/codecs: codec_lpc10.so
Only in asterisk-1.4.11/codecs: codec_ulaw.o
Only in asterisk-1.4.11/codecs: codec_ulaw.so
diff -r asterisk-1.4.11/codecs/codec_zap.c asterisk-1.4.13/codecs/codec_zap.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 62174 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81405 $")
53a54
> #include "asterisk/cli.h"
62a64,94
> static struct channel_usage {
> 	int total;
> 	int encoders;
> 	int decoders;
> } channels;
> 
> static char show_transcoder_usage[] =
> "Usage: show transcoder\n"
> "       Displays channel utilization of Zaptel transcoder(s).\n";
> 
> static char transcoder_show_usage[] =
> "Usage: transcoder show\n"
> "       Displays channel utilization of Zaptel transcoder(s).\n";
> 
> static int transcoder_show(int fd, int argc, char **argv);
> 
> static struct ast_cli_entry cli_deprecated[] = {
> 	{ { "show", "transcoder", NULL },
> 	  transcoder_show,
> 	  "Display Zaptel transcoder utilization.",
> 	  show_transcoder_usage}
> };
> 
> static struct ast_cli_entry cli[] = {
> 	{ { "transcoder", "show", NULL },
> 	  transcoder_show,
> 	  "Display Zaptel transcoder utilization.",
> 	  transcoder_show_usage, NULL,
> 	  &cli_deprecated[0]}
> };
> 
86a119,132
> static int transcoder_show(int fd, int argc, char **argv)
> {
> 	struct channel_usage copy;
> 
> 	copy = channels;
> 
> 	if (copy.total == 0)
> 		ast_cli(fd, "No Zaptel transcoders found.\n");
> 	else
> 		ast_cli(fd, "%d/%d encoders/decoders of %d channels are in use.\n", copy.encoders, copy.decoders, copy.total);
> 
> 	return RESULT_SUCCESS;
> }
> 
175a222,232
> 	ast_atomic_fetchadd_int(&channels.total, -1);
> 	switch (ztp->hdr->dstfmt) {
> 	case AST_FORMAT_G729A:
> 	case AST_FORMAT_G723_1:
> 		ast_atomic_fetchadd_int(&channels.encoders, -1);
> 		break;
> 	default:
> 		ast_atomic_fetchadd_int(&channels.decoders, -1);
> 		break;
> 	}
> 
226a284,294
> 	ast_atomic_fetchadd_int(&channels.total, +1);
> 	switch (hdr->dstfmt) {
> 	case AST_FORMAT_G729A:
> 	case AST_FORMAT_G723_1:
> 		ast_atomic_fetchadd_int(&channels.encoders, +1);
> 		break;
> 	default:
> 		ast_atomic_fetchadd_int(&channels.decoders, +1);
> 		break;
> 	}
> 
403a472
> 	ast_cli_unregister_multiple(cli, sizeof(cli) / sizeof(cli[0]));
412a482
> 	ast_cli_register_multiple(cli, sizeof(cli) / sizeof(cli[0]));
Only in asterisk-1.4.11/codecs/gsm: lib
Only in asterisk-1.4.11/codecs/gsm/src: add.o
Only in asterisk-1.4.11/codecs/gsm/src: code.o
Only in asterisk-1.4.11/codecs/gsm/src: debug.o
Only in asterisk-1.4.11/codecs/gsm/src: decode.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_create.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_decode.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_destroy.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_encode.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_explode.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_implode.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_option.o
Only in asterisk-1.4.11/codecs/gsm/src: gsm_print.o
Only in asterisk-1.4.11/codecs/gsm/src: k6opt.o
diff -r asterisk-1.4.11/codecs/gsm/src/long_term.c asterisk-1.4.13/codecs/gsm/src/long_term.c
165c165,168
< 	register int  	k, lambda;
---
> 	register int  	k;
> #ifndef K6OPT
> 	register int lambda;
> #endif
Only in asterisk-1.4.11/codecs/gsm/src: long_term.o
diff -r asterisk-1.4.11/codecs/gsm/src/lpc.c asterisk-1.4.13/codecs/gsm/src/lpc.c
37a38
> #ifndef K6OPT
38a40,41
> 	word temp;
> #endif
40c43
< 	word		temp, smax, scalauto;
---
> 	word		smax, scalauto;
Only in asterisk-1.4.11/codecs/gsm/src: lpc.o
Only in asterisk-1.4.11/codecs/gsm/src: preprocess.o
Only in asterisk-1.4.11/codecs/gsm/src: rpe.o
Only in asterisk-1.4.11/codecs/gsm/src: short_term.o
Only in asterisk-1.4.11/codecs/gsm/src: table.o
Only in asterisk-1.4.11/codecs/ilbc: anaFilter.o
Only in asterisk-1.4.11/codecs/ilbc: constants.o
Only in asterisk-1.4.11/codecs/ilbc: createCB.o
Only in asterisk-1.4.11/codecs/ilbc: doCPLC.o
Only in asterisk-1.4.11/codecs/ilbc: enhancer.o
Only in asterisk-1.4.11/codecs/ilbc: filter.o
Only in asterisk-1.4.11/codecs/ilbc: FrameClassify.o
Only in asterisk-1.4.11/codecs/ilbc: gainquant.o
Only in asterisk-1.4.11/codecs/ilbc: getCBvec.o
Only in asterisk-1.4.11/codecs/ilbc: helpfun.o
Only in asterisk-1.4.11/codecs/ilbc: hpInput.o
Only in asterisk-1.4.11/codecs/ilbc: hpOutput.o
Only in asterisk-1.4.11/codecs/ilbc: iCBConstruct.o
Only in asterisk-1.4.11/codecs/ilbc: iCBSearch.o
Only in asterisk-1.4.11/codecs/ilbc: iLBC_decode.o
Only in asterisk-1.4.11/codecs/ilbc: iLBC_encode.o
Only in asterisk-1.4.11/codecs/ilbc: libilbc.a
Only in asterisk-1.4.11/codecs/ilbc: LPCdecode.o
Only in asterisk-1.4.11/codecs/ilbc: LPCencode.o
Only in asterisk-1.4.11/codecs/ilbc: lsf.o
Only in asterisk-1.4.11/codecs/ilbc: packing.o
Only in asterisk-1.4.11/codecs/ilbc: StateConstructW.o
Only in asterisk-1.4.11/codecs/ilbc: StateSearchW.o
Only in asterisk-1.4.11/codecs/ilbc: syntFilter.o
Only in asterisk-1.4.11/codecs/lpc10: analys.o
Only in asterisk-1.4.11/codecs/lpc10: bsynz.o
Only in asterisk-1.4.11/codecs/lpc10: chanwr.o
Only in asterisk-1.4.11/codecs/lpc10: dcbias.o
Only in asterisk-1.4.11/codecs/lpc10: decode.o
Only in asterisk-1.4.11/codecs/lpc10: deemp.o
Only in asterisk-1.4.11/codecs/lpc10: difmag.o
Only in asterisk-1.4.11/codecs/lpc10: dyptrk.o
Only in asterisk-1.4.11/codecs/lpc10: encode.o
Only in asterisk-1.4.11/codecs/lpc10: energy.o
Only in asterisk-1.4.11/codecs/lpc10: f2clib.o
Only in asterisk-1.4.11/codecs/lpc10: ham84.o
Only in asterisk-1.4.11/codecs/lpc10: hp100.o
Only in asterisk-1.4.11/codecs/lpc10: invert.o
Only in asterisk-1.4.11/codecs/lpc10: irc2pc.o
Only in asterisk-1.4.11/codecs/lpc10: ivfilt.o
Only in asterisk-1.4.11/codecs/lpc10: liblpc10.a
Only in asterisk-1.4.11/codecs/lpc10: lpcdec.o
Only in asterisk-1.4.11/codecs/lpc10: lpcenc.o
Only in asterisk-1.4.11/codecs/lpc10: lpcini.o
Only in asterisk-1.4.11/codecs/lpc10: lpfilt.o
Only in asterisk-1.4.11/codecs/lpc10: median.o
Only in asterisk-1.4.11/codecs/lpc10: mload.o
Only in asterisk-1.4.11/codecs/lpc10: onset.o
Only in asterisk-1.4.11/codecs/lpc10: pitsyn.o
Only in asterisk-1.4.11/codecs/lpc10: placea.o
Only in asterisk-1.4.11/codecs/lpc10: placev.o
Only in asterisk-1.4.11/codecs/lpc10: preemp.o
Only in asterisk-1.4.11/codecs/lpc10: prepro.o
Only in asterisk-1.4.11/codecs/lpc10: random.o
Only in asterisk-1.4.11/codecs/lpc10: rcchk.o
Only in asterisk-1.4.11/codecs/lpc10: synths.o
Only in asterisk-1.4.11/codecs/lpc10: tbdm.o
Only in asterisk-1.4.11/codecs/lpc10: voicin.o
Only in asterisk-1.4.11/codecs/lpc10: vparms.o
diff -r asterisk-1.4.11/config.log asterisk-1.4.13/config.log
42,50c42,50
< configure:2021: checking build system type
< configure:2039: result: i686-pc-linux-gnu
< configure:2061: checking host system type
< configure:2076: result: i686-pc-linux-gnu
< configure:2163: checking for gcc
< configure:2179: found /usr/bin/gcc
< configure:2190: result: gcc
< configure:2428: checking for C compiler version
< configure:2435: gcc --version >&5
---
> configure:2026: checking build system type
> configure:2044: result: i686-pc-linux-gnu
> configure:2066: checking host system type
> configure:2081: result: i686-pc-linux-gnu
> configure:2168: checking for gcc
> configure:2184: found /usr/bin/gcc
> configure:2195: result: gcc
> configure:2433: checking for C compiler version
> configure:2440: gcc --version >&5
56,57c56,57
< configure:2438: $? = 0
< configure:2445: gcc -v >&5
---
> configure:2443: $? = 0
> configure:2450: gcc -v >&5
63,64c63,64
< configure:2448: $? = 0
< configure:2455: gcc -V >&5
---
> configure:2453: $? = 0
> configure:2460: gcc -V >&5
66,100c66,100
< configure:2458: $? = 1
< configure:2481: checking for C compiler default output file name
< configure:2508: gcc    conftest.c  >&5
< configure:2511: $? = 0
< configure:2549: result: a.out
< configure:2566: checking whether the C compiler works
< configure:2576: ./a.out
< configure:2579: $? = 0
< configure:2596: result: yes
< configure:2603: checking whether we are cross compiling
< configure:2605: result: no
< configure:2608: checking for suffix of executables
< configure:2615: gcc -o conftest    conftest.c  >&5
< configure:2618: $? = 0
< configure:2642: result: 
< configure:2648: checking for suffix of object files
< configure:2674: gcc -c   conftest.c >&5
< configure:2677: $? = 0
< configure:2700: result: o
< configure:2704: checking whether we are using the GNU C compiler
< configure:2733: gcc -c   conftest.c >&5
< configure:2739: $? = 0
< configure:2756: result: yes
< configure:2761: checking whether gcc accepts -g
< configure:2791: gcc -c -g  conftest.c >&5
< configure:2797: $? = 0
< configure:2896: result: yes
< configure:2913: checking for gcc option to accept ISO C89
< configure:2987: gcc  -c -g -O2  conftest.c >&5
< configure:2993: $? = 0
< configure:3016: result: none needed
< configure:3040: checking how to run the C preprocessor
< configure:3080: gcc -E  conftest.c
< configure:3086: $? = 0
< configure:3117: gcc -E  conftest.c
---
> configure:2463: $? = 1
> configure:2486: checking for C compiler default output file name
> configure:2513: gcc    conftest.c  >&5
> configure:2516: $? = 0
> configure:2554: result: a.out
> configure:2571: checking whether the C compiler works
> configure:2581: ./a.out
> configure:2584: $? = 0
> configure:2601: result: yes
> configure:2608: checking whether we are cross compiling
> configure:2610: result: no
> configure:2613: checking for suffix of executables
> configure:2620: gcc -o conftest    conftest.c  >&5
> configure:2623: $? = 0
> configure:2647: result: 
> configure:2653: checking for suffix of object files
> configure:2679: gcc -c   conftest.c >&5
> configure:2682: $? = 0
> configure:2705: result: o
> configure:2709: checking whether we are using the GNU C compiler
> configure:2738: gcc -c   conftest.c >&5
> configure:2744: $? = 0
> configure:2761: result: yes
> configure:2766: checking whether gcc accepts -g
> configure:2796: gcc -c -g  conftest.c >&5
> configure:2802: $? = 0
> configure:2901: result: yes
> configure:2918: checking for gcc option to accept ISO C89
> configure:2992: gcc  -c -g -O2  conftest.c >&5
> configure:2998: $? = 0
> configure:3021: result: none needed
> configure:3045: checking how to run the C preprocessor
> configure:3085: gcc -E  conftest.c
> configure:3091: $? = 0
> configure:3122: gcc -E  conftest.c
102c102
< configure:3123: $? = 1
---
> configure:3128: $? = 1
113,116c113,116
< configure:3156: result: gcc -E
< configure:3185: gcc -E  conftest.c
< configure:3191: $? = 0
< configure:3222: gcc -E  conftest.c
---
> configure:3161: result: gcc -E
> configure:3190: gcc -E  conftest.c
> configure:3196: $? = 0
> configure:3227: gcc -E  conftest.c
118c118
< configure:3228: $? = 1
---
> configure:3233: $? = 1
129,180c129,180
< configure:3266: checking for grep that handles long lines and -e
< configure:3340: result: /bin/grep
< configure:3345: checking for egrep
< configure:3423: result: /bin/grep -E
< configure:3429: checking for AIX
< configure:3451: result: no
< configure:3457: checking for ANSI C header files
< configure:3487: gcc -c -g -O2  conftest.c >&5
< configure:3493: $? = 0
< configure:3592: gcc -o conftest -g -O2   conftest.c  >&5
< configure:3595: $? = 0
< configure:3601: ./conftest
< configure:3604: $? = 0
< configure:3621: result: yes
< configure:3645: checking for sys/types.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for sys/stat.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for stdlib.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for string.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for memory.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for strings.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for inttypes.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for stdint.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3645: checking for unistd.h
< configure:3666: gcc -c -g -O2  conftest.c >&5
< configure:3672: $? = 0
< configure:3688: result: yes
< configure:3710: checking minix/config.h usability
< configure:3727: gcc -c -g -O2  conftest.c >&5
---
> configure:3271: checking for grep that handles long lines and -e
> configure:3345: result: /bin/grep
> configure:3350: checking for egrep
> configure:3428: result: /bin/grep -E
> configure:3434: checking for AIX
> configure:3456: result: no
> configure:3462: checking for ANSI C header files
> configure:3492: gcc -c -g -O2  conftest.c >&5
> configure:3498: $? = 0
> configure:3597: gcc -o conftest -g -O2   conftest.c  >&5
> configure:3600: $? = 0
> configure:3606: ./conftest
> configure:3609: $? = 0
> configure:3626: result: yes
> configure:3650: checking for sys/types.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for sys/stat.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for stdlib.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for string.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for memory.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for strings.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for inttypes.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for stdint.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3650: checking for unistd.h
> configure:3671: gcc -c -g -O2  conftest.c >&5
> configure:3677: $? = 0
> configure:3693: result: yes
> configure:3715: checking minix/config.h usability
> configure:3732: gcc -c -g -O2  conftest.c >&5
182c182
< configure:3733: $? = 1
---
> configure:3738: $? = 1
236,238c236,238
< configure:3747: result: no
< configure:3751: checking minix/config.h presence
< configure:3766: gcc -E  conftest.c
---
> configure:3752: result: no
> configure:3756: checking minix/config.h presence
> configure:3771: gcc -E  conftest.c
240c240
< configure:3772: $? = 1
---
> configure:3777: $? = 1
261,274c261,274
< configure:3786: result: no
< configure:3814: checking for minix/config.h
< configure:3821: result: no
< configure:3860: checking whether it is safe to define __EXTENSIONS__
< configure:3888: gcc -c -g -O2  conftest.c >&5
< configure:3894: $? = 0
< configure:3909: result: yes
< configure:4034: checking for uname
< configure:4052: found /bin/uname
< configure:4064: result: /bin/uname
< configure:4539: checking for gcc
< configure:4566: result: gcc
< configure:4804: checking for C compiler version
< configure:4811: gcc --version >&5
---
> configure:3791: result: no
> configure:3819: checking for minix/config.h
> configure:3826: result: no
> configure:3865: checking whether it is safe to define __EXTENSIONS__
> configure:3893: gcc -c -g -O2  conftest.c >&5
> configure:3899: $? = 0
> configure:3914: result: yes
> configure:4039: checking for uname
> configure:4057: found /bin/uname
> configure:4069: result: /bin/uname
> configure:4544: checking for gcc
> configure:4571: result: gcc
> configure:4809: checking for C compiler version
> configure:4816: gcc --version >&5
280,281c280,281
< configure:4814: $? = 0
< configure:4821: gcc -v >&5
---
> configure:4819: $? = 0
> configure:4826: gcc -v >&5
287,288c287,288
< configure:4824: $? = 0
< configure:4831: gcc -V >&5
---
> configure:4829: $? = 0
> configure:4836: gcc -V >&5
290,301c290,301
< configure:4834: $? = 1
< configure:4837: checking whether we are using the GNU C compiler
< configure:4889: result: yes
< configure:4894: checking whether gcc accepts -g
< configure:5029: result: yes
< configure:5046: checking for gcc option to accept ISO C89
< configure:5149: result: none needed
< configure:5225: checking for g++
< configure:5241: found /usr/bin/g++
< configure:5252: result: g++
< configure:5283: checking for C++ compiler version
< configure:5290: g++ --version >&5
---
> configure:4839: $? = 1
> configure:4842: checking whether we are using the GNU C compiler
> configure:4894: result: yes
> configure:4899: checking whether gcc accepts -g
> configure:5034: result: yes
> configure:5051: checking for gcc option to accept ISO C89
> configure:5154: result: none needed
> configure:5230: checking for g++
> configure:5246: found /usr/bin/g++
> configure:5257: result: g++
> configure:5288: checking for C++ compiler version
> configure:5295: g++ --version >&5
307,308c307,308
< configure:5293: $? = 0
< configure:5300: g++ -v >&5
---
> configure:5298: $? = 0
> configure:5305: g++ -v >&5
314,315c314,315
< configure:5303: $? = 0
< configure:5310: g++ -V >&5
---
> configure:5308: $? = 0
> configure:5315: g++ -V >&5
317,330c317,330
< configure:5313: $? = 1
< configure:5316: checking whether we are using the GNU C++ compiler
< configure:5345: g++ -c   conftest.cpp >&5
< configure:5351: $? = 0
< configure:5368: result: yes
< configure:5373: checking whether g++ accepts -g
< configure:5403: g++ -c -g  conftest.cpp >&5
< configure:5409: $? = 0
< configure:5508: result: yes
< configure:5536: checking how to run the C preprocessor
< configure:5652: result: gcc -E
< configure:5681: gcc -E  conftest.c
< configure:5687: $? = 0
< configure:5718: gcc -E  conftest.c
---
> configure:5318: $? = 1
> configure:5321: checking whether we are using the GNU C++ compiler
> configure:5350: g++ -c   conftest.cpp >&5
> configure:5356: $? = 0
> configure:5373: result: yes
> configure:5378: checking whether g++ accepts -g
> configure:5408: g++ -c -g  conftest.cpp >&5
> configure:5414: $? = 0
> configure:5513: result: yes
> configure:5541: checking how to run the C preprocessor
> configure:5657: result: gcc -E
> configure:5686: gcc -E  conftest.c
> configure:5692: $? = 0
> configure:5723: gcc -E  conftest.c
332c332
< configure:5724: $? = 1
---
> configure:5729: $? = 1
356,359c356,359
< configure:5766: checking how to run the C++ preprocessor
< configure:5802: g++ -E  conftest.cpp
< configure:5808: $? = 0
< configure:5839: g++ -E  conftest.cpp
---
> configure:5771: checking how to run the C++ preprocessor
> configure:5807: g++ -E  conftest.cpp
> configure:5813: $? = 0
> configure:5844: g++ -E  conftest.cpp
361c361
< configure:5845: $? = 1
---
> configure:5850: $? = 1
385,388c385,388
< configure:5878: result: g++ -E
< configure:5907: g++ -E  conftest.cpp
< configure:5913: $? = 0
< configure:5944: g++ -E  conftest.cpp
---
> configure:5883: result: g++ -E
> configure:5912: g++ -E  conftest.cpp
> configure:5918: $? = 0
> configure:5949: g++ -E  conftest.cpp
390c390
< configure:5950: $? = 1
---
> configure:5955: $? = 1
414,469c414,469
< configure:5989: checking for a sed that does not truncate output
< configure:6068: result: /bin/sed
< configure:6073: checking for egrep
< configure:6083: result: grep -E
< configure:6099: checking for ld used by gcc
< configure:6166: result: /usr/bin/ld
< configure:6175: checking if the linker (/usr/bin/ld) is GNU ld
< configure:6190: result: yes
< configure:6199: checking for gawk
< configure:6229: result: no
< configure:6199: checking for mawk
< configure:6215: found /usr/bin/mawk
< configure:6226: result: mawk
< configure:6250: checking for a BSD-compatible install
< configure:6306: result: /usr/bin/install -c
< configure:6317: checking whether ln -s works
< configure:6321: result: yes
< configure:6371: checking for ranlib
< configure:6387: found /usr/bin/ranlib
< configure:6398: result: ranlib
< configure:6424: checking for GNU make
< configure:6443: result: make
< configure:6500: checking for strip
< configure:6518: found /usr/bin/strip
< configure:6530: result: /usr/bin/strip
< configure:6602: checking for ar
< configure:6620: found /usr/bin/ar
< configure:6632: result: /usr/bin/ar
< configure:6667: checking for grep
< configure:6698: result: /bin/grep
< configure:6708: checking for find
< configure:6726: found /usr/bin/find
< configure:6739: result: /usr/bin/find
< configure:6749: checking for compress
< configure:6780: result: :
< configure:6790: checking for basename
< configure:6808: found /usr/bin/basename
< configure:6821: result: /usr/bin/basename
< configure:6831: checking for id
< configure:6849: found /usr/bin/id
< configure:6862: result: /usr/bin/id
< configure:6872: checking for dirname
< configure:6890: found /usr/bin/dirname
< configure:6903: result: /usr/bin/dirname
< configure:6913: checking for sh
< configure:6944: result: /bin/sh
< configure:6954: checking for ln
< configure:6972: found /bin/ln
< configure:6985: result: /bin/ln
< configure:6995: checking for dot
< configure:7026: result: :
< configure:7036: checking for wget
< configure:7054: found /usr/bin/wget
< configure:7067: result: /usr/bin/wget
< configure:7315: checking for the pthreads library -lpthreads
< configure:7358: gcc -o conftest -g -O2    conftest.c -lpthreads  >&5
---
> configure:5994: checking for a sed that does not truncate output
> configure:6073: result: /bin/sed
> configure:6078: checking for egrep
> configure:6088: result: grep -E
> configure:6104: checking for ld used by gcc
> configure:6171: result: /usr/bin/ld
> configure:6180: checking if the linker (/usr/bin/ld) is GNU ld
> configure:6195: result: yes
> configure:6204: checking for gawk
> configure:6234: result: no
> configure:6204: checking for mawk
> configure:6220: found /usr/bin/mawk
> configure:6231: result: mawk
> configure:6255: checking for a BSD-compatible install
> configure:6311: result: /usr/bin/install -c
> configure:6322: checking whether ln -s works
> configure:6326: result: yes
> configure:6376: checking for ranlib
> configure:6392: found /usr/bin/ranlib
> configure:6403: result: ranlib
> configure:6429: checking for GNU make
> configure:6448: result: make
> configure:6505: checking for strip
> configure:6523: found /usr/bin/strip
> configure:6535: result: /usr/bin/strip
> configure:6607: checking for ar
> configure:6625: found /usr/bin/ar
> configure:6637: result: /usr/bin/ar
> configure:6672: checking for grep
> configure:6703: result: /bin/grep
> configure:6713: checking for find
> configure:6731: found /usr/bin/find
> configure:6744: result: /usr/bin/find
> configure:6754: checking for compress
> configure:6785: result: :
> configure:6795: checking for basename
> configure:6813: found /usr/bin/basename
> configure:6826: result: /usr/bin/basename
> configure:6836: checking for id
> configure:6854: found /usr/bin/id
> configure:6867: result: /usr/bin/id
> configure:6877: checking for dirname
> configure:6895: found /usr/bin/dirname
> configure:6908: result: /usr/bin/dirname
> configure:6918: checking for sh
> configure:6949: result: /bin/sh
> configure:6959: checking for ln
> configure:6977: found /bin/ln
> configure:6990: result: /bin/ln
> configure:7000: checking for dot
> configure:7031: result: :
> configure:7041: checking for wget
> configure:7059: found /usr/bin/wget
> configure:7072: result: /usr/bin/wget
> configure:7320: checking for the pthreads library -lpthreads
> configure:7363: gcc -o conftest -g -O2    conftest.c -lpthreads  >&5
472c472
< configure:7364: $? = 1
---
> configure:7369: $? = 1
505,512c505,512
< configure:7384: result: no
< configure:7260: checking whether pthreads work without any flags
< configure:7358: gcc -o conftest -g -O2    conftest.c   >&5
< /tmp/ccIWoWKS.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:26: undefined reference to `pthread_join'
< /root/asterisk-1.4.11/conftest.c:27: undefined reference to `_pthread_cleanup_push'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `pthread_create'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
---
> configure:7389: result: no
> configure:7265: checking whether pthreads work without any flags
> configure:7363: gcc -o conftest -g -O2    conftest.c   >&5
> /tmp/ccG3soij.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:26: undefined reference to `pthread_join'
> /root/asterisk-1.4.13/conftest.c:27: undefined reference to `_pthread_cleanup_push'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `pthread_create'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
514c514
< configure:7364: $? = 1
---
> configure:7369: $? = 1
547,549c547,549
< configure:7384: result: no
< configure:7265: checking whether pthreads work with -Kthread
< configure:7358: gcc -o conftest -g -O2 -Kthread   conftest.c   >&5
---
> configure:7389: result: no
> configure:7270: checking whether pthreads work with -Kthread
> configure:7363: gcc -o conftest -g -O2 -Kthread   conftest.c   >&5
551,555c551,555
< /tmp/ccezBrnn.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:26: undefined reference to `pthread_join'
< /root/asterisk-1.4.11/conftest.c:27: undefined reference to `_pthread_cleanup_push'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `pthread_create'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
---
> /tmp/cciEGff0.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:26: undefined reference to `pthread_join'
> /root/asterisk-1.4.13/conftest.c:27: undefined reference to `_pthread_cleanup_push'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `pthread_create'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
557c557
< configure:7364: $? = 1
---
> configure:7369: $? = 1
590,592c590,592
< configure:7384: result: no
< configure:7265: checking whether pthreads work with -kthread
< configure:7358: gcc -o conftest -g -O2 -kthread   conftest.c   >&5
---
> configure:7389: result: no
> configure:7270: checking whether pthreads work with -kthread
> configure:7363: gcc -o conftest -g -O2 -kthread   conftest.c   >&5
594,598c594,598
< /tmp/ccOgC5y4.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:26: undefined reference to `pthread_join'
< /root/asterisk-1.4.11/conftest.c:27: undefined reference to `_pthread_cleanup_push'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `pthread_create'
< /root/asterisk-1.4.11/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
---
> /tmp/ccysAN7q.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:26: undefined reference to `pthread_join'
> /root/asterisk-1.4.13/conftest.c:27: undefined reference to `_pthread_cleanup_push'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `pthread_create'
> /root/asterisk-1.4.13/conftest.c:28: undefined reference to `_pthread_cleanup_pop'
600c600
< configure:7364: $? = 1
---
> configure:7369: $? = 1
633,635c633,635
< configure:7384: result: no
< configure:7315: checking for the pthreads library -llthread
< configure:7358: gcc -o conftest -g -O2    conftest.c -llthread  >&5
---
> configure:7389: result: no
> configure:7320: checking for the pthreads library -llthread
> configure:7363: gcc -o conftest -g -O2    conftest.c -llthread  >&5
638c638
< configure:7364: $? = 1
---
> configure:7369: $? = 1
671,889c671,889
< configure:7384: result: no
< configure:7265: checking whether pthreads work with -pthread
< configure:7358: gcc -o conftest -g -O2 -pthread   conftest.c   >&5
< configure:7364: $? = 0
< configure:7384: result: yes
< configure:7403: checking for joinable pthread attribute
< configure:7428: gcc -o conftest -g -O2 -pthread   conftest.c   >&5
< configure:7434: $? = 0
< configure:7451: result: PTHREAD_CREATE_JOINABLE
< configure:7461: checking if more special flags are required for pthreads
< configure:7468: result: no
< configure:8646: checking for working alloca.h
< configure:8673: gcc -o conftest -g -O2   conftest.c  >&5
< configure:8679: $? = 0
< configure:8696: result: yes
< configure:8706: checking for alloca
< configure:8753: gcc -o conftest -g -O2   conftest.c  >&5
< configure:8759: $? = 0
< configure:8776: result: yes
< configure:9011: checking for dirent.h that defines DIR
< configure:9040: gcc -c -g -O2  conftest.c >&5
< configure:9046: $? = 0
< configure:9062: result: yes
< configure:9075: checking for library containing opendir
< configure:9116: gcc -o conftest -g -O2   conftest.c  >&5
< configure:9122: $? = 0
< configure:9150: result: none required
< configure:9244: checking for ANSI C header files
< configure:9408: result: yes
< configure:9418: checking for sys/wait.h that is POSIX.1 compatible
< configure:9454: gcc -c -g -O2  conftest.c >&5
< configure:9460: $? = 0
< configure:9475: result: yes
< configure:9522: checking arpa/inet.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking arpa/inet.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for arpa/inet.h
< configure:9634: result: yes
< configure:9522: checking fcntl.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking fcntl.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for fcntl.h
< configure:9634: result: yes
< configure:9512: checking for inttypes.h
< configure:9518: result: yes
< configure:9522: checking libintl.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking libintl.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for libintl.h
< configure:9634: result: yes
< configure:9522: checking limits.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking limits.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for limits.h
< configure:9634: result: yes
< configure:9522: checking locale.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking locale.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for locale.h
< configure:9634: result: yes
< configure:9522: checking malloc.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking malloc.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for malloc.h
< configure:9634: result: yes
< configure:9522: checking netdb.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking netdb.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for netdb.h
< configure:9634: result: yes
< configure:9522: checking netinet/in.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking netinet/in.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for netinet/in.h
< configure:9634: result: yes
< configure:9522: checking stddef.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking stddef.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for stddef.h
< configure:9634: result: yes
< configure:9512: checking for stdint.h
< configure:9518: result: yes
< configure:9512: checking for stdlib.h
< configure:9518: result: yes
< configure:9512: checking for string.h
< configure:9518: result: yes
< configure:9512: checking for strings.h
< configure:9518: result: yes
< configure:9522: checking sys/file.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking sys/file.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for sys/file.h
< configure:9634: result: yes
< configure:9522: checking sys/ioctl.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking sys/ioctl.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for sys/ioctl.h
< configure:9634: result: yes
< configure:9522: checking sys/param.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking sys/param.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for sys/param.h
< configure:9634: result: yes
< configure:9522: checking sys/socket.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking sys/socket.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for sys/socket.h
< configure:9634: result: yes
< configure:9522: checking sys/time.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking sys/time.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for sys/time.h
< configure:9634: result: yes
< configure:9522: checking syslog.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking syslog.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for syslog.h
< configure:9634: result: yes
< configure:9522: checking termios.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking termios.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for termios.h
< configure:9634: result: yes
< configure:9512: checking for unistd.h
< configure:9518: result: yes
< configure:9522: checking utime.h usability
< configure:9539: gcc -c -g -O2  conftest.c >&5
< configure:9545: $? = 0
< configure:9559: result: yes
< configure:9563: checking utime.h presence
< configure:9578: gcc -E  conftest.c
< configure:9584: $? = 0
< configure:9598: result: yes
< configure:9626: checking for utime.h
< configure:9634: result: yes
< configure:9655: checking for special C compiler options needed for large files
< configure:9748: result: no
< configure:9754: checking for _FILE_OFFSET_BITS value needed for large files
< configure:9789: gcc -c -g -O2  conftest.c >&5
---
> configure:7389: result: no
> configure:7270: checking whether pthreads work with -pthread
> configure:7363: gcc -o conftest -g -O2 -pthread   conftest.c   >&5
> configure:7369: $? = 0
> configure:7389: result: yes
> configure:7408: checking for joinable pthread attribute
> configure:7433: gcc -o conftest -g -O2 -pthread   conftest.c   >&5
> configure:7439: $? = 0
> configure:7456: result: PTHREAD_CREATE_JOINABLE
> configure:7466: checking if more special flags are required for pthreads
> configure:7473: result: no
> configure:8679: checking for working alloca.h
> configure:8706: gcc -o conftest -g -O2   conftest.c  >&5
> configure:8712: $? = 0
> configure:8729: result: yes
> configure:8739: checking for alloca
> configure:8786: gcc -o conftest -g -O2   conftest.c  >&5
> configure:8792: $? = 0
> configure:8809: result: yes
> configure:9044: checking for dirent.h that defines DIR
> configure:9073: gcc -c -g -O2  conftest.c >&5
> configure:9079: $? = 0
> configure:9095: result: yes
> configure:9108: checking for library containing opendir
> configure:9149: gcc -o conftest -g -O2   conftest.c  >&5
> configure:9155: $? = 0
> configure:9183: result: none required
> configure:9277: checking for ANSI C header files
> configure:9441: result: yes
> configure:9451: checking for sys/wait.h that is POSIX.1 compatible
> configure:9487: gcc -c -g -O2  conftest.c >&5
> configure:9493: $? = 0
> configure:9508: result: yes
> configure:9555: checking arpa/inet.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking arpa/inet.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for arpa/inet.h
> configure:9667: result: yes
> configure:9555: checking fcntl.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking fcntl.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for fcntl.h
> configure:9667: result: yes
> configure:9545: checking for inttypes.h
> configure:9551: result: yes
> configure:9555: checking libintl.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking libintl.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for libintl.h
> configure:9667: result: yes
> configure:9555: checking limits.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking limits.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for limits.h
> configure:9667: result: yes
> configure:9555: checking locale.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking locale.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for locale.h
> configure:9667: result: yes
> configure:9555: checking malloc.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking malloc.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for malloc.h
> configure:9667: result: yes
> configure:9555: checking netdb.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking netdb.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for netdb.h
> configure:9667: result: yes
> configure:9555: checking netinet/in.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking netinet/in.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for netinet/in.h
> configure:9667: result: yes
> configure:9555: checking stddef.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking stddef.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for stddef.h
> configure:9667: result: yes
> configure:9545: checking for stdint.h
> configure:9551: result: yes
> configure:9545: checking for stdlib.h
> configure:9551: result: yes
> configure:9545: checking for string.h
> configure:9551: result: yes
> configure:9545: checking for strings.h
> configure:9551: result: yes
> configure:9555: checking sys/file.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking sys/file.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for sys/file.h
> configure:9667: result: yes
> configure:9555: checking sys/ioctl.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking sys/ioctl.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for sys/ioctl.h
> configure:9667: result: yes
> configure:9555: checking sys/param.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking sys/param.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for sys/param.h
> configure:9667: result: yes
> configure:9555: checking sys/socket.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking sys/socket.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for sys/socket.h
> configure:9667: result: yes
> configure:9555: checking sys/time.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking sys/time.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for sys/time.h
> configure:9667: result: yes
> configure:9555: checking syslog.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking syslog.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for syslog.h
> configure:9667: result: yes
> configure:9555: checking termios.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking termios.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for termios.h
> configure:9667: result: yes
> configure:9545: checking for unistd.h
> configure:9551: result: yes
> configure:9555: checking utime.h usability
> configure:9572: gcc -c -g -O2  conftest.c >&5
> configure:9578: $? = 0
> configure:9592: result: yes
> configure:9596: checking utime.h presence
> configure:9611: gcc -E  conftest.c
> configure:9617: $? = 0
> configure:9631: result: yes
> configure:9659: checking for utime.h
> configure:9667: result: yes
> configure:9688: checking for special C compiler options needed for large files
> configure:9781: result: no
> configure:9787: checking for _FILE_OFFSET_BITS value needed for large files
> configure:9822: gcc -c -g -O2  conftest.c >&5
893c893
< configure:9795: $? = 1
---
> configure:9828: $? = 1
961,976c961,974
< configure:9839: gcc -c -g -O2  conftest.c >&5
< configure:9845: $? = 0
< configure:9863: result: 64
< configure:10000: checking for stdbool.h that conforms to C99
< configure:10093: gcc -c -g -O2  conftest.c >&5
< configure:10099: $? = 0
< configure:10114: result: yes
< configure:10116: checking for _Bool
< configure:10146: gcc -c -g -O2  conftest.c >&5
< configure:10152: $? = 0
< configure:10167: result: yes
< configure:10186: checking for an ANSI C-conforming const
< configure:10261: gcc -c -g -O2  conftest.c >&5
< configure:10267: $? = 0
< configure:10282: result: yes
< configure:10292: checking for uid_t in sys/types.h
---
> configure:9872: gcc -c -g -O2  conftest.c >&5
> configure:9878: $? = 0
> configure:9896: result: 64
> configure:10033: checking for stdbool.h that conforms to C99
> configure:10126: gcc -c -g -O2  conftest.c >&5
> configure:10132: $? = 0
> configure:10147: result: yes
> configure:10149: checking for _Bool
> configure:10179: gcc -c -g -O2  conftest.c >&5
> configure:10185: $? = 0
> configure:10200: result: yes
> configure:10219: checking for an ANSI C-conforming const
> configure:10294: gcc -c -g -O2  conftest.c >&5
> configure:10300: $? = 0
978,1037c976,1037
< configure:10330: checking for inline
< configure:10356: gcc -c -g -O2  conftest.c >&5
< configure:10362: $? = 0
< configure:10380: result: inline
< configure:10399: checking for mode_t
< configure:10429: gcc -c -g -O2  conftest.c >&5
< configure:10435: $? = 0
< configure:10450: result: yes
< configure:10462: checking for off_t
< configure:10492: gcc -c -g -O2  conftest.c >&5
< configure:10498: $? = 0
< configure:10513: result: yes
< configure:10525: checking for pid_t
< configure:10555: gcc -c -g -O2  conftest.c >&5
< configure:10561: $? = 0
< configure:10576: result: yes
< configure:10588: checking for size_t
< configure:10618: gcc -c -g -O2  conftest.c >&5
< configure:10624: $? = 0
< configure:10639: result: yes
< configure:10651: checking for struct stat.st_blksize
< configure:10679: gcc -c -g -O2  conftest.c >&5
< configure:10685: $? = 0
< configure:10742: result: yes
< configure:10753: checking whether time.h and sys/time.h may both be included
< configure:10783: gcc -c -g -O2  conftest.c >&5
< configure:10789: $? = 0
< configure:10804: result: yes
< configure:10814: checking whether struct tm is in sys/time.h or time.h
< configure:10844: gcc -c -g -O2  conftest.c >&5
< configure:10850: $? = 0
< configure:10865: result: time.h
< configure:10875: checking for working volatile
< configure:10904: gcc -c -g -O2  conftest.c >&5
< configure:10910: $? = 0
< configure:10925: result: yes
< configure:10935: checking for ptrdiff_t
< configure:10965: gcc -c -g -O2  conftest.c >&5
< configure:10971: $? = 0
< configure:10986: result: yes
< configure:11004: checking for unistd.h
< configure:11010: result: yes
< configure:11139: checking for working chown
< configure:11182: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11185: $? = 0
< configure:11191: ./conftest
< configure:11194: $? = 0
< configure:11212: result: yes
< configure:11222: checking whether closedir returns void
< configure:11256: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11259: $? = 0
< configure:11265: ./conftest
< configure:11268: $? = 0
< configure:11284: result: no
< configure:11294: checking for error_at_line
< configure:11320: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11326: $? = 0
< configure:11343: result: yes
< configure:11369: checking vfork.h usability
< configure:11386: gcc -c -g -O2  conftest.c >&5
---
> configure:10325: checking for uid_t in sys/types.h
> configure:10348: result: yes
> configure:10363: checking for inline
> configure:10389: gcc -c -g -O2  conftest.c >&5
> configure:10395: $? = 0
> configure:10413: result: inline
> configure:10432: checking for mode_t
> configure:10462: gcc -c -g -O2  conftest.c >&5
> configure:10468: $? = 0
> configure:10483: result: yes
> configure:10495: checking for off_t
> configure:10525: gcc -c -g -O2  conftest.c >&5
> configure:10531: $? = 0
> configure:10546: result: yes
> configure:10558: checking for pid_t
> configure:10588: gcc -c -g -O2  conftest.c >&5
> configure:10594: $? = 0
> configure:10609: result: yes
> configure:10621: checking for size_t
> configure:10651: gcc -c -g -O2  conftest.c >&5
> configure:10657: $? = 0
> configure:10672: result: yes
> configure:10684: checking for struct stat.st_blksize
> configure:10712: gcc -c -g -O2  conftest.c >&5
> configure:10718: $? = 0
> configure:10775: result: yes
> configure:10786: checking whether time.h and sys/time.h may both be included
> configure:10816: gcc -c -g -O2  conftest.c >&5
> configure:10822: $? = 0
> configure:10837: result: yes
> configure:10847: checking whether struct tm is in sys/time.h or time.h
> configure:10877: gcc -c -g -O2  conftest.c >&5
> configure:10883: $? = 0
> configure:10898: result: time.h
> configure:10908: checking for working volatile
> configure:10937: gcc -c -g -O2  conftest.c >&5
> configure:10943: $? = 0
> configure:10958: result: yes
> configure:10968: checking for ptrdiff_t
> configure:10998: gcc -c -g -O2  conftest.c >&5
> configure:11004: $? = 0
> configure:11019: result: yes
> configure:11037: checking for unistd.h
> configure:11043: result: yes
> configure:11172: checking for working chown
> configure:11215: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11218: $? = 0
> configure:11224: ./conftest
> configure:11227: $? = 0
> configure:11245: result: yes
> configure:11255: checking whether closedir returns void
> configure:11289: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11292: $? = 0
> configure:11298: ./conftest
> configure:11301: $? = 0
> configure:11317: result: no
> configure:11327: checking for error_at_line
> configure:11353: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11359: $? = 0
> configure:11376: result: yes
> configure:11402: checking vfork.h usability
> configure:11419: gcc -c -g -O2  conftest.c >&5
1039c1039
< configure:11392: $? = 1
---
> configure:11425: $? = 1
1133,1135c1133,1135
< configure:11406: result: no
< configure:11410: checking vfork.h presence
< configure:11425: gcc -E  conftest.c
---
> configure:11439: result: no
> configure:11443: checking vfork.h presence
> configure:11458: gcc -E  conftest.c
1137c1137
< configure:11431: $? = 1
---
> configure:11464: $? = 1
1198,1202c1198,1202
< configure:11445: result: no
< configure:11473: checking for vfork.h
< configure:11481: result: no
< configure:11499: checking for fork
< configure:11555: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:11478: result: no
> configure:11506: checking for vfork.h
> configure:11514: result: no
> configure:11532: checking for fork
> configure:11588: gcc -o conftest -g -O2   conftest.c  >&5
1204,1244c1204,1244
< configure:11561: $? = 0
< configure:11579: result: yes
< configure:11499: checking for vfork
< configure:11555: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11561: $? = 0
< configure:11579: result: yes
< configure:11590: checking for working fork
< configure:11622: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11625: $? = 0
< configure:11631: ./conftest
< configure:11634: $? = 0
< configure:11650: result: yes
< configure:11671: checking for working vfork
< configure:11809: result: yes
< configure:11840: checking for _LARGEFILE_SOURCE value needed for large files
< configure:11869: gcc -o conftest -g -O2   conftest.c  >&5
< configure:11875: $? = 0
< configure:11941: result: no
< configure:11965: checking whether gcc needs -traditional
< configure:12007: result: no
< configure:12018: checking for working memcmp
< configure:12071: gcc -o conftest -g -O2   conftest.c  >&5
< configure:12074: $? = 0
< configure:12080: ./conftest
< configure:12083: $? = 0
< configure:12099: result: yes
< configure:12116: checking for sys/time.h
< configure:12122: result: yes
< configure:12116: checking for unistd.h
< configure:12122: result: yes
< configure:12116: checking for utime.h
< configure:12122: result: yes
< configure:12262: checking for alarm
< configure:12318: gcc -o conftest -g -O2   conftest.c  >&5
< configure:12324: $? = 0
< configure:12342: result: yes
< configure:12368: checking for working mktime
< configure:12577: gcc -o conftest -g -O2   conftest.c  >&5
< configure:12580: $? = 0
< configure:12586: ./conftest
< configure:12589: $? = 1
---
> configure:11594: $? = 0
> configure:11612: result: yes
> configure:11532: checking for vfork
> configure:11588: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11594: $? = 0
> configure:11612: result: yes
> configure:11623: checking for working fork
> configure:11655: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11658: $? = 0
> configure:11664: ./conftest
> configure:11667: $? = 0
> configure:11683: result: yes
> configure:11704: checking for working vfork
> configure:11842: result: yes
> configure:11873: checking for _LARGEFILE_SOURCE value needed for large files
> configure:11902: gcc -o conftest -g -O2   conftest.c  >&5
> configure:11908: $? = 0
> configure:11974: result: no
> configure:11998: checking whether gcc needs -traditional
> configure:12040: result: no
> configure:12051: checking for working memcmp
> configure:12104: gcc -o conftest -g -O2   conftest.c  >&5
> configure:12107: $? = 0
> configure:12113: ./conftest
> configure:12116: $? = 0
> configure:12132: result: yes
> configure:12149: checking for sys/time.h
> configure:12155: result: yes
> configure:12149: checking for unistd.h
> configure:12155: result: yes
> configure:12149: checking for utime.h
> configure:12155: result: yes
> configure:12295: checking for alarm
> configure:12351: gcc -o conftest -g -O2   conftest.c  >&5
> configure:12357: $? = 0
> configure:12375: result: yes
> configure:12401: checking for working mktime
> configure:12610: gcc -o conftest -g -O2   conftest.c  >&5
> configure:12613: $? = 0
> configure:12619: ./conftest
> configure:12622: $? = 1
1502,1536c1502,1536
< configure:12605: result: no
< configure:12622: checking for stdlib.h
< configure:12628: result: yes
< configure:12622: checking for unistd.h
< configure:12628: result: yes
< configure:12761: checking for getpagesize
< configure:12817: gcc -o conftest -g -O2   conftest.c  >&5
< configure:12823: $? = 0
< configure:12841: result: yes
< configure:12851: checking for working mmap
< configure:12998: gcc -o conftest -g -O2   conftest.c  >&5
< configure:13001: $? = 0
< configure:13007: ./conftest
< configure:13010: $? = 0
< configure:13026: result: yes
< configure:13053: checking sys/select.h usability
< configure:13070: gcc -c -g -O2  conftest.c >&5
< configure:13076: $? = 0
< configure:13090: result: yes
< configure:13094: checking sys/select.h presence
< configure:13109: gcc -E  conftest.c
< configure:13115: $? = 0
< configure:13129: result: yes
< configure:13157: checking for sys/select.h
< configure:13165: result: yes
< configure:13043: checking for sys/socket.h
< configure:13049: result: yes
< configure:13178: checking types of arguments for select
< configure:13216: gcc -c -g -O2  conftest.c >&5
< configure:13222: $? = 0
< configure:13243: result: int,fd_set *,struct timeval *
< configure:13266: checking for function prototypes
< configure:13269: result: yes
< configure:13286: checking whether setvbuf arguments are reversed
< configure:13316: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:12638: result: no
> configure:12655: checking for stdlib.h
> configure:12661: result: yes
> configure:12655: checking for unistd.h
> configure:12661: result: yes
> configure:12794: checking for getpagesize
> configure:12850: gcc -o conftest -g -O2   conftest.c  >&5
> configure:12856: $? = 0
> configure:12874: result: yes
> configure:12884: checking for working mmap
> configure:13031: gcc -o conftest -g -O2   conftest.c  >&5
> configure:13034: $? = 0
> configure:13040: ./conftest
> configure:13043: $? = 0
> configure:13059: result: yes
> configure:13086: checking sys/select.h usability
> configure:13103: gcc -c -g -O2  conftest.c >&5
> configure:13109: $? = 0
> configure:13123: result: yes
> configure:13127: checking sys/select.h presence
> configure:13142: gcc -E  conftest.c
> configure:13148: $? = 0
> configure:13162: result: yes
> configure:13190: checking for sys/select.h
> configure:13198: result: yes
> configure:13076: checking for sys/socket.h
> configure:13082: result: yes
> configure:13211: checking types of arguments for select
> configure:13249: gcc -c -g -O2  conftest.c >&5
> configure:13255: $? = 0
> configure:13276: result: int,fd_set *,struct timeval *
> configure:13299: checking for function prototypes
> configure:13302: result: yes
> configure:13319: checking whether setvbuf arguments are reversed
> configure:13349: gcc -o conftest -g -O2   conftest.c  >&5
1539c1539
< configure:13322: $? = 1
---
> configure:13355: $? = 1
1630,1632c1630,1632
< configure:13443: result: no
< configure:13453: checking return type of signal handlers
< configure:13481: gcc -c -g -O2  conftest.c >&5
---
> configure:13476: result: no
> configure:13486: checking return type of signal handlers
> configure:13514: gcc -c -g -O2  conftest.c >&5
1635c1635
< configure:13487: $? = 1
---
> configure:13520: $? = 1
1725,1745c1725,1745
< configure:13502: result: void
< configure:13510: checking whether lstat dereferences a symlink specified with a trailing slash
< configure:13546: gcc -o conftest -g -O2   conftest.c  >&5
< configure:13549: $? = 0
< configure:13555: ./conftest
< configure:13558: $? = 0
< configure:13581: result: yes
< configure:13600: checking whether stat accepts an empty string
< configure:13630: gcc -o conftest -g -O2   conftest.c  >&5
< configure:13633: $? = 0
< configure:13639: ./conftest
< configure:13642: $? = 0
< configure:13658: result: no
< configure:13674: checking for working strcoll
< configure:13705: gcc -o conftest -g -O2   conftest.c  >&5
< configure:13708: $? = 0
< configure:13714: ./conftest
< configure:13717: $? = 0
< configure:13733: result: yes
< configure:13747: checking for strftime
< configure:13803: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:13535: result: void
> configure:13543: checking whether lstat dereferences a symlink specified with a trailing slash
> configure:13579: gcc -o conftest -g -O2   conftest.c  >&5
> configure:13582: $? = 0
> configure:13588: ./conftest
> configure:13591: $? = 0
> configure:13614: result: yes
> configure:13633: checking whether stat accepts an empty string
> configure:13663: gcc -o conftest -g -O2   conftest.c  >&5
> configure:13666: $? = 0
> configure:13672: ./conftest
> configure:13675: $? = 0
> configure:13691: result: no
> configure:13707: checking for working strcoll
> configure:13738: gcc -o conftest -g -O2   conftest.c  >&5
> configure:13741: $? = 0
> configure:13747: ./conftest
> configure:13750: $? = 0
> configure:13766: result: yes
> configure:13780: checking for strftime
> configure:13836: gcc -o conftest -g -O2   conftest.c  >&5
1747,1768c1747,1768
< configure:13809: $? = 0
< configure:13827: result: yes
< configure:13908: checking for working strnlen
< configure:13952: gcc -o conftest -g -O2   conftest.c  >&5
< configure:13955: $? = 0
< configure:13961: ./conftest
< configure:13964: $? = 0
< configure:13980: result: yes
< configure:13989: checking for working strtod
< configure:14040: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14043: $? = 0
< configure:14049: ./conftest
< configure:14052: $? = 0
< configure:14068: result: yes
< configure:14240: checking whether utime accepts a null argument
< configure:14279: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14282: $? = 0
< configure:14288: ./conftest
< configure:14291: $? = 0
< configure:14307: result: yes
< configure:14322: checking for vprintf
< configure:14378: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:13842: $? = 0
> configure:13860: result: yes
> configure:13941: checking for working strnlen
> configure:13985: gcc -o conftest -g -O2   conftest.c  >&5
> configure:13988: $? = 0
> configure:13994: ./conftest
> configure:13997: $? = 0
> configure:14013: result: yes
> configure:14022: checking for working strtod
> configure:14073: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14076: $? = 0
> configure:14082: ./conftest
> configure:14085: $? = 0
> configure:14101: result: yes
> configure:14273: checking whether utime accepts a null argument
> configure:14312: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14315: $? = 0
> configure:14321: ./conftest
> configure:14324: $? = 0
> configure:14340: result: yes
> configure:14355: checking for vprintf
> configure:14411: gcc -o conftest -g -O2   conftest.c  >&5
1770,1775c1770,1775
< configure:14384: $? = 0
< configure:14402: result: yes
< configure:14409: checking for _doprnt
< configure:14465: gcc -o conftest -g -O2   conftest.c  >&5
< /tmp/cceYgOIO.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:119: undefined reference to `_doprnt'
---
> configure:14417: $? = 0
> configure:14435: result: yes
> configure:14442: checking for _doprnt
> configure:14498: gcc -o conftest -g -O2   conftest.c  >&5
> /tmp/ccEb2m4U.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:119: undefined reference to `_doprnt'
1777c1777
< configure:14471: $? = 1
---
> configure:14504: $? = 1
1901,1911c1901,1911
< configure:14488: result: no
< configure:14554: checking for asprintf
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for atexit
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for bzero
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14521: result: no
> configure:14587: checking for asprintf
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for atexit
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for bzero
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
1913,1924c1913,1924
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for dup2
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for endpwent
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for floor
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for dup2
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for endpwent
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for floor
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
1926,1927c1926,1927
< /tmp/ccSSEPTo.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:124: undefined reference to `floor'
---
> /tmp/ccG6bKBc.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:124: undefined reference to `floor'
1929c1929
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2058,2088c2058,2088
< configure:14634: result: no
< configure:14554: checking for ftruncate
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for getcwd
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for gethostbyname
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for gethostname
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for getloadavg
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for gettimeofday
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for inet_ntoa
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for isascii
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14667: result: no
> configure:14587: checking for ftruncate
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for getcwd
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for gethostbyname
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for gethostname
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for getloadavg
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for gettimeofday
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for inet_ntoa
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for isascii
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2090,2101c2090,2101
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for localtime_r
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for memchr
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for memmove
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for localtime_r
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for memchr
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for memmove
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2103,2106c2103,2106
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for memset
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for memset
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2108,2119c2108,2119
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for mkdir
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for munmap
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for pow
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for mkdir
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for munmap
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for pow
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2121,2122c2121,2122
< /tmp/cc26lbye.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:138: undefined reference to `pow'
---
> /tmp/ccAg04rK.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:138: undefined reference to `pow'
2124c2124
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2267,2281c2267,2281
< configure:14634: result: no
< configure:14554: checking for putenv
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for re_comp
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for regcomp
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for rint
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14667: result: no
> configure:14587: checking for putenv
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for re_comp
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for regcomp
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for rint
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2283,2284c2283,2284
< /tmp/ccok8UKn.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:141: undefined reference to `rint'
---
> /tmp/cc4G1IoE.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:141: undefined reference to `rint'
2286c2286
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2432,2446c2432,2446
< configure:14634: result: no
< configure:14554: checking for select
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for setenv
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for socket
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for sqrt
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14667: result: no
> configure:14587: checking for select
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for setenv
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for socket
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for sqrt
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2448,2449c2448,2449
< /tmp/ccQLStPM.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:144: undefined reference to `sqrt'
---
> /tmp/ccRZvvSs.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:144: undefined reference to `sqrt'
2451c2451
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2600,2602c2600,2602
< configure:14634: result: no
< configure:14554: checking for strcasecmp
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14667: result: no
> configure:14587: checking for strcasecmp
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2604,2611c2604,2611
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strcasestr
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strchr
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strcasestr
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strchr
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2613,2616c2613,2616
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strcspn
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strcspn
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2618,2621c2618,2621
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strdup
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strdup
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2623,2632c2623,2632
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strerror
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strlcat
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< /tmp/ccoLyG8m.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:150: undefined reference to `strlcat'
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strerror
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strlcat
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> /tmp/ccYyorZo.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:150: undefined reference to `strlcat'
2634c2634
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2789,2793c2789,2793
< configure:14634: result: no
< configure:14554: checking for strlcpy
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< /tmp/ccWf5Jsa.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:150: undefined reference to `strlcpy'
---
> configure:14667: result: no
> configure:14587: checking for strlcpy
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> /tmp/ccuiMFV8.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:150: undefined reference to `strlcpy'
2795c2795
< configure:14616: $? = 1
---
> configure:14649: $? = 1
2950,2952c2950,2952
< configure:14634: result: no
< configure:14554: checking for strncasecmp
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14667: result: no
> configure:14587: checking for strncasecmp
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2954,2957c2954,2957
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strndup
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strndup
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2959,2966c2959,2966
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strnlen
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strrchr
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strnlen
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strrchr
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2968,2975c2968,2975
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strsep
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strspn
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strsep
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strspn
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2977,2980c2977,2980
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strstr
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strstr
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
2982,3009c2982,3009
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strtol
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for strtoq
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for unsetenv
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for utime
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14554: checking for vasprintf
< configure:14610: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14616: $? = 0
< configure:14634: result: yes
< configure:14646: checking for library containing gethostbyname_r
< configure:14687: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14693: $? = 0
< configure:14721: result: none required
< configure:14730: checking for gethostbyname_r with 6 arguments
< configure:14754: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strtol
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for strtoq
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for unsetenv
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for utime
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14587: checking for vasprintf
> configure:14643: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14649: $? = 0
> configure:14667: result: yes
> configure:14679: checking for library containing gethostbyname_r
> configure:14720: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14726: $? = 0
> configure:14754: result: none required
> configure:14763: checking for gethostbyname_r with 6 arguments
> configure:14787: gcc -o conftest -g -O2   conftest.c  >&5
3012,3015c3012,3015
< configure:14760: $? = 0
< configure:14766: result: yes
< configure:14785: checking for gethostbyname_r with 5 arguments
< configure:14809: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14793: $? = 0
> configure:14799: result: yes
> configure:14818: checking for gethostbyname_r with 5 arguments
> configure:14842: gcc -o conftest -g -O2   conftest.c  >&5
3019c3019
< configure:14815: $? = 1
---
> configure:14848: $? = 1
3158,3160c3158,3160
< configure:14832: result: no
< configure:14840: checking for PTHREAD_RWLOCK_INITIALIZER
< configure:14863: gcc -o conftest -g -O2   conftest.c  >&5
---
> configure:14865: result: no
> configure:14873: checking for PTHREAD_RWLOCK_INITIALIZER
> configure:14896: gcc -o conftest -g -O2   conftest.c  >&5
3178,3193c3178,3193
< configure:14869: $? = 0
< configure:14875: result: yes
< configure:14894: checking for PTHREAD_RWLOCK_PREFER_WRITER_NP
< configure:14917: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14923: $? = 0
< configure:14929: result: yes
< configure:14948: checking for compiler atomic operations
< configure:14971: gcc -o conftest -g -O2   conftest.c  >&5
< configure:14977: $? = 0
< configure:14983: result: yes
< configure:15003: checking for compiler 'attribute pure' support
< configure:15026: gcc -c -g -O2  conftest.c >&5
< configure:15032: $? = 0
< configure:15037: result: yes
< configure:15055: checking for compiler 'attribute malloc' support
< configure:15078: gcc -c -g -O2  conftest.c >&5
---
> configure:14902: $? = 0
> configure:14908: result: yes
> configure:14927: checking for PTHREAD_RWLOCK_PREFER_WRITER_NP
> configure:14950: gcc -o conftest -g -O2   conftest.c  >&5
> configure:14956: $? = 0
> configure:14962: result: yes
> configure:14981: checking for compiler atomic operations
> configure:15004: gcc -o conftest -g -O2   conftest.c  >&5
> configure:15010: $? = 0
> configure:15016: result: yes
> configure:15036: checking for compiler 'attribute pure' support
> configure:15059: gcc -c -g -O2  conftest.c >&5
> configure:15065: $? = 0
> configure:15070: result: yes
> configure:15088: checking for compiler 'attribute malloc' support
> configure:15111: gcc -c -g -O2  conftest.c >&5
3195,3217c3195,3215
< configure:15084: $? = 0
< configure:15089: result: yes
< configure:15107: checking for compiler 'attribute const' support
< configure:15130: gcc -c -g -O2  conftest.c >&5
< configure:15136: $? = 0
< configure:15141: result: yes
< configure:15159: checking for compiler 'attribute unused' support
< configure:15182: gcc -c -g -O2  conftest.c >&5
< configure:15188: $? = 0
< configure:15193: result: yes
< configure:15211: checking for compiler 'attribute always_inline' support
< configure:15234: gcc -c -g -O2  conftest.c >&5
< configure:15240: $? = 0
< configure:15245: result: yes
< configure:15263: checking for -ffunction-sections support
< configure:15288: gcc -c -g -O2 -ffunction-sections  conftest.c >&5
< configure:15294: $? = 0
< configure:15299: result: yes
< configure:15303: checking for --gc-sections support
< configure:15326: gcc -o conftest -g -O2 -ffunction-sections   -Wl,--gc-sections conftest.c  >&5
< configure:15332: $? = 0
< configure:15338: result: yes
< configure:15368: checking for -Wdeclaration-after-statement support
---
> configure:15117: $? = 0
> configure:15122: result: yes
> configure:15140: checking for compiler 'attribute const' support
> configure:15163: gcc -c -g -O2  conftest.c >&5
> configure:15169: $? = 0
> configure:15174: result: yes
> configure:15192: checking for compiler 'attribute unused' support
> configure:15215: gcc -c -g -O2  conftest.c >&5
> configure:15221: $? = 0
> configure:15226: result: yes
> configure:15244: checking for compiler 'attribute always_inline' support
> configure:15267: gcc -c -g -O2  conftest.c >&5
> configure:15273: $? = 0
> configure:15278: result: yes
> configure:15296: checking for -ffunction-sections support
> configure:15321: gcc -c -g -O2 -ffunction-sections  conftest.c >&5
> configure:15327: $? = 0
> configure:15332: result: yes
> configure:15336: checking for --gc-sections support
> configure:15359: gcc -o conftest -g -O2 -ffunction-sections   -Wl,--gc-sections conftest.c  >&5
> configure:15365: $? = 0
3219,3226c3217,3226
< configure:15381: checking for res_ninit
< configure:15404: gcc -o conftest -g -O2   conftest.c  >&5
< configure:15410: $? = 0
< configure:15416: result: yes
< configure:15423: checking for res_ndestroy
< configure:15446: gcc -o conftest -g -O2   conftest.c  >&5
< /tmp/cciZ41df.o: In function `main':
< /root/asterisk-1.4.11/conftest.c:142: undefined reference to `res_ndestroy'
---
> configure:15401: checking for -Wdeclaration-after-statement support
> configure:15404: result: yes
> configure:15414: checking for res_ninit
> configure:15437: gcc -o conftest -g -O2   conftest.c  >&5
> configure:15443: $? = 0
> configure:15449: result: yes
> configure:15456: checking for res_ndestroy
> configure:15479: gcc -o conftest -g -O2   conftest.c  >&5
> /tmp/cct0NoPo.o: In function `main':
> /root/asterisk-1.4.13/conftest.c:142: undefined reference to `res_ndestroy'
3228c3228
< configure:15452: $? = 1
---
> configure:15485: $? = 1
3375,3385c3375,3385
< configure:15469: result: no
< configure:15488: checking for RTLD_NOLOAD
< configure:15511: gcc -o conftest -g -O2   conftest.c  >&5
< configure:15517: $? = 0
< configure:15523: result: yes
< configure:15542: checking for IP_MTU_DISCOVER
< configure:15565: gcc -o conftest -g -O2   conftest.c  >&5
< configure:15571: $? = 0
< configure:15577: result: yes
< configure:15606: checking libkern/OSAtomic.h usability
< configure:15623: gcc -c -g -O2  conftest.c >&5
---
> configure:15502: result: no
> configure:15521: checking for RTLD_NOLOAD
> configure:15544: gcc -o conftest -g -O2   conftest.c  >&5
> configure:15550: $? = 0
> configure:15556: result: yes
> configure:15575: checking for IP_MTU_DISCOVER
> configure:15598: gcc -o conftest -g -O2   conftest.c  >&5
> configure:15604: $? = 0
> configure:15610: result: yes
> configure:15639: checking libkern/OSAtomic.h usability
> configure:15656: gcc -c -g -O2  conftest.c >&5
3387c3387
< configure:15629: $? = 1
---
> configure:15662: $? = 1
3562,3564c3562,3564
< configure:15643: result: no
< configure:15647: checking libkern/OSAtomic.h presence
< configure:15662: gcc -E  conftest.c
---
> configure:15676: result: no
> configure:15680: checking libkern/OSAtomic.h presence
> configure:15695: gcc -E  conftest.c
3566c3566
< configure:15668: $? = 1
---
> configure:15701: $? = 1
3708,3722c3708,3722
< configure:15682: result: no
< configure:15710: checking for libkern/OSAtomic.h
< configure:15717: result: no
< configure:15731: checking for int
< configure:15761: gcc -c -g -O2  conftest.c >&5
< configure:15767: $? = 0
< configure:15782: result: yes
< configure:15789: checking size of int
< configure:16091: gcc -o conftest -g -O2   conftest.c  >&5
< configure:16094: $? = 0
< configure:16100: ./conftest
< configure:16103: $? = 0
< configure:16126: result: 4
< configure:16149: checking for snd_spcm_init in -lasound
< configure:16184: gcc -o conftest -g -O2   conftest.c -lasound  -lm -ldl  >&5
---
> configure:15715: result: no
> configure:15743: checking for libkern/OSAtomic.h
> configure:15750: result: no
> configure:15764: checking for int
> configure:15794: gcc -c -g -O2  conftest.c >&5
> configure:15800: $? = 0
> configure:15815: result: yes
> configure:15822: checking size of int
> configure:16124: gcc -o conftest -g -O2   conftest.c  >&5
> configure:16127: $? = 0
> configure:16133: ./conftest
> configure:16136: $? = 0
> configure:16159: result: 4
> configure:16182: checking for snd_spcm_init in -lasound
> configure:16217: gcc -o conftest -g -O2   conftest.c -lasound  -lm -ldl  >&5
3725c3725
< configure:16190: $? = 1
---
> configure:16223: $? = 1
3882,3898c3882,3898
< configure:16208: result: no
< configure:16548: checking for initscr in -lcurses
< configure:16583: gcc -o conftest -g -O2   conftest.c -lcurses    >&5
< configure:16589: $? = 0
< configure:16607: result: yes
< configure:16774: checking curses.h usability
< configure:16791: gcc -c -g -O2  conftest.c >&5
< configure:16797: $? = 0
< configure:16811: result: yes
< configure:16815: checking curses.h presence
< configure:16830: gcc -E  conftest.c
< configure:16836: $? = 0
< configure:16850: result: yes
< configure:16878: checking for curses.h
< configure:16885: result: yes
< configure:16955: checking for gsm_create in -lgsm
< configure:16990: gcc -o conftest -g -O2   conftest.c -lgsm   >&5
---
> configure:16241: result: no
> configure:16581: checking for initscr in -lcurses
> configure:16616: gcc -o conftest -g -O2   conftest.c -lcurses    >&5
> configure:16622: $? = 0
> configure:16640: result: yes
> configure:16807: checking curses.h usability
> configure:16824: gcc -c -g -O2  conftest.c >&5
> configure:16830: $? = 0
> configure:16844: result: yes
> configure:16848: checking curses.h presence
> configure:16863: gcc -E  conftest.c
> configure:16869: $? = 0
> configure:16883: result: yes
> configure:16911: checking for curses.h
> configure:16918: result: yes
> configure:16988: checking for gsm_create in -lgsm
> configure:17023: gcc -o conftest -g -O2   conftest.c -lgsm   >&5
3901c3901
< configure:16996: $? = 1
---
> configure:17029: $? = 1
4059,4061c4059,4061
< configure:17014: result: no
< configure:17626: checking for iks_start_sasl in -liksemel
< configure:17661: gcc -o conftest -g -O2   conftest.c -liksemel    >&5
---
> configure:17047: result: no
> configure:17659: checking for iks_start_sasl in -liksemel
> configure:17694: gcc -o conftest -g -O2   conftest.c -liksemel    >&5
4064c4064
< configure:17667: $? = 1
---
> configure:17700: $? = 1
4223,4226c4223,4226
< configure:17685: result: no
< configure:18430: checking for UW IMAP Toolkit c-client library
< configure:18508: gcc -o conftest -g -O2  -I/root/asterisk-1.4.11/../imap-2004g/c-client  conftest.c  /root/asterisk-1.4.11/../imap-2004g/c-client/c-client.a  >&5
< gcc: /root/asterisk-1.4.11/../imap-2004g/c-client/c-client.a: No such file or directory
---
> configure:17718: result: no
> configure:18463: checking for UW IMAP Toolkit c-client library
> configure:18541: gcc -o conftest -g -O2  -I/root/asterisk-1.4.13/../imap-2004g/c-client  conftest.c  /root/asterisk-1.4.13/../imap-2004g/c-client/c-client.a  >&5
> gcc: /root/asterisk-1.4.13/../imap-2004g/c-client/c-client.a: No such file or directory
4246c4246
< configure:18514: $? = 1
---
> configure:18547: $? = 1
4446,4448c4446,4448
< configure:18658: result: no
< configure:18674: checking for lt_dlinit in -lltdl
< configure:18709: gcc -o conftest -g -O2   conftest.c -lltdl    >&5
---
> configure:18691: result: no
> configure:18707: checking for lt_dlinit in -lltdl
> configure:18742: gcc -o conftest -g -O2   conftest.c -lltdl    >&5
4451c4451
< configure:18715: $? = 1
---
> configure:18748: $? = 1
4610,4612c4610,4612
< configure:18733: result: no
< configure:19071: checking for crashHandler in -lkdecore
< configure:19106: g++ -o conftest -g -O2  -I/include  conftest.cpp  -L/lib -lkdecore >&5
---
> configure:18766: result: no
> configure:19104: checking for crashHandler in -lkdecore
> configure:19139: g++ -o conftest -g -O2  -I/include  conftest.cpp  -L/lib -lkdecore >&5
4616c4616
< configure:19112: $? = 1
---
> configure:19145: $? = 1
4769,4771c4769,4771
< configure:19159: result: no
< configure:19290: checking for mISDN_open in -lmISDN
< configure:19325: gcc -o conftest -g -O2   conftest.c -lmISDN    >&5
---
> configure:19192: result: no
> configure:19323: checking for mISDN_open in -lmISDN
> configure:19358: gcc -o conftest -g -O2   conftest.c -lmISDN    >&5
4774c4774
< configure:19331: $? = 1
---
> configure:19364: $? = 1
4933,4935c4933,4935
< configure:19349: result: no
< configure:20622: checking for nbs_connect in -lnbs
< configure:20657: gcc -o conftest -g -O2   conftest.c -lnbs    >&5
---
> configure:19382: result: no
> configure:20655: checking for nbs_connect in -lnbs
> configure:20690: gcc -o conftest -g -O2   conftest.c -lnbs    >&5
4938c4938
< configure:20663: $? = 1
---
> configure:20696: $? = 1
5097,5107c5097,5107
< configure:20681: result: no
< configure:21021: checking for initscr in -lncurses
< configure:21056: gcc -o conftest -g -O2   conftest.c -lncurses    >&5
< configure:21062: $? = 0
< configure:21080: result: yes
< configure:21238: checking for curses.h
< configure:21243: result: yes
< configure:21575: checking for net-snmp-config
< configure:21608: result: no
< configure:21744: checking for newtBell in -lnewt
< configure:21779: gcc -o conftest -g -O2   conftest.c -lnewt    >&5
---
> configure:20714: result: no
> configure:21054: checking for initscr in -lncurses
> configure:21089: gcc -o conftest -g -O2   conftest.c -lncurses    >&5
> configure:21095: $? = 0
> configure:21113: result: yes
> configure:21271: checking for curses.h
> configure:21276: result: yes
> configure:21608: checking for net-snmp-config
> configure:21641: result: no
> configure:21777: checking for newtBell in -lnewt
> configure:21812: gcc -o conftest -g -O2   conftest.c -lnewt    >&5
5110c5110
< configure:21785: $? = 1
---
> configure:21818: $? = 1
5270,5272c5270,5272
< configure:21803: result: no
< configure:22143: checking for SQLConnect in -lodbc
< configure:22178: gcc -o conftest -g -O2   conftest.c -lodbc    >&5
---
> configure:21836: result: no
> configure:22176: checking for SQLConnect in -lodbc
> configure:22211: gcc -o conftest -g -O2   conftest.c -lodbc    >&5
5275c5275
< configure:22184: $? = 1
---
> configure:22217: $? = 1
5435,5437c5435,5437
< configure:22202: result: no
< configure:22542: checking for ogg_sync_init in -logg
< configure:22577: gcc -o conftest -g -O2   conftest.c -logg    >&5
---
> configure:22235: result: no
> configure:22575: checking for ogg_sync_init in -logg
> configure:22610: gcc -o conftest -g -O2   conftest.c -logg    >&5
5440c5440
< configure:22583: $? = 1
---
> configure:22616: $? = 1
5600,5614c5600,5614
< configure:22601: result: no
< configure:22943: checking linux/soundcard.h usability
< configure:22960: gcc -c -g -O2  conftest.c >&5
< configure:22966: $? = 0
< configure:22980: result: yes
< configure:22984: checking linux/soundcard.h presence
< configure:22999: gcc -E  conftest.c
< configure:23005: $? = 0
< configure:23019: result: yes
< configure:23047: checking for linux/soundcard.h
< configure:23054: result: yes
< configure:23776: checking for pg_config
< configure:23809: result: no
< configure:23961: checking for poptStrerror in -lpopt
< configure:23996: gcc -o conftest -g -O2   conftest.c -lpopt    >&5
---
> configure:22634: result: no
> configure:22976: checking linux/soundcard.h usability
> configure:22993: gcc -c -g -O2  conftest.c >&5
> configure:22999: $? = 0
> configure:23013: result: yes
> configure:23017: checking linux/soundcard.h presence
> configure:23032: gcc -E  conftest.c
> configure:23038: $? = 0
> configure:23052: result: yes
> configure:23080: checking for linux/soundcard.h
> configure:23087: result: yes
> configure:23809: checking for pg_config
> configure:23842: result: no
> configure:23994: checking for poptStrerror in -lpopt
> configure:24029: gcc -o conftest -g -O2   conftest.c -lpopt    >&5
5617c5617
< configure:24002: $? = 1
---
> configure:24035: $? = 1
5778,5780c5778,5780
< configure:24020: result: no
< configure:24360: checking for pri_keypad_facility in -lpri
< configure:24395: gcc -o conftest -g -O2   conftest.c -lpri    >&5
---
> configure:24053: result: no
> configure:24393: checking for pri_keypad_facility in -lpri
> configure:24428: gcc -o conftest -g -O2   conftest.c -lpri    >&5
5783c5783
< configure:24401: $? = 1
---
> configure:24434: $? = 1
5944,5946c5944,5946
< configure:24419: result: no
< configure:25049: checking /root/pwlib/include/ptlib.h usability
< configure:25066: g++ -c -g -O2  conftest.cpp >&5
---
> configure:24452: result: no
> configure:25082: checking /root/pwlib/include/ptlib.h usability
> configure:25099: g++ -c -g -O2  conftest.cpp >&5
5948c5948
< configure:25072: $? = 1
---
> configure:25105: $? = 1
6128,6130c6128,6130
< configure:25086: result: no
< configure:25090: checking /root/pwlib/include/ptlib.h presence
< configure:25105: g++ -E  conftest.cpp
---
> configure:25119: result: no
> configure:25123: checking /root/pwlib/include/ptlib.h presence
> configure:25138: g++ -E  conftest.cpp
6132c6132
< configure:25111: $? = 1
---
> configure:25144: $? = 1
6279,6283c6279,6283
< configure:25125: result: no
< configure:25153: checking for /root/pwlib/include/ptlib.h
< configure:25161: result: no
< configure:25183: checking /usr/local/include/ptlib.h usability
< configure:25200: g++ -c -g -O2  conftest.cpp >&5
---
> configure:25158: result: no
> configure:25186: checking for /root/pwlib/include/ptlib.h
> configure:25194: result: no
> configure:25216: checking /usr/local/include/ptlib.h usability
> configure:25233: g++ -c -g -O2  conftest.cpp >&5
6285c6285
< configure:25206: $? = 1
---
> configure:25239: $? = 1
6465,6467c6465,6467
< configure:25220: result: no
< configure:25224: checking /usr/local/include/ptlib.h presence
< configure:25239: g++ -E  conftest.cpp
---
> configure:25253: result: no
> configure:25257: checking /usr/local/include/ptlib.h presence
> configure:25272: g++ -E  conftest.cpp
6469c6469
< configure:25245: $? = 1
---
> configure:25278: $? = 1
6616,6620c6616,6620
< configure:25259: result: no
< configure:25287: checking for /usr/local/include/ptlib.h
< configure:25294: result: no
< configure:25408: checking /usr/include/ptlib.h usability
< configure:25425: g++ -c -g -O2  conftest.cpp >&5
---
> configure:25292: result: no
> configure:25320: checking for /usr/local/include/ptlib.h
> configure:25327: result: no
> configure:25441: checking /usr/include/ptlib.h usability
> configure:25458: g++ -c -g -O2  conftest.cpp >&5
6622c6622
< configure:25431: $? = 1
---
> configure:25464: $? = 1
6802,6804c6802,6804
< configure:25445: result: no
< configure:25449: checking /usr/include/ptlib.h presence
< configure:25464: g++ -E  conftest.cpp
---
> configure:25478: result: no
> configure:25482: checking /usr/include/ptlib.h presence
> configure:25497: g++ -E  conftest.cpp
6806c6806
< configure:25470: $? = 1
---
> configure:25503: $? = 1
6953,6957c6953,6957
< configure:25484: result: no
< configure:25512: checking for /usr/include/ptlib.h
< configure:25519: result: no
< configure:26782: checking for QDate in -lqt
< configure:26815: g++ -o conftest -g -O2   conftest.cpp  -lqt >&5
---
> configure:25517: result: no
> configure:25545: checking for /usr/include/ptlib.h
> configure:25552: result: no
> configure:26815: checking for QDate in -lqt
> configure:26848: g++ -o conftest -g -O2   conftest.cpp  -lqt >&5
6962c6962
< configure:26821: $? = 1
---
> configure:26854: $? = 1
7118c7118
< configure:26872: g++ -o conftest -g -O2   conftest.cpp  -lqt-mt >&5
---
> configure:26905: g++ -o conftest -g -O2   conftest.cpp  -lqt-mt >&5
7123c7123
< configure:26878: $? = 1
---
> configure:26911: $? = 1
7279,7281c7279,7281
< configure:26902: result: no
< configure:27051: checking for rc_read_config in -lradiusclient-ng
< configure:27086: gcc -o conftest -g -O2   conftest.c -lradiusclient-ng    >&5
---
> configure:26935: result: no
> configure:27084: checking for rc_read_config in -lradiusclient-ng
> configure:27119: gcc -o conftest -g -O2   conftest.c -lradiusclient-ng    >&5
7284c7284
< configure:27092: $? = 1
---
> configure:27125: $? = 1
7445,7447c7445,7447
< configure:27110: result: no
< configure:27450: checking for speex_encode in -lspeex
< configure:27485: gcc -o conftest -g -O2   conftest.c -lspeex  -lm  >&5
---
> configure:27143: result: no
> configure:27483: checking for speex_encode in -lspeex
> configure:27518: gcc -o conftest -g -O2   conftest.c -lspeex  -lm  >&5
7450c7450
< configure:27491: $? = 1
---
> configure:27524: $? = 1
7611,7613c7611,7613
< configure:27509: result: no
< configure:27849: checking for sqlite_exec in -lsqlite
< configure:27884: gcc -o conftest -g -O2   conftest.c -lsqlite    >&5
---
> configure:27542: result: no
> configure:27882: checking for sqlite_exec in -lsqlite
> configure:27917: gcc -o conftest -g -O2   conftest.c -lsqlite    >&5
7616c7616
< configure:27890: $? = 1
---
> configure:27923: $? = 1
7777,7779c7777,7779
< configure:27908: result: no
< configure:28248: checking for ssl2_connect in -lssl
< configure:28283: gcc -o conftest -g -O2   conftest.c -lssl  -lcrypto  >&5
---
> configure:27941: result: no
> configure:28281: checking for ssl2_connect in -lssl
> configure:28316: gcc -o conftest -g -O2   conftest.c -lssl  -lcrypto  >&5
7782c7782
< configure:28289: $? = 1
---
> configure:28322: $? = 1
7943,7945c7943,7945
< configure:28307: result: no
< configure:29048: checking for tds_version in -ltds
< configure:29083: gcc -o conftest -g -O2   conftest.c -ltds    >&5
---
> configure:28340: result: no
> configure:29081: checking for tds_version in -ltds
> configure:29116: gcc -o conftest -g -O2   conftest.c -ltds    >&5
7948c7948
< configure:29089: $? = 1
---
> configure:29122: $? = 1
8109,8115c8109,8115
< configure:29107: result: no
< configure:29464: checking for tgetent in -ltermcap
< configure:29499: gcc -o conftest -g -O2   conftest.c -ltermcap    >&5
< configure:29505: $? = 0
< configure:29523: result: yes
< configure:29863: checking for tgetent in -ltinfo
< configure:29898: gcc -o conftest -g -O2   conftest.c -ltinfo    >&5
---
> configure:29140: result: no
> configure:29497: checking for tgetent in -ltermcap
> configure:29532: gcc -o conftest -g -O2   conftest.c -ltermcap    >&5
> configure:29538: $? = 0
> configure:29556: result: yes
> configure:29896: checking for tgetent in -ltinfo
> configure:29931: gcc -o conftest -g -O2   conftest.c -ltinfo    >&5
8118c8118
< configure:29904: $? = 1
---
> configure:29937: $? = 1
8280,8282c8280,8282
< configure:29922: result: no
< configure:30266: checking for tone_zone_find in -ltonezone
< configure:30301: gcc -o conftest -g -O2   conftest.c -ltonezone    >&5
---
> configure:29955: result: no
> configure:30299: checking for tone_zone_find in -ltonezone
> configure:30334: gcc -o conftest -g -O2   conftest.c -ltonezone    >&5
8285c8285
< configure:30307: $? = 1
---
> configure:30340: $? = 1
8447,8449c8447,8616
< configure:30325: result: no
< configure:30665: checking for vorbis_info_init in -lvorbis
< configure:30700: gcc -o conftest -g -O2   conftest.c -lvorbis  -lm -lvorbisenc  >&5
---
> configure:30358: result: no
> configure:30698: checking for usb_init in -lusb
> configure:30733: gcc -o conftest -g -O2   conftest.c -lusb    >&5
> /usr/bin/ld: cannot find -lusb
> collect2: ld returned 1 exit status
> configure:30739: $? = 1
> configure: failed program was:
> | /* confdefs.h.  */
> | #define PACKAGE_NAME ""
> | #define PACKAGE_TARNAME ""
> | #define PACKAGE_VERSION ""
> | #define PACKAGE_STRING ""
> | #define PACKAGE_BUGREPORT ""
> | #define _GNU_SOURCE 1
> | #define STDC_HEADERS 1
> | #define HAVE_SYS_TYPES_H 1
> | #define HAVE_SYS_STAT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_MEMORY_H 1
> | #define HAVE_STRINGS_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_STDINT_H 1
> | #define HAVE_UNISTD_H 1
> | #define __EXTENSIONS__ 1
> | #define _POSIX_PTHREAD_SEMANTICS 1
> | #define _TANDEM_SOURCE 1
> | #define HAVE_PTHREAD 1
> | #define HAVE_ALLOCA_H 1
> | #define HAVE_ALLOCA 1
> | #define HAVE_DIRENT_H 1
> | #define STDC_HEADERS 1
> | #define HAVE_SYS_WAIT_H 1
> | #define HAVE_ARPA_INET_H 1
> | #define HAVE_FCNTL_H 1
> | #define HAVE_INTTYPES_H 1
> | #define HAVE_LIBINTL_H 1
> | #define HAVE_LIMITS_H 1
> | #define HAVE_LOCALE_H 1
> | #define HAVE_MALLOC_H 1
> | #define HAVE_NETDB_H 1
> | #define HAVE_NETINET_IN_H 1
> | #define HAVE_STDDEF_H 1
> | #define HAVE_STDINT_H 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_STRING_H 1
> | #define HAVE_STRINGS_H 1
> | #define HAVE_SYS_FILE_H 1
> | #define HAVE_SYS_IOCTL_H 1
> | #define HAVE_SYS_PARAM_H 1
> | #define HAVE_SYS_SOCKET_H 1
> | #define HAVE_SYS_TIME_H 1
> | #define HAVE_SYSLOG_H 1
> | #define HAVE_TERMIOS_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_UTIME_H 1
> | #define _FILE_OFFSET_BITS 64
> | #define HAVE__BOOL 1
> | #define HAVE_STDBOOL_H 1
> | #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
> | #define TIME_WITH_SYS_TIME 1
> | #define HAVE_PTRDIFF_T 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_CHOWN 1
> | #define HAVE_FORK 1
> | #define HAVE_VFORK 1
> | #define HAVE_WORKING_VFORK 1
> | #define HAVE_WORKING_FORK 1
> | #define HAVE_FSEEKO 1
> | #define HAVE_SYS_TIME_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_UTIME_H 1
> | #define HAVE_ALARM 1
> | #define HAVE_STDLIB_H 1
> | #define HAVE_UNISTD_H 1
> | #define HAVE_GETPAGESIZE 1
> | #define HAVE_MMAP 1
> | #define HAVE_SYS_SELECT_H 1
> | #define HAVE_SYS_SOCKET_H 1
> | #define SELECT_TYPE_ARG1 int
> | #define SELECT_TYPE_ARG234 (fd_set *)
> | #define SELECT_TYPE_ARG5 (struct timeval *)
> | #define PROTOTYPES 1
> | #define __PROTOTYPES 1
> | #define RETSIGTYPE void
> | #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
> | #define HAVE_STRCOLL 1
> | #define HAVE_STRFTIME 1
> | #define HAVE_UTIME_NULL 1
> | #define HAVE_VPRINTF 1
> | #define HAVE_ASPRINTF 1
> | #define HAVE_ATEXIT 1
> | #define HAVE_BZERO 1
> | #define HAVE_DUP2 1
> | #define HAVE_ENDPWENT 1
> | #define HAVE_FTRUNCATE 1
> | #define HAVE_GETCWD 1
> | #define HAVE_GETHOSTBYNAME 1
> | #define HAVE_GETHOSTNAME 1
> | #define HAVE_GETLOADAVG 1
> | #define HAVE_GETTIMEOFDAY 1
> | #define HAVE_INET_NTOA 1
> | #define HAVE_ISASCII 1
> | #define HAVE_LOCALTIME_R 1
> | #define HAVE_MEMCHR 1
> | #define HAVE_MEMMOVE 1
> | #define HAVE_MEMSET 1
> | #define HAVE_MKDIR 1
> | #define HAVE_MUNMAP 1
> | #define HAVE_PUTENV 1
> | #define HAVE_RE_COMP 1
> | #define HAVE_REGCOMP 1
> | #define HAVE_SELECT 1
> | #define HAVE_SETENV 1
> | #define HAVE_SOCKET 1
> | #define HAVE_STRCASECMP 1
> | #define HAVE_STRCASESTR 1
> | #define HAVE_STRCHR 1
> | #define HAVE_STRCSPN 1
> | #define HAVE_STRDUP 1
> | #define HAVE_STRERROR 1
> | #define HAVE_STRNCASECMP 1
> | #define HAVE_STRNDUP 1
> | #define HAVE_STRNLEN 1
> | #define HAVE_STRRCHR 1
> | #define HAVE_STRSEP 1
> | #define HAVE_STRSPN 1
> | #define HAVE_STRSTR 1
> | #define HAVE_STRTOL 1
> | #define HAVE_STRTOQ 1
> | #define HAVE_UNSETENV 1
> | #define HAVE_UTIME 1
> | #define HAVE_VASPRINTF 1
> | #define HAVE_GETHOSTBYNAME_R_6 1
> | #define HAVE_PTHREAD_RWLOCK_INITIALIZER 1
> | #define HAVE_PTHREAD_RWLOCK_PREFER_WRITER_NP 1
> | #define HAVE_GCC_ATOMICS 1
> | #define HAVE_ATTRIBUTE_pure 1
> | #define HAVE_ATTRIBUTE_malloc 1
> | #define HAVE_ATTRIBUTE_const 1
> | #define HAVE_ATTRIBUTE_unused 1
> | #define HAVE_ATTRIBUTE_always_inline 1
> | #define HAVE_RES_NINIT 1
> | #define HAVE_RTLD_NOLOAD 1
> | #define HAVE_IP_MTU_DISCOVER 1
> | #define SIZEOF_INT 4
> | #define HAVE_CURSES 1
> | #define HAVE_GSM_HEADER 1
> | #define HAVE_NCURSES 1
> | #define HAVE_OSS 1
> | #define HAVE_TERMCAP 1
> | /* end confdefs.h.  */
> | 
> | /* Override any GCC internal prototype to avoid an error.
> |    Use char because int might match the return type of a GCC
> |    builtin and then its argument prototype would still apply.  */
> | #ifdef __cplusplus
> | extern "C"
> | #endif
> | char usb_init ();
> | int
> | main ()
> | {
> | return usb_init ();
> |   ;
> |   return 0;
> | }
> configure:30757: result: no
> configure:31097: checking for vorbis_info_init in -lvorbis
> configure:31132: gcc -o conftest -g -O2   conftest.c -lvorbis  -lm -lvorbisenc  >&5
8452c8619
< configure:30706: $? = 1
---
> configure:31138: $? = 1
8614,8616c8781,8783
< configure:30724: result: no
< configure:31062: checking for vpb_open in -lvpb
< configure:31099: g++ -o conftest -g -O2   conftest.cpp  -lvpb -lpthread >&5
---
> configure:31156: result: no
> configure:31494: checking for vpb_open in -lvpb
> configure:31531: g++ -o conftest -g -O2   conftest.cpp  -lvpb -lpthread >&5
8620c8787
< configure:31105: $? = 1
---
> configure:31537: $? = 1
8777,8779c8944,8946
< configure:31119: result: no
< configure:31172: checking for compress in -lz
< configure:31207: gcc -o conftest -g -O2   conftest.c -lz    >&5
---
> configure:31551: result: no
> configure:31604: checking for compress in -lz
> configure:31639: gcc -o conftest -g -O2   conftest.c -lz    >&5
8782c8949
< configure:31213: $? = 1
---
> configure:31645: $? = 1
8944,8946c9111,9113
< configure:31231: result: no
< configure:31562: checking for ZT_DIAL_OP_CANCEL in zaptel/zaptel.h
< configure:31591: gcc -c -g -O2  conftest.c >&5
---
> configure:31663: result: no
> configure:31994: checking for ZT_DIAL_OP_CANCEL in zaptel/zaptel.h
> configure:32023: gcc -c -g -O2  conftest.c >&5
8952c9119
< configure:31597: $? = 1
---
> configure:32029: $? = 1
9109,9111c9276,9278
< configure:31610: result: no
< configure:31794: checking h323.h usability
< configure:31811: gcc -c -g -O2  conftest.c >&5
---
> configure:32042: result: no
> configure:32226: checking h323.h usability
> configure:32243: gcc -c -g -O2  conftest.c >&5
9113c9280
< configure:31817: $? = 1
---
> configure:32249: $? = 1
9294,9296c9461,9463
< configure:31831: result: no
< configure:31835: checking h323.h presence
< configure:31850: gcc -E  conftest.c
---
> configure:32263: result: no
> configure:32267: checking h323.h presence
> configure:32282: gcc -E  conftest.c
9298c9465
< configure:31856: $? = 1
---
> configure:32288: $? = 1
9446,9469c9613,9636
< configure:31870: result: no
< configure:31898: checking for h323.h
< configure:31905: result: no
< configure:31928: checking linux/compiler.h usability
< configure:31945: gcc -c -g -O2  conftest.c >&5
< configure:31951: $? = 0
< configure:31965: result: yes
< configure:31969: checking linux/compiler.h presence
< configure:31984: gcc -E  conftest.c
< configure:31990: $? = 0
< configure:32004: result: yes
< configure:32032: checking for linux/compiler.h
< configure:32039: result: yes
< configure:32053: checking for linux/ixjuser.h
< configure:32079: gcc -c -g -O2  conftest.c >&5
< configure:32085: $? = 0
< configure:32100: result: yes
< configure:32155: checking for gtk-config
< configure:32185: result: no
< configure:32266: checking for pkg-config
< configure:32296: result: no
< configure:32380: checking for curl-config
< configure:32413: result: no
< configure:32612: creating ./config.status
---
> configure:32302: result: no
> configure:32330: checking for h323.h
> configure:32337: result: no
> configure:32360: checking linux/compiler.h usability
> configure:32377: gcc -c -g -O2  conftest.c >&5
> configure:32383: $? = 0
> configure:32397: result: yes
> configure:32401: checking linux/compiler.h presence
> configure:32416: gcc -E  conftest.c
> configure:32422: $? = 0
> configure:32436: result: yes
> configure:32464: checking for linux/compiler.h
> configure:32471: result: yes
> configure:32485: checking for linux/ixjuser.h
> configure:32511: gcc -c -g -O2  conftest.c >&5
> configure:32517: $? = 0
> configure:32532: result: yes
> configure:32587: checking for gtk-config
> configure:32617: result: no
> configure:32698: checking for pkg-config
> configure:32728: result: no
> configure:32812: checking for curl-config
> configure:32845: result: no
> configure:33044: creating ./config.status
9486,9492c9653,9660
< config.status:837: creating build_tools/menuselect-deps
< config.status:837: creating makeopts
< config.status:837: creating channels/h323/Makefile
< config.status:837: creating include/asterisk/autoconfig.h
< configure:33956: Package configured for: 
< configure:33958: OS type  : linux-gnu
< configure:33960: Host CPU : i686
---
> config.status:839: creating build_tools/menuselect-deps
> config.status:839: creating makeopts
> config.status:839: creating channels/h323/Makefile
> config.status:839: creating include/asterisk/autoconfig.h
> config.status:1202: include/asterisk/autoconfig.h is unchanged
> configure:34390: Package configured for: 
> configure:34392: OS type  : linux-gnu
> configure:34394: Host CPU : i686
9670a9839
> ac_cv_lib_usb_usb_init=no
9797c9966
< IMAP_TK_DIR='/root/asterisk-1.4.11/../imap-2004g'
---
> IMAP_TK_DIR='/root/asterisk-1.4.13/../imap-2004g'
9903a10073
> PBX_USB='0'
9965a10136,10138
> USB_DIR=''
> USB_INCLUDE=''
> USB_LIB=''
diff -r asterisk-1.4.11/configs/enum.conf.sample asterisk-1.4.13/configs/enum.conf.sample
5c5
< ; This file is reloaded at "reload enum" in the CLI
---
> ; This file is reloaded at "module reload enum" in the CLI
diff -r asterisk-1.4.11/configs/extensions.ael.sample asterisk-1.4.13/configs/extensions.ael.sample
6c6
< // the pbx_config module. This is where you configure all your 
---
> // the pbx_ael module. This is where you configure all your 
10c10
< // - With the "extensions reload" command in the CLI
---
> // - With the "ael reload" command in the CLI
diff -r asterisk-1.4.11/configs/followme.conf.sample asterisk-1.4.13/configs/followme.conf.sample
70c70
< followme-options-prompt=>followme/followme-options
---
> followme-options-prompt=>followme/options
78c78
< followme-status-prompt=>followme/followme-status
---
> followme-status-prompt=>followme/status
82c82
< followme-sorry-prompt=>followme/followme-sorry  
---
> followme-sorry-prompt=>followme/sorry  
diff -r asterisk-1.4.11/configs/indications.conf.sample asterisk-1.4.13/configs/indications.conf.sample
120a121
> ;
539,540c540,544
< description = Russia / ex Soviet Union
< ringcadence = 800,3200
---
> ; References:
> ;	http://www.minsvyaz.ru/site.shtml?id=1806
> ;	http://www.aboutphone.info/lib/gost/45-223-2001.html
> description = Russian Federation / ex Soviet Union
> ringcadence = 1000,4000
543,544c547,548
< ring = 425/800,0/3200
< congestion = 425/350,0/350
---
> ring = 425/1000,0/4000
> congestion = 425/175,0/175
546,548c550,553
< dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
< record = 1400/500,0/15000
< info = !950/330,!1400/330,!1800/330,0
---
> record = 1400/400,0/15000
> info = 950/330,1400/330,1800/330,0/1000
> dialrecall = 425/400,0/40
> stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
diff -r asterisk-1.4.11/configs/misdn.conf.sample asterisk-1.4.13/configs/misdn.conf.sample
204,205d203
< pp_l2_check=no
< 
347,354d344
< ; this disables echocancellation when the call is bridged between 
< ; mISDN channels
< ;
< ; default value: no
< ;
< echocancelwhenbridged=no
< 
< 
Only in asterisk-1.4.11/configs: modem.conf.sample
diff -r asterisk-1.4.11/configs/queues.conf.sample asterisk-1.4.13/configs/queues.conf.sample
214,221d213
< ; This setting controls whether callers can join a queue with no members. There
< ; are three choices:
< ;
< ; yes    - callers can join a queue with no members or only unavailable members
< ; no     - callers cannot join a queue with no members
< ; strict - callers cannot join a queue with no members or only unavailable
< ;          members
< ;
241a234,235
> ; This setting controls whether callers can join a queue with no members. There
> ; are three choices:
243,244c237,240
< ;
< ;
---
> ; yes    - callers can join a queue with no members or only unavailable members
> ; no     - callers cannot join a queue with no members
> ; strict - callers cannot join a queue with no members or only unavailable
> ;          members
247a244
> ;
diff -r asterisk-1.4.11/configs/sip.conf.sample asterisk-1.4.13/configs/sip.conf.sample
391c391
< ;allowexternalinvites=no	; Disable INVITE and REFER to non-local domains
---
> ;allowexternaldomains=no	; Disable INVITE and REFER to non-local domains
diff -r asterisk-1.4.11/configs/zapata.conf.sample asterisk-1.4.13/configs/zapata.conf.sample
335a336,338
> ; Note that when setting the number of taps, the number 256 does not translate
> ; to 256 ms of echo cancellation.  echocancel=256 means 256 / 8 = 32 ms.
> ;
diff -r asterisk-1.4.11/config.status asterisk-1.4.13/config.status
340c340
< ac_pwd='/root/asterisk-1.4.11'
---
> ac_pwd='/root/asterisk-1.4.13'
614c614
< s,@IMAP_TK_DIR@,|#_!!_#|/root/asterisk-1.4.11/../imap-2004g,g
---
> s,@IMAP_TK_DIR@,|#_!!_#|/root/asterisk-1.4.13/../imap-2004g,g
687c687
< /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
---
> /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
726a727,730
> s,@USB_LIB@,|#_!!_#|,g
> s,@USB_INCLUDE@,|#_!!_#|,g
> s,@USB_DIR@,|#_!!_#|,g
> s,@PBX_USB@,|#_!!_#|0,g
780,781d783
< :end
< s/|#_!!_#|//g
1004c1006
< " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out
---
> " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" | sed 's/|#_!!_#|//g' >$tmp/out
diff -r asterisk-1.4.11/configure asterisk-1.4.13/configure
2c2
< # From configure.ac Revision: 77865 .
---
> # From configure.ac Revision: 78166 .
854a855,858
> USB_LIB
> USB_INCLUDE
> USB_DIR
> PBX_USB
1535a1540
>   --with-usb=PATH         use usb files in PATH
8528a8534,8561
> USB_DESCRIP="usb"
> USB_OPTION="usb"
> 
> # Check whether --with-usb was given.
> if test "${with_usb+set}" = set; then
>   withval=$with_usb;
> case ${withval} in
>      n|no)
>      USE_USB=no
>      ;;
>      y|ye|yes)
>      USB_MANDATORY="yes"
>      ;;
>      *)
>      USB_DIR="${withval}"
>      USB_MANDATORY="yes"
>      ;;
> esac
> 
> fi
> 
> PBX_USB=0
> 
> 
> 
> 
> 
> 
30655a30689,31087
> if test "${USE_USB}" != "no"; then
>    pbxlibdir=""
>    if test "x${USB_DIR}" != "x"; then
>       if test -d ${USB_DIR}/lib; then
>       	 pbxlibdir="-L${USB_DIR}/lib"
>       else
>       	 pbxlibdir="-L${USB_DIR}"
>       fi
>    fi
>    { echo "$as_me:$LINENO: checking for usb_init in -lusb" >&5
> echo $ECHO_N "checking for usb_init in -lusb... $ECHO_C" >&6; }
> if test "${ac_cv_lib_usb_usb_init+set}" = set; then
>   echo $ECHO_N "(cached) $ECHO_C" >&6
> else
>   ac_check_lib_save_LIBS=$LIBS
> LIBS="-lusb ${pbxlibdir}  $LIBS"
> cat >conftest.$ac_ext <<_ACEOF
> /* confdefs.h.  */
> _ACEOF
> cat confdefs.h >>conftest.$ac_ext
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h.  */
> 
> /* Override any GCC internal prototype to avoid an error.
>    Use char because int might match the return type of a GCC
>    builtin and then its argument prototype would still apply.  */
> #ifdef __cplusplus
> extern "C"
> #endif
> char usb_init ();
> int
> main ()
> {
> return usb_init ();
>   ;
>   return 0;
> }
> _ACEOF
> rm -f conftest.$ac_objext conftest$ac_exeext
> if { (ac_try="$ac_link"
> case "(($ac_try" in
>   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
>   *) ac_try_echo=$ac_try;;
> esac
> eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
>   (eval "$ac_link") 2>conftest.er1
>   ac_status=$?
>   grep -v '^ *+' conftest.er1 >conftest.err
>   rm -f conftest.er1
>   cat conftest.err >&5
>   echo "$as_me:$LINENO: \$? = $ac_status" >&5
>   (exit $ac_status); } && {
> 	 test -z "$ac_c_werror_flag" ||
> 	 test ! -s conftest.err
>        } && test -s conftest$ac_exeext &&
>        $as_test_x conftest$ac_exeext; then
>   ac_cv_lib_usb_usb_init=yes
> else
>   echo "$as_me: failed program was:" >&5
> sed 's/^/| /' conftest.$ac_ext >&5
> 
> 	ac_cv_lib_usb_usb_init=no
> fi
> 
> rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
>       conftest$ac_exeext conftest.$ac_ext
> LIBS=$ac_check_lib_save_LIBS
> fi
> { echo "$as_me:$LINENO: result: $ac_cv_lib_usb_usb_init" >&5
> echo "${ECHO_T}$ac_cv_lib_usb_usb_init" >&6; }
> if test $ac_cv_lib_usb_usb_init = yes; then
>   AST_USB_FOUND=yes
> else
>   AST_USB_FOUND=no
> fi
> 
> 
>    if test "${AST_USB_FOUND}" = "yes"; then
>       USB_LIB="-lusb "
>       USB_HEADER_FOUND="1"
>       if test "x${USB_DIR}" != "x"; then
>          USB_LIB="${pbxlibdir} ${USB_LIB}"
> 	 USB_INCLUDE="-I${USB_DIR}/include"
> 	 saved_cppflags="${CPPFLAGS}"
> 	 CPPFLAGS="${CPPFLAGS} -I${USB_DIR}/include"
> 	 if test "xusb.h" != "x" ; then
> 	    as_ac_Header=`echo "ac_cv_header_${USB_DIR}/include/usb.h" | $as_tr_sh`
> if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
>   { echo "$as_me:$LINENO: checking for ${USB_DIR}/include/usb.h" >&5
> echo $ECHO_N "checking for ${USB_DIR}/include/usb.h... $ECHO_C" >&6; }
> if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
>   echo $ECHO_N "(cached) $ECHO_C" >&6
> fi
> ac_res=`eval echo '${'$as_ac_Header'}'`
> 	       { echo "$as_me:$LINENO: result: $ac_res" >&5
> echo "${ECHO_T}$ac_res" >&6; }
> else
>   # Is the header compilable?
> { echo "$as_me:$LINENO: checking ${USB_DIR}/include/usb.h usability" >&5
> echo $ECHO_N "checking ${USB_DIR}/include/usb.h usability... $ECHO_C" >&6; }
> cat >conftest.$ac_ext <<_ACEOF
> /* confdefs.h.  */
> _ACEOF
> cat confdefs.h >>conftest.$ac_ext
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h.  */
> $ac_includes_default
> #include <${USB_DIR}/include/usb.h>
> _ACEOF
> rm -f conftest.$ac_objext
> if { (ac_try="$ac_compile"
> case "(($ac_try" in
>   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
>   *) ac_try_echo=$ac_try;;
> esac
> eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
>   (eval "$ac_compile") 2>conftest.er1
>   ac_status=$?
>   grep -v '^ *+' conftest.er1 >conftest.err
>   rm -f conftest.er1
>   cat conftest.err >&5
>   echo "$as_me:$LINENO: \$? = $ac_status" >&5
>   (exit $ac_status); } && {
> 	 test -z "$ac_c_werror_flag" ||
> 	 test ! -s conftest.err
>        } && test -s conftest.$ac_objext; then
>   ac_header_compiler=yes
> else
>   echo "$as_me: failed program was:" >&5
> sed 's/^/| /' conftest.$ac_ext >&5
> 
> 	ac_header_compiler=no
> fi
> 
> rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
> echo "${ECHO_T}$ac_header_compiler" >&6; }
> 
> # Is the header present?
> { echo "$as_me:$LINENO: checking ${USB_DIR}/include/usb.h presence" >&5
> echo $ECHO_N "checking ${USB_DIR}/include/usb.h presence... $ECHO_C" >&6; }
> cat >conftest.$ac_ext <<_ACEOF
> /* confdefs.h.  */
> _ACEOF
> cat confdefs.h >>conftest.$ac_ext
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h.  */
> #include <${USB_DIR}/include/usb.h>
> _ACEOF
> if { (ac_try="$ac_cpp conftest.$ac_ext"
> case "(($ac_try" in
>   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
>   *) ac_try_echo=$ac_try;;
> esac
> eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
>   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
>   ac_status=$?
>   grep -v '^ *+' conftest.er1 >conftest.err
>   rm -f conftest.er1
>   cat conftest.err >&5
>   echo "$as_me:$LINENO: \$? = $ac_status" >&5
>   (exit $ac_status); } >/dev/null && {
> 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
> 	 test ! -s conftest.err
>        }; then
>   ac_header_preproc=yes
> else
>   echo "$as_me: failed program was:" >&5
> sed 's/^/| /' conftest.$ac_ext >&5
> 
>   ac_header_preproc=no
> fi
> 
> rm -f conftest.err conftest.$ac_ext
> { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
> echo "${ECHO_T}$ac_header_preproc" >&6; }
> 
> # So?  What about this header?
> case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
>   yes:no: )
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: accepted by the compiler, rejected by the preprocessor!" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: proceeding with the compiler's result" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: proceeding with the compiler's result" >&2;}
>     ac_header_preproc=yes
>     ;;
>   no:yes:* )
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: present but cannot be compiled" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: present but cannot be compiled" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h:     check for missing prerequisite headers?" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h:     check for missing prerequisite headers?" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: see the Autoconf documentation" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: see the Autoconf documentation" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h:     section \"Present But Cannot Be Compiled\"" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h:     section \"Present But Cannot Be Compiled\"" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: proceeding with the preprocessor's result" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: proceeding with the preprocessor's result" >&2;}
>     { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: in the future, the compiler will take precedence" >&5
> echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: in the future, the compiler will take precedence" >&2;}
> 
>     ;;
> esac
> { echo "$as_me:$LINENO: checking for ${USB_DIR}/include/usb.h" >&5
> echo $ECHO_N "checking for ${USB_DIR}/include/usb.h... $ECHO_C" >&6; }
> if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
>   echo $ECHO_N "(cached) $ECHO_C" >&6
> else
>   eval "$as_ac_Header=\$ac_header_preproc"
> fi
> ac_res=`eval echo '${'$as_ac_Header'}'`
> 	       { echo "$as_me:$LINENO: result: $ac_res" >&5
> echo "${ECHO_T}$ac_res" >&6; }
> 
> fi
> if test `eval echo '${'$as_ac_Header'}'` = yes; then
>   USB_HEADER_FOUND=1
> else
>   USB_HEADER_FOUND=0
> fi
> 
> 
> 	 fi
> 	 CPPFLAGS="${saved_cppflags}"
>       else
> 	 if test "xusb.h" != "x" ; then
>             if test "${ac_cv_header_usb_h+set}" = set; then
>   { echo "$as_me:$LINENO: checking for usb.h" >&5
> echo $ECHO_N "checking for usb.h... $ECHO_C" >&6; }
> if test "${ac_cv_header_usb_h+set}" = set; then
>   echo $ECHO_N "(cached) $ECHO_C" >&6
> fi
> { echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
> echo "${ECHO_T}$ac_cv_header_usb_h" >&6; }
> else
>   # Is the header compilable?
> { echo "$as_me:$LINENO: checking usb.h usability" >&5
> echo $ECHO_N "checking usb.h usability... $ECHO_C" >&6; }
> cat >conftest.$ac_ext <<_ACEOF
> /* confdefs.h.  */
> _ACEOF
> cat confdefs.h >>conftest.$ac_ext
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h.  */
> $ac_includes_default
> #include <usb.h>
> _ACEOF
> rm -f conftest.$ac_objext
> if { (ac_try="$ac_compile"
> case "(($ac_try" in
>   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
>   *) ac_try_echo=$ac_try;;
> esac
> eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
>   (eval "$ac_compile") 2>conftest.er1
>   ac_status=$?
>   grep -v '^ *+' conftest.er1 >conftest.err
>   rm -f conftest.er1
>   cat conftest.err >&5
>   echo "$as_me:$LINENO: \$? = $ac_status" >&5
>   (exit $ac_status); } && {
> 	 test -z "$ac_c_werror_flag" ||
> 	 test ! -s conftest.err
>        } && test -s conftest.$ac_objext; then
>   ac_header_compiler=yes
> else
>   echo "$as_me: failed program was:" >&5
> sed 's/^/| /' conftest.$ac_ext >&5
> 
> 	ac_header_compiler=no
> fi
> 
> rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
> echo "${ECHO_T}$ac_header_compiler" >&6; }
> 
> # Is the header present?
> { echo "$as_me:$LINENO: checking usb.h presence" >&5
> echo $ECHO_N "checking usb.h presence... $ECHO_C" >&6; }
> cat >conftest.$ac_ext <<_ACEOF
> /* confdefs.h.  */
> _ACEOF
> cat confdefs.h >>conftest.$ac_ext
> cat >>conftest.$ac_ext <<_ACEOF
> /* end confdefs.h.  */
> #include <usb.h>
> _ACEOF
> if { (ac_try="$ac_cpp conftest.$ac_ext"
> case "(($ac_try" in
>   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
>   *) ac_try_echo=$ac_try;;
> esac
> eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
>   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
>   ac_status=$?
>   grep -v '^ *+' conftest.er1 >conftest.err
>   rm -f conftest.er1
>   cat conftest.err >&5
>   echo "$as_me:$LINENO: \$? = $ac_status" >&5
>   (exit $ac_status); } >/dev/null && {
> 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
> 	 test ! -s conftest.err
>        }; then
>   ac_header_preproc=yes
> else
>   echo "$as_me: failed program was:" >&5
> sed 's/^/| /' conftest.$ac_ext >&5
> 
>   ac_header_preproc=no
> fi
> 
> rm -f conftest.err conftest.$ac_ext
> { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
> echo "${ECHO_T}$ac_header_preproc" >&6; }
> 
> # So?  What about this header?
> case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
>   yes:no: )
>     { echo "$as_me:$LINENO: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&5
> echo "$as_me: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the compiler's result" >&5
> echo "$as_me: WARNING: usb.h: proceeding with the compiler's result" >&2;}
>     ac_header_preproc=yes
>     ;;
>   no:yes:* )
>     { echo "$as_me:$LINENO: WARNING: usb.h: present but cannot be compiled" >&5
> echo "$as_me: WARNING: usb.h: present but cannot be compiled" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h:     check for missing prerequisite headers?" >&5
> echo "$as_me: WARNING: usb.h:     check for missing prerequisite headers?" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h: see the Autoconf documentation" >&5
> echo "$as_me: WARNING: usb.h: see the Autoconf documentation" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h:     section \"Present But Cannot Be Compiled\"" >&5
> echo "$as_me: WARNING: usb.h:     section \"Present But Cannot Be Compiled\"" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the preprocessor's result" >&5
> echo "$as_me: WARNING: usb.h: proceeding with the preprocessor's result" >&2;}
>     { echo "$as_me:$LINENO: WARNING: usb.h: in the future, the compiler will take precedence" >&5
> echo "$as_me: WARNING: usb.h: in the future, the compiler will take precedence" >&2;}
> 
>     ;;
> esac
> { echo "$as_me:$LINENO: checking for usb.h" >&5
> echo $ECHO_N "checking for usb.h... $ECHO_C" >&6; }
> if test "${ac_cv_header_usb_h+set}" = set; then
>   echo $ECHO_N "(cached) $ECHO_C" >&6
> else
>   ac_cv_header_usb_h=$ac_header_preproc
> fi
> { echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
> echo "${ECHO_T}$ac_cv_header_usb_h" >&6; }
> 
> fi
> if test $ac_cv_header_usb_h = yes; then
>   USB_HEADER_FOUND=1
> else
>   USB_HEADER_FOUND=0
> fi
> 
> 
> 	 fi
>       fi
>       if test "x${USB_HEADER_FOUND}" = "x0" ; then
>          if test -n "${USB_MANDATORY}" ;
>          then
>             { echo "$as_me:$LINENO: ***" >&5
> echo "$as_me: ***" >&6;}
>             { echo "$as_me:$LINENO: *** It appears that you do not have the usb development package installed." >&5
> echo "$as_me: *** It appears that you do not have the usb development package installed." >&6;}
>             { echo "$as_me:$LINENO: *** Please install it to include ${USB_DESCRIP} support, or re-run configure" >&5
> echo "$as_me: *** Please install it to include ${USB_DESCRIP} support, or re-run configure" >&6;}
>             { echo "$as_me:$LINENO: *** without explicitly specifying --with-${USB_OPTION}" >&5
> echo "$as_me: *** without explicitly specifying --with-${USB_OPTION}" >&6;}
>             exit 1
>          fi
>          USB_LIB=""
>          USB_INCLUDE=""
>          PBX_USB=0
>       else
>          PBX_USB=1
> 
> cat >>confdefs.h <<_ACEOF
> #define HAVE_USB 1
> _ACEOF
> 
>       fi
>    elif test -n "${USB_MANDATORY}";
>    then
>       { echo "$as_me:$LINENO: ***" >&5
> echo "$as_me: ***" >&6;}
>       { echo "$as_me:$LINENO: *** The ${USB_DESCRIP} installation on this system appears to be broken." >&5
> echo "$as_me: *** The ${USB_DESCRIP} installation on this system appears to be broken." >&6;}
>       { echo "$as_me:$LINENO: *** Either correct the installation, or run configure" >&5
> echo "$as_me: *** Either correct the installation, or run configure" >&6;}
>       { echo "$as_me:$LINENO: *** without explicitly specifying --with-${USB_OPTION}" >&5
> echo "$as_me: *** without explicitly specifying --with-${USB_OPTION}" >&6;}
>       exit 1
>    fi
> fi
> 
> 
> 
33444a33877,33880
> USB_LIB!$USB_LIB$ac_delim
> USB_INCLUDE!$USB_INCLUDE$ac_delim
> USB_DIR!$USB_DIR$ac_delim
> PBX_USB!$PBX_USB$ac_delim
33500c33936
<   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 92; then
---
>   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 96; then
33519c33955
< /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
---
> /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
33532,33533d33967
< :end
< s/|#_!!_#|//g
33781c34215
< " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out
---
> " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" | sed 's/|#_!!_#|//g' >$tmp/out
diff -r asterisk-1.4.11/configure.ac asterisk-1.4.13/configure.ac
22c22
< AC_REVISION($Revision: 78166 $)
---
> AC_REVISION($Revision: 82385 $)
206a207
> AST_EXT_LIB_SETUP([USB], [usb], [usb])
982a984,985
> AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h], [])
> 
diff -r asterisk-1.4.11/contrib/scripts/safe_asterisk asterisk-1.4.13/contrib/scripts/safe_asterisk
1c1
< #!/bin/sh
---
> #!/bin/bash
diff -r asterisk-1.4.11/contrib/scripts/vmail.cgi asterisk-1.4.13/contrib/scripts/vmail.cgi
245c245
< 				if (($fullname, $category) = $sth->fetchrow_array()) {;
---
> 				if (($fullname, $context) = $sth->fetchrow_array()) {;
Only in asterisk-1.4.11: defaults.h
diff -r asterisk-1.4.11/doc/CODING-GUIDELINES asterisk-1.4.13/doc/CODING-GUIDELINES
232c232
< typedef foo_t struct foo;
---
> typedef struct foo foo_t;
Only in asterisk-1.4.13/doc: .configuration.txt.swp
diff -r asterisk-1.4.11/doc/iax.txt asterisk-1.4.13/doc/iax.txt
19c19
< 1. User entry last specified in iax.conf (this is the baseline).
---
> 1. User entry with secret and no ACL specified.
diff -r asterisk-1.4.11/doc/realtime.txt asterisk-1.4.13/doc/realtime.txt
116,118c116
< Currently, realtime extensions do not support realtime hints.  There is
< a workaround available by using func_odbc.  See the sample func_odbc.conf
< for more information.
---
> Currently, realtime extensions do not support realtime hints.
Only in asterisk-1.4.11/formats: format_g723.o
Only in asterisk-1.4.11/formats: format_g723.so
Only in asterisk-1.4.11/formats: format_g726.o
Only in asterisk-1.4.11/formats: format_g726.so
Only in asterisk-1.4.11/formats: format_g729.o
Only in asterisk-1.4.11/formats: format_g729.so
Only in asterisk-1.4.11/formats: format_gsm.o
Only in asterisk-1.4.11/formats: format_gsm.so
Only in asterisk-1.4.11/formats: format_h263.o
Only in asterisk-1.4.11/formats: format_h263.so
Only in asterisk-1.4.11/formats: format_h264.o
Only in asterisk-1.4.11/formats: format_h264.so
Only in asterisk-1.4.11/formats: format_ilbc.o
Only in asterisk-1.4.11/formats: format_ilbc.so
Only in asterisk-1.4.11/formats: format_jpeg.o
Only in asterisk-1.4.11/formats: format_jpeg.so
Only in asterisk-1.4.11/formats: format_pcm.o
Only in asterisk-1.4.11/formats: format_pcm.so
Only in asterisk-1.4.11/formats: format_sln.o
Only in asterisk-1.4.11/formats: format_sln.so
Only in asterisk-1.4.11/formats: format_vox.o
Only in asterisk-1.4.11/formats: format_vox.so
Only in asterisk-1.4.11/formats: format_wav_gsm.o
Only in asterisk-1.4.11/formats: format_wav_gsm.so
Only in asterisk-1.4.11/formats: format_wav.o
Only in asterisk-1.4.11/formats: format_wav.so
Only in asterisk-1.4.11/funcs: func_base64.o
Only in asterisk-1.4.11/funcs: func_base64.so
Only in asterisk-1.4.11/funcs: func_callerid.o
Only in asterisk-1.4.11/funcs: func_callerid.so
Only in asterisk-1.4.11/funcs: func_cdr.o
Only in asterisk-1.4.11/funcs: func_cdr.so
Only in asterisk-1.4.11/funcs: func_channel.o
Only in asterisk-1.4.11/funcs: func_channel.so
diff -r asterisk-1.4.11/funcs/func_curl.c asterisk-1.4.13/funcs/func_curl.c
37c37
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 48513 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83177 $")
147a148,149
> 	ast_autoservice_start(chan);
> 
160a163,164
> 	ast_autoservice_stop(chan);
> 
Only in asterisk-1.4.11/funcs: func_cut.o
Only in asterisk-1.4.11/funcs: func_cut.so
Only in asterisk-1.4.11/funcs: func_db.o
Only in asterisk-1.4.11/funcs: func_db.so
Only in asterisk-1.4.11/funcs: func_enum.o
Only in asterisk-1.4.11/funcs: func_enum.so
Only in asterisk-1.4.11/funcs: func_env.o
Only in asterisk-1.4.11/funcs: func_env.so
Only in asterisk-1.4.11/funcs: func_global.o
Only in asterisk-1.4.11/funcs: func_global.so
Only in asterisk-1.4.11/funcs: func_groupcount.o
Only in asterisk-1.4.11/funcs: func_groupcount.so
Only in asterisk-1.4.11/funcs: func_language.o
Only in asterisk-1.4.11/funcs: func_language.so
diff -r asterisk-1.4.11/funcs/func_logic.c asterisk-1.4.13/funcs/func_logic.c
27c27
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 44808 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81415 $")
94,96c94,101
< 	char *expr;
< 	char *iftrue;
< 	char *iffalse;
---
> 	AST_DECLARE_APP_ARGS(args1,
> 		AST_APP_ARG(expr);
> 		AST_APP_ARG(remainder);
> 	);
> 	AST_DECLARE_APP_ARGS(args2,
> 		AST_APP_ARG(iftrue);
> 		AST_APP_ARG(iffalse);
> 	);
98,101c103,104
< 	data = ast_strip_quoted(data, "\"", "\"");
< 	expr = strsep(&data, "?");
< 	iftrue = strsep(&data, ":");
< 	iffalse = data;
---
> 	AST_NONSTANDARD_APP_ARGS(args1, data, '?');
> 	AST_NONSTANDARD_APP_ARGS(args2, args1.remainder, ':');
103c106
< 	if (ast_strlen_zero(expr) || !(iftrue || iffalse)) {
---
> 	if (ast_strlen_zero(args1.expr) || !(args2.iftrue || args2.iffalse)) {
108,112c111,115
< 	expr = ast_strip(expr);
< 	if (iftrue)
< 		iftrue = ast_strip_quoted(iftrue, "\"", "\"");
< 	if (iffalse)
< 		iffalse = ast_strip_quoted(iffalse, "\"", "\"");
---
> 	args1.expr = ast_strip(args1.expr);
> 	if (args2.iftrue)
> 		args2.iftrue = ast_strip(args2.iftrue);
> 	if (args2.iffalse)
> 		args2.iffalse = ast_strip(args2.iffalse);
114c117
< 	ast_copy_string(buf, pbx_checkcondition(expr) ? (S_OR(iftrue, "")) : (S_OR(iffalse, "")), len);
---
> 	ast_copy_string(buf, pbx_checkcondition(args1.expr) ? (S_OR(args2.iftrue, "")) : (S_OR(args2.iffalse, "")), len);
Only in asterisk-1.4.11/funcs: func_logic.o
Only in asterisk-1.4.11/funcs: func_logic.so
Only in asterisk-1.4.11/funcs: func_math.o
Only in asterisk-1.4.11/funcs: func_math.so
Only in asterisk-1.4.11/funcs: func_md5.o
Only in asterisk-1.4.11/funcs: func_md5.so
Only in asterisk-1.4.11/funcs: func_moh.o
Only in asterisk-1.4.11/funcs: func_moh.so
Only in asterisk-1.4.11/funcs: func_rand.o
Only in asterisk-1.4.11/funcs: func_rand.so
Only in asterisk-1.4.11/funcs: func_realtime.o
Only in asterisk-1.4.11/funcs: func_realtime.so
Only in asterisk-1.4.11/funcs: func_sha1.o
Only in asterisk-1.4.11/funcs: func_sha1.so
Only in asterisk-1.4.11/funcs: func_strings.o
Only in asterisk-1.4.11/funcs: func_strings.so
diff -r asterisk-1.4.11/funcs/func_timeout.c asterisk-1.4.13/funcs/func_timeout.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 61681 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80547 $")
107a108,109
> 	if (x < 0)
> 		x = 0;
Only in asterisk-1.4.11/funcs: func_timeout.o
Only in asterisk-1.4.11/funcs: func_timeout.so
Only in asterisk-1.4.11/funcs: func_uri.o
Only in asterisk-1.4.11/funcs: func_uri.so
diff -r asterisk-1.4.11/include/asterisk/agi.h asterisk-1.4.13/include/asterisk/agi.h
33a34
> 	unsigned int fast:1; /* flag for fast agi or not */
Only in asterisk-1.4.13/include/asterisk: astobj2.h
diff -r asterisk-1.4.11/include/asterisk/autoconfig.h asterisk-1.4.13/include/asterisk/autoconfig.h
477a478,480
> /* Define to indicate the ${USB_DESCRIP} library */
> /* #undef HAVE_USB */
> 
diff -r asterisk-1.4.11/include/asterisk/autoconfig.h.in asterisk-1.4.13/include/asterisk/autoconfig.h.in
476a477,479
> /* Define to indicate the ${USB_DESCRIP} library */
> #undef HAVE_USB
> 
Only in asterisk-1.4.11/include/asterisk: build.h
diff -r asterisk-1.4.11/include/asterisk/buildopts.h asterisk-1.4.13/include/asterisk/buildopts.h
5a6,19
> #define DEBUG_CHANNEL_LOCKS 1
> #define DEBUG_SCHEDULER 1
> #define DEBUG_THREADS 1
> #define DEBUG_THREADLOCALS 1
> #define DETECT_DEADLOCKS 1
> #define DO_CRASH 1
> #define DONT_OPTIMIZE 1
> #define DUMP_SCHEDULER 1
> #define LOW_MEMORY 1
> #define MALLOC_DEBUG 1
> #define MTX_PROFILE 1
> #define RADIO_RELAX 1
> #define TRACE_FRAMES 1
> #define STATIC_BUILD 1
diff -r asterisk-1.4.11/include/asterisk/channel.h asterisk-1.4.13/include/asterisk/channel.h
266a267,272
> 
> 	/*! \brief Retrieve base channel (agent and local) */
> 	struct ast_channel* (* get_base_channel)(struct ast_channel *chan);
> 	
> 	/*! \brief Set base channel (agent and local) */
> 	int (* set_base_channel)(struct ast_channel *chan, struct ast_channel *base);
370c376
< 	int (*timingfunc)(void *data);
---
> 	int (*timingfunc)(const void *data);
480a487,489
> 	/*! This flag indicates that on a masquerade, an active stream should not
> 	 *  be carried over */
> 	AST_FLAG_MASQ_NOSTREAM = (1 << 15),
1135c1144
< int ast_settimeout(struct ast_channel *c, int samples, int (*func)(void *data), void *data);
---
> int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data);
diff -r asterisk-1.4.11/include/asterisk/features.h asterisk-1.4.13/include/asterisk/features.h
41c41
< 	int (*operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense);
---
> 	int (*operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data);
diff -r asterisk-1.4.11/include/asterisk/file.h asterisk-1.4.13/include/asterisk/file.h
135a136
> 	const char *orig_chan_name;
diff -r asterisk-1.4.11/include/asterisk/frame.h asterisk-1.4.13/include/asterisk/frame.h
388,391c388
< static void force_inline ast_frfree(struct ast_frame *fr)
< {
< 	ast_frame_free(fr, 1);
< }
---
> #define ast_frfree(fr) ast_frame_free(fr, 1)
diff -r asterisk-1.4.11/include/asterisk/jabber.h asterisk-1.4.13/include/asterisk/jabber.h
25a26,38
> /* 
>  * As per RFC 3920 - section 3.1, the maximum length for a full Jabber ID 
>  * is 3071 bytes.
>  * The ABNF syntax for jid :
>  * jid = [node "@" ] domain [ "/" resource ]
>  * Each allowable portion of a JID (node identifier, domain identifier,
>  * and resource identifier) MUST NOT be more than 1023 bytes in length,
>  * resulting in a maximum total size (including the '@' and '/' separators) 
>  * of 3071 bytes.
>  */
> #define AJI_MAX_JIDLEN 3071
> #define AJI_MAX_RESJIDLEN 1023
> 
59c72
< 	char resource[80];
---
> 	char resource[AJI_MAX_RESJIDLEN];
75c88
< 	ASTOBJ_COMPONENTS(struct aji_buddy);
---
> 	ASTOBJ_COMPONENTS_FULL(struct aji_buddy, AJI_MAX_JIDLEN, 1);
91,93c104,105
< 	char user[160];
< 	char serverhost[160];
< 	char context[100];
---
> 	char user[AJI_MAX_JIDLEN];
> 	char serverhost[AJI_MAX_RESJIDLEN];
diff -r asterisk-1.4.11/include/asterisk/localtime.h asterisk-1.4.13/include/asterisk/localtime.h
27,28d26
< int ast_tzsetwall(void);
< void ast_tzset(const char *name);
31,32d28
< char *ast_ctime(const time_t * const timep);
< char *ast_ctime_r(const time_t * const timep, char *buf);
diff -r asterisk-1.4.11/include/asterisk/lock.h asterisk-1.4.13/include/asterisk/lock.h
128a129,134
> enum ast_lock_type {
> 	AST_MUTEX,
> 	AST_RDLOCK,
> 	AST_WRLOCK,
> };
> 
137,138c143,144
< void ast_store_lock_info(const char *filename, int line_num, 
< 	const char *func, const char *lock_name, void *lock_addr);
---
> void ast_store_lock_info(enum ast_lock_type type, const char *filename,
> 	int line_num, const char *func, const char *lock_name, void *lock_addr);
145a152,156
>  * \brief Mark the last lock as failed (trylock)
>  */
> void ast_mark_lock_failed(void);
> 
> /*!
161a173
> 	int i;
177,180c189,194
< 	t->file[0] = filename;
< 	t->lineno[0] = lineno;
< 	t->func[0] = func;
< 	t->thread[0]  = 0;
---
> 	for (i = 0; i < AST_MAX_REENTRANCY; i++) {
> 		t->file[i] = NULL;
> 		t->lineno[i] = 0;
> 		t->func[i] = NULL;
> 		t->thread[i]  = 0;
> 	}
252c266
< 		ast_store_lock_info(filename, lineno, func, mutex_name, &t->mutex);
---
> 		ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, &t->mutex);
336c350
< 		ast_store_lock_info(filename, lineno, func, mutex_name, &t->mutex);
---
> 		ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, &t->mutex);
472c486
< 			ast_store_lock_info(filename, lineno, func, mutex_name, &t->mutex);
---
> 			ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, &t->mutex);
533c547
< 			ast_store_lock_info(filename, lineno, func, mutex_name, &t->mutex);
---
> 			ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, &t->mutex);
704a719,797
> #ifdef DEBUG_THREADS
> #define ast_rwlock_unlock(a) \
> 	_ast_rwlock_unlock(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
> 
> static inline int _ast_rwlock_unlock(ast_rwlock_t *lock, const char *name,
> 	const char *file, int line, const char *func)
> {
> 	int res;
> 	res = pthread_rwlock_unlock(lock);
> 	ast_remove_lock_info(lock);
> 	return res;
> }
> 
> #define ast_rwlock_rdlock(a) \
> 	_ast_rwlock_rdlock(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
> 
> static inline int _ast_rwlock_rdlock(ast_rwlock_t *lock, const char *name,
> 	const char *file, int line, const char *func)
> {
> 	int res;
> 	ast_store_lock_info(AST_RDLOCK, file, line, func, name, lock);
> 	res = pthread_rwlock_rdlock(lock);
> 	if (!res)
> 		ast_mark_lock_acquired();
> 	else
> 		ast_remove_lock_info(lock);
> 	return res;
> }
> 
> #define ast_rwlock_wrlock(a) \
> 	_ast_rwlock_wrlock(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
> 
> static inline int _ast_rwlock_wrlock(ast_rwlock_t *lock, const char *name,
> 	const char *file, int line, const char *func)
> {
> 	int res;
> 	ast_store_lock_info(AST_WRLOCK, file, line, func, name, lock);
> 	res = pthread_rwlock_wrlock(lock);
> 	if (!res)
> 		ast_mark_lock_acquired();
> 	else
> 		ast_remove_lock_info(lock);
> 	return res;
> }
> 
> #define ast_rwlock_tryrdlock(a) \
> 	_ast_rwlock_tryrdlock(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
> 
> static inline int _ast_rwlock_tryrdlock(ast_rwlock_t *lock, const char *name,
> 	const char *file, int line, const char *func)
> {
> 	int res;
> 	ast_store_lock_info(AST_RDLOCK, file, line, func, name, lock);
> 	res = pthread_rwlock_tryrdlock(lock);
> 	if (!res)
> 		ast_mark_lock_acquired();
> 	else
> 		ast_remove_lock_info(lock);
> 	return res;
> }
> 
> #define ast_rwlock_trywrlock(a) \
> 	_ast_rwlock_trywrlock(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
> 
> static inline int _ast_rwlock_trywrlock(ast_rwlock_t *lock, const char *name,
> 	const char *file, int line, const char *func)
> {
> 	int res;
> 	ast_store_lock_info(AST_WRLOCK, file, line, func, name, lock);
> 	res = pthread_rwlock_trywrlock(lock);
> 	if (!res)
> 		ast_mark_lock_acquired();
> 	else
> 		ast_remove_lock_info(lock);
> 	return res;
> }
> 
> #else
> 
728a822
> #endif /* DEBUG_THREADS */
788a883,893
> #ifdef sun
> AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
> {
> 	__asm __volatile (
> 	"       lock;  xaddl   %0, %1 ;        "
> 	: "+r" (v),                     /* 0 (result) */   
> 	  "=m" (*p)                     /* 1 */
> 	: "m" (*p));                    /* 2 */
> 	return (v);
> })
> #else /* ifndef sun */
797a903
> #endif
diff -r asterisk-1.4.11/include/asterisk/module.h asterisk-1.4.13/include/asterisk/module.h
227d226
< 		unload_func,				\
228a228
> 		unload_func,				\
diff -r asterisk-1.4.11/include/asterisk/sched.h asterisk-1.4.13/include/asterisk/sched.h
58c58
< typedef int (*ast_sched_cb)(void *data);
---
> typedef int (*ast_sched_cb)(const void *data);
72c72
< int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, void *data);
---
> int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data);
87c87
< int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable);
---
> int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable);
diff -r asterisk-1.4.11/include/asterisk/strings.h asterisk-1.4.13/include/asterisk/strings.h
25a26
> #include <stdlib.h>
265a267,284
> /*!
>  * \brief Compute a hash value on a string
>  *
>  * This famous hash algorithm was written by Dan Bernstein and is
>  * commonly used.
>  *
>  * http://www.cse.yorku.ca/~oz/hash.html
>  */
> static force_inline int ast_str_hash(const char *str)
> {
> 	int hash = 5381;
> 
> 	while (*str)
> 		hash = hash * 33 ^ *str++;
> 
> 	return abs(hash);
> }
> 
Only in asterisk-1.4.11/include/asterisk: version.h
diff -r asterisk-1.4.11/include/asterisk.h asterisk-1.4.13/include/asterisk.h
76a77
> int astobj2_init(void);				/*! Provided by astobj2.c */
diff -r asterisk-1.4.11/.lastclean asterisk-1.4.13/.lastclean
1c1
< 28
---
> 29
diff -r asterisk-1.4.11/LICENSE asterisk-1.4.13/LICENSE
35c35
< OpenH323.
---
> OpenH323 and distribute the resulting binary files.
Only in asterisk-1.4.11/main: abstract_jb.o
Only in asterisk-1.4.11/main: acl.o
Only in asterisk-1.4.11/main: aescrypt.o
Only in asterisk-1.4.11/main: aeskey.o
Only in asterisk-1.4.11/main: aestab.o
Only in asterisk-1.4.11/main: alaw.o
diff -r asterisk-1.4.11/main/app.c asterisk-1.4.13/main/app.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 76891 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83773 $")
785c785
< 		res = -1;
---
> 		*group = '\0';
817,818c817,820
< 	
< 	if ((gi = calloc(1, len))) {
---
> 
> 	if (ast_strlen_zero(group)) {
> 		/* Enable unsetting the group */
> 	} else if ((gi = calloc(1, len))) {
Only in asterisk-1.4.11/main: app.o
Only in asterisk-1.4.11/main: asterisk
diff -r asterisk-1.4.11/main/asterisk.c asterisk-1.4.13/main/asterisk.c
62c62
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 72383 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83348 $")
702d701
< 	int res = -1;
703a703,708
> 
> 	if (!(ae = ast_calloc(1, sizeof(*ae))))
> 		return -1;
> 
> 	ae->func = func;
> 
704a710
> 
706,710c712
< 	if ((ae = ast_calloc(1, sizeof(*ae)))) {
< 		AST_LIST_INSERT_HEAD(&atexits, ae, list);
< 		ae->func = func;
< 		res = 0;
< 	}
---
> 	AST_LIST_INSERT_HEAD(&atexits, ae, list);
712c714,715
< 	return res;
---
> 
> 	return 0;
717c720,721
< 	struct ast_atexit *ae;
---
> 	struct ast_atexit *ae = NULL;
> 
726a731,733
> 
> 	if (ae)
> 		free(ae);
2329c2336
< 	printf("   -m              Mute the console from debugging and verbose output\n");
---
> 	printf("   -m              Mute debugging and console output on the console\n");
2334,2336c2341,2345
< 	printf("   -R              Connect to Asterisk, and attempt to reconnect if disconnected\n");
< 	printf("   -t              Record soundfiles in /var/tmp and move them where they belong after they are done.\n");
< 	printf("   -T              Display the time in [Mmm dd hh:mm:ss] format for each line of output to the CLI.\n");
---
> 	printf("   -R              Same as -r, except attempt to reconnect if disconnected\n");
> 	printf("   -t              Record soundfiles in /var/tmp and move them where they\n");
> 	printf("                   belong after they are done\n");
> 	printf("   -T              Display the time in [Mmm dd hh:mm:ss] format for each line\n");
> 	printf("                   of output to the CLI\n");
2807c2816
< 		daemon(0, 0);
---
> 		daemon(1, 0);
2851a2861,2862
> 	astobj2_init();
> 
Only in asterisk-1.4.11/main: asterisk.o
diff -r asterisk-1.4.11/main/ast_expr2f.c asterisk-1.4.13/main/ast_expr2f.c
1348c1348
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 73985 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
1412c1412
< static char *expr2_token_subst(char *mess);
---
> static char *expr2_token_subst(const char *mess);
3232c3232
< static char *expr2_token_subst(char *mess)
---
> static char *expr2_token_subst(const char *mess)
3236c3236
< 	char *p;
---
> 	const char *p;
3281c3281
< 	char *s2 = expr2_token_subst((char *)s);
---
> 	char *s2 = expr2_token_subst(s);
diff -r asterisk-1.4.11/main/ast_expr2.fl asterisk-1.4.13/main/ast_expr2.fl
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 73143 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
92c92
< static char *expr2_token_subst(char *mess);
---
> static char *expr2_token_subst(const char *mess);
326c326
< static char *expr2_token_subst(char *mess)
---
> static char *expr2_token_subst(const char *mess)
330c330
< 	char *p;
---
> 	const char *p;
375c375
< 	char *s2 = expr2_token_subst((char *)s);
---
> 	char *s2 = expr2_token_subst(s);
Only in asterisk-1.4.11/main: ast_expr2f.o
Only in asterisk-1.4.11/main: ast_expr2.o
Only in asterisk-1.4.11/main: astmm.o
Only in asterisk-1.4.13/main: astobj2.c
Only in asterisk-1.4.11/main: autoservice.o
Only in asterisk-1.4.11/main: buildinfo.o
Only in asterisk-1.4.11/main: callerid.o
diff -r asterisk-1.4.11/main/cdr.c asterisk-1.4.13/main/cdr.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79049 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
314,320c314,322
< 		headp = &cdr->varshead;
< 		AST_LIST_TRAVERSE_SAFE_BEGIN(headp, newvariable, entries) {
< 			if (!strcasecmp(ast_var_name(newvariable), name)) {
< 				/* there is already such a variable, delete it */
< 				AST_LIST_REMOVE_CURRENT(headp, entries);
< 				ast_var_delete(newvariable);
< 				break;
---
> 		if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
> 			headp = &cdr->varshead;
> 			AST_LIST_TRAVERSE_SAFE_BEGIN(headp, newvariable, entries) {
> 				if (!strcasecmp(ast_var_name(newvariable), name)) {
> 					/* there is already such a variable, delete it */
> 					AST_LIST_REMOVE_CURRENT(headp, entries);
> 					ast_var_delete(newvariable);
> 					break;
> 				}
322,323c324
< 		}
< 		AST_LIST_TRAVERSE_SAFE_END;
---
> 			AST_LIST_TRAVERSE_SAFE_END;
325,327c326,329
< 		if (value) {
< 			newvariable = ast_var_assign(name, value);
< 			AST_LIST_INSERT_HEAD(headp, newvariable, entries);
---
> 			if (value) {
> 				newvariable = ast_var_assign(name, value);
> 				AST_LIST_INSERT_HEAD(headp, newvariable, entries);
> 			}
696,700c698,704
< 		check_post(cdr);
< 		if (cdr->disposition < AST_CDR_ANSWERED)
< 			cdr->disposition = AST_CDR_ANSWERED;
< 		if (ast_tvzero(cdr->answer))
< 			cdr->answer = ast_tvnow();
---
> 		if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
> 			check_post(cdr);
> 			if (cdr->disposition < AST_CDR_ANSWERED)
> 				cdr->disposition = AST_CDR_ANSWERED;
> 			if (ast_tvzero(cdr->answer))
> 				cdr->answer = ast_tvnow();
> 		}
742a747,749
> /* everywhere ast_cdr_disposition is called, it will call ast_cdr_failed() 
>    if ast_cdr_disposition returns a non-zero value */
> 
748c755,756
< 		switch(cause) {
---
> 		switch(cause) {  /* handle all the non failure, busy cases, return 0 not to set disposition,
> 							return -1 to set disposition to FAILED */
752,755d759
< 		case AST_CAUSE_FAILURE:
< 		case AST_CAUSE_NORMAL_CIRCUIT_CONGESTION:
< 			ast_cdr_failed(cdr);
< 			break;
758,760d761
< 		case AST_CAUSE_NOTDEFINED:
< 			res = -1;
< 			break;
763d763
< 			ast_log(LOG_WARNING, "Cause (%d) not handled\n", cause);
830,831d829
< 			if (!ast_strlen_zero(cdr->channel)) 
< 				ast_log(LOG_WARNING, "CDR already initialized on '%s'\n", chan); 
851,859c849,859
< 		check_post(cdr);
< 		if (ast_tvzero(cdr->end))
< 			cdr->end = ast_tvnow();
< 		if (ast_tvzero(cdr->start)) {
< 			ast_log(LOG_WARNING, "CDR on channel '%s' has not started\n", S_OR(cdr->channel, "<unknown>"));
< 			cdr->disposition = AST_CDR_FAILED;
< 		} else
< 			cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec;
< 		cdr->billsec = ast_tvzero(cdr->answer) ? 0 : cdr->end.tv_sec - cdr->answer.tv_sec;
---
> 		if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) {
> 			check_post(cdr);
> 			if (ast_tvzero(cdr->end))
> 				cdr->end = ast_tvnow();
> 			if (ast_tvzero(cdr->start)) {
> 				ast_log(LOG_WARNING, "CDR on channel '%s' has not started\n", S_OR(cdr->channel, "<unknown>"));
> 				cdr->disposition = AST_CDR_FAILED;
> 			} else
> 				cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec;
> 			cdr->billsec = ast_tvzero(cdr->answer) ? 0 : cdr->end.tv_sec - cdr->answer.tv_sec;
> 		}
986a987,988
> 		if (cdr->disposition < AST_CDR_ANSWERED && (ast_strlen_zero(cdr->channel) || ast_strlen_zero(cdr->dstchannel)))
> 			continue; /* people don't want to see unanswered single-channel events */
1131c1133
< static int submit_scheduled_batch(void *data)
---
> static int submit_scheduled_batch(const void *data)
Only in asterisk-1.4.11/main: cdr.o
diff -r asterisk-1.4.11/main/channel.c asterisk-1.4.13/main/channel.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79099 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 85158 $")
1451a1452,1453
> 		if (option_debug)
> 			ast_log(LOG_DEBUG, "Spy %s removed from channel %s\n", spy->type, chan->name);
1455,1458d1456
< 	/* Print it out while we still have a lock so the structure can't go away (if signalled above) */
< 	if (option_debug)
< 		ast_log(LOG_DEBUG, "Spy %s removed from channel %s\n", spy->type, chan->name);
< 
1838c1836
< static int generator_force(void *data)
---
> static int generator_force(const void *data)
1844c1842
< 	struct ast_channel *chan = data;
---
> 	struct ast_channel *chan = (struct ast_channel *)data;
2062c2060
< int ast_settimeout(struct ast_channel *c, int samples, int (*func)(void *data), void *data)
---
> int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data)
2083,2084d2080
< 	int begin_digit = 0;
< 
2087a2084,2087
> 
> 	/* Only look for the end of DTMF, don't bother with the beginning and don't emulate things */
> 	ast_set_flag(c, AST_FLAG_END_DTMF_ONLY);
> 
2098a2099
> 			ast_clear_flag(c, AST_FLAG_END_DTMF_ONLY);
2101a2103
> 			ast_clear_flag(c, AST_FLAG_END_DTMF_ONLY);
2111d2112
< 				begin_digit = f->subclass;
2114,2115d2114
< 				if (begin_digit != f->subclass)
< 					break;
2117a2117
> 				ast_clear_flag(c, AST_FLAG_END_DTMF_ONLY);
2122a2123
> 					ast_clear_flag(c, AST_FLAG_END_DTMF_ONLY);
2143a2145,2147
> 
> 	ast_clear_flag(c, AST_FLAG_END_DTMF_ONLY);
> 
2179a2184
> 	struct ast_channel *base = NULL;
2202a2208,2224
> 	/* Check if there's an underlying channel */
> 	if (chan->tech->get_base_channel && (base = chan->tech->get_base_channel(chan)) != chan) {
> 		int count = 0;
> 		while (!base || ast_mutex_trylock(&base->lock)) {
> 			if (count++ > 10) {
> 				f = &ast_null_frame;
> 				goto done;
> 			}
> 			ast_mutex_unlock(&chan->lock);
> 			usleep(1);
> 			ast_mutex_lock(&chan->lock);
> 			base = chan->tech->get_base_channel(chan);
> 		}
> 		ast_mutex_unlock(&chan->lock);
> 		chan = base;
> 	}
> 
2252c2274
< 				int (*func)(void *) = chan->timingfunc;
---
> 				int (*func)(const void *) = chan->timingfunc;
2940,2942c2962,2975
< 		if (f)
< 			res = chan->tech->write(chan, f);
< 		else
---
> 		if (f) {
> 			struct ast_channel *base = NULL;
> 			if (!chan->tech->get_base_channel || chan == chan->tech->get_base_channel(chan))
> 				res = chan->tech->write(chan, f);
> 			else {
> 				while (chan->tech->get_base_channel && (((base = chan->tech->get_base_channel(chan)) && ast_mutex_trylock(&base->lock)) || base == NULL)) {
> 					ast_mutex_unlock(&chan->lock);
> 					usleep(1);
> 					ast_mutex_lock(&chan->lock);
> 				}
> 				res = base->tech->write(base, f);
> 				ast_mutex_unlock(&base->lock);
> 			}
> 		} else
3409c3442,3446
< 	struct ast_channel *final_orig = original, *final_clone = clone;
---
> 	struct ast_channel *final_orig, *final_clone, *base;
> 
> retrymasq:
> 	final_orig = original;
> 	final_clone = clone;
3424a3462,3465
> 	
> 	if (final_clone->tech->get_base_channel && (base = final_clone->tech->get_base_channel(final_clone))) {
> 		final_clone = base;
> 	}
3427,3428c3468,3476
< 		ast_channel_lock(final_orig);
< 		while (ast_channel_trylock(final_clone)) {
---
> 		/* Lots and lots of deadlock avoidance.  The main one we're competing with
> 		 * is ast_write(), which locks channels recursively, when working with a
> 		 * proxy channel. */
> 		if (ast_channel_trylock(final_orig)) {
> 			ast_channel_unlock(clone);
> 			ast_channel_unlock(original);
> 			goto retrymasq;
> 		}
> 		if (ast_channel_trylock(final_clone)) {
3430,3431c3478,3480
< 			usleep(1);
< 			ast_channel_lock(final_orig);
---
> 			ast_channel_unlock(clone);
> 			ast_channel_unlock(original);
> 			goto retrymasq;
4253c4302,4303
< 		    !ast_test_flag(&(config->features_caller),AST_FEATURE_REDIRECT) ) {
---
> 		    !ast_test_flag(&(config->features_caller),AST_FEATURE_REDIRECT) &&
> 		    !c0->masq && !c0->masqr && !c1->masq && !c1->masqr) {
Only in asterisk-1.4.11/main: channel.o
Only in asterisk-1.4.11/main: chanvars.o
Only in asterisk-1.4.11/main: cli.o
Only in asterisk-1.4.11/main: config.o
Only in asterisk-1.4.11/main: cryptostub.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_close.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_conv.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_debug.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_delete.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_get.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_open.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_overflow.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_page.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_put.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_search.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_seq.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_split.o
Only in asterisk-1.4.11/main/db1-ast/btree: bt_utils.o
Only in asterisk-1.4.11/main/db1-ast/db: db.o
Only in asterisk-1.4.11/main/db1-ast/hash: hash_bigkey.o
Only in asterisk-1.4.11/main/db1-ast/hash: hash_buf.o
diff -r asterisk-1.4.11/main/db1-ast/hash/hash.c asterisk-1.4.13/main/db1-ast/hash/hash.c
71c71
< static HTAB *init_hash __P((HTAB *, const char *, HASHINFO *));
---
> static HTAB *init_hash __P((HTAB *, const char *, const HASHINFO *));
136c136
< 		if (!(hashp = init_hash(hashp, file, (HASHINFO *)info)))
---
> 		if (!(hashp = init_hash(hashp, file, info)))
283c283
< 	HASHINFO *info;
---
> 	const HASHINFO *info;
Only in asterisk-1.4.11/main/db1-ast/hash: hash_func.o
Only in asterisk-1.4.11/main/db1-ast/hash: hash_log2.o
Only in asterisk-1.4.11/main/db1-ast/hash: hash.o
Only in asterisk-1.4.11/main/db1-ast/hash: hash_page.o
Only in asterisk-1.4.11/main/db1-ast/hash: ndbm.o
Only in asterisk-1.4.11/main/db1-ast: libdb1.a
Only in asterisk-1.4.11/main/db1-ast/mpool: mpool.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_close.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_delete.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_get.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_open.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_put.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_search.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_seq.o
Only in asterisk-1.4.11/main/db1-ast/recno: rec_utils.o
diff -r asterisk-1.4.11/main/db.c asterisk-1.4.13/main/db.c
32c32
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 71289 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84851 $")
66c66
< 		ast_log(LOG_WARNING, "Unable to open Asterisk database\n");
---
> 		ast_log(LOG_WARNING, "Unable to open Asterisk database '%s': %s\n", ast_config_AST_DB, strerror(errno));
Only in asterisk-1.4.11/main: db.o
Only in asterisk-1.4.11/main: devicestate.o
Only in asterisk-1.4.11/main: dial.o
diff -r asterisk-1.4.11/main/dns.c asterisk-1.4.13/main/dns.c
34c34
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 75306 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81435 $")
270c270
< 		else if (ret == 0) {
---
> 		else if (res == 0) {
diff -r asterisk-1.4.11/main/dnsmgr.c asterisk-1.4.13/main/dnsmgr.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 69708 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
223c223
< static int refresh_list(void *data)
---
> static int refresh_list(const void *data)
225c225
< 	struct refresh_info *info = data;
---
> 	struct refresh_info *info = (struct refresh_info *)data;
Only in asterisk-1.4.11/main: dnsmgr.o
Only in asterisk-1.4.11/main: dns.o
diff -r asterisk-1.4.11/main/dsp.c asterisk-1.4.13/main/dsp.c
45c45
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 77845 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 80820 $")
220c220
< 	int hits[3];
---
> 	int lasthit;
374c374
< 	s->hits[0] = s->hits[1] = s->hits[2] = 0;
---
> 	s->lasthit = 0;
597a598
> #ifdef OLD_DSP_ROUTINES
605d605
< #ifdef OLD_DSP_ROUTINES
617,628d616
< #else				
< 				if (hit == s->hits[2]  &&  hit != s->hits[1]  &&  hit != s->hits[0]) {
< 					s->mhit = hit;
< 					s->digit_hits[(best_row << 2) + best_col]++;
< 					s->detected_digits++;
< 					if (s->current_digits < MAX_DTMF_DIGITS) {
< 						s->digits[s->current_digits++] = hit;
< 						s->digits[s->current_digits] = '\0';
< 					} else {
< 						s->lost_digits++;
< 					}
< 				}
631a620,643
> 
> #ifndef OLD_DSP_ROUTINES
> 		/* Look for two successive similar results */
> 		/* The logic in the next test is:
> 		   We need two successive identical clean detects, with
> 		   something different preceeding it. This can work with
> 		   back to back differing digits. More importantly, it
> 		   can work with nasty phones that give a very wobbly start
> 		   to a digit */
> 		if (hit == s->lasthit  &&  hit != s->mhit) {
> 			if (hit) {
> 				s->digit_hits[(best_row << 2) + best_col]++;
> 				s->detected_digits++;
> 				if (s->current_digits < MAX_DTMF_DIGITS) {
> 					s->digits[s->current_digits++] = hit;
> 					s->digits[s->current_digits] = '\0';
> 				} else {
> 					s->lost_digits++;
> 				}
> 			}
> 			s->mhit = hit;
> 		}
> #endif
> 
662,664c674
< 		s->hits[0] = s->hits[1];
< 		s->hits[1] = s->hits[2];
< 		s->hits[2] = hit;
---
> 		s->lasthit = hit;
683a694
> #ifdef OLD_DSP_ROUTINES
688a700,702
> #else
> 	return (s->mhit);	/* return the debounced hit */
> #endif
1712c1726
< 		dsp->td.dtmf.hits[2] = dsp->td.dtmf.hits[1] = dsp->td.dtmf.hits[0] =  dsp->td.dtmf.mhit = 0;
---
> 		dsp->td.dtmf.lasthit = dsp->td.dtmf.mhit = 0;
Only in asterisk-1.4.11/main: dsp.o
Only in asterisk-1.4.11/main/editline: common.h
Only in asterisk-1.4.11/main/editline: config.cache
Only in asterisk-1.4.11/main/editline: config.h
Only in asterisk-1.4.11/main/editline: config.log
Only in asterisk-1.4.11/main/editline: config.status
Only in asterisk-1.4.11/main/editline: editline.c
Only in asterisk-1.4.11/main/editline: editline.o_a
Only in asterisk-1.4.11/main/editline: emacs.h
Only in asterisk-1.4.11/main/editline: fcns.c
Only in asterisk-1.4.11/main/editline: fcns.h
Only in asterisk-1.4.11/main/editline: help.c
Only in asterisk-1.4.11/main/editline: help.h
Only in asterisk-1.4.11/main/editline: history.o_a
Only in asterisk-1.4.11/main/editline: libedit.a
Only in asterisk-1.4.11/main/editline: Makefile
Only in asterisk-1.4.11/main/editline/np: fgetln.o_a
Only in asterisk-1.4.11/main/editline/np: strlcat.o_a
Only in asterisk-1.4.11/main/editline/np: strlcpy.o_a
Only in asterisk-1.4.11/main/editline/np: unvis.o_a
Only in asterisk-1.4.11/main/editline/np: vis.o_a
Only in asterisk-1.4.11/main/editline: readline.o_a
Only in asterisk-1.4.11/main/editline: tokenizer.o_a
Only in asterisk-1.4.11/main/editline: vi.h
Only in asterisk-1.4.11/main: enum.o
diff -r asterisk-1.4.11/main/file.c asterisk-1.4.13/main/file.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 78955 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
617c617,625
< static int ast_readaudio_callback(void *data)
---
> enum fsread_res {
> 	FSREAD_FAILURE,
> 	FSREAD_SUCCESS_SCHED,
> 	FSREAD_SUCCESS_NOSCHED,
> };
> 
> static int ast_fsread_audio(const void *data);
> 
> static enum fsread_res ast_readaudio_callback(struct ast_filestream *s)
619d626
< 	struct ast_filestream *s = data;
622,623c629,635
< 	while(!whennext) {
< 		struct ast_frame *fr = s->fmt->read(s, &whennext);
---
> 	while (!whennext) {
> 		struct ast_frame *fr;
> 		
> 		if (s->orig_chan_name && strcasecmp(s->owner->name, s->orig_chan_name))
> 			goto return_failure;
> 		
> 		fr = s->fmt->read(s, &whennext);
627,631c639
< 			s->owner->streamid = -1;
< #ifdef HAVE_ZAPTEL
< 			ast_settimeout(s->owner, 0, NULL, NULL);
< #endif			
< 			return 0;
---
> 			goto return_failure;
637c645
< 			ast_settimeout(s->owner, whennext, ast_readaudio_callback, s);
---
> 			ast_settimeout(s->owner, whennext, ast_fsread_audio, s);
640c648
< 			s->owner->streamid = ast_sched_add(s->owner->sched, whennext/8, ast_readaudio_callback, s);
---
> 			s->owner->streamid = ast_sched_add(s->owner->sched, whennext/8, ast_fsread_audio, s);
642c650
< 		return 0;
---
> 		return FSREAD_SUCCESS_NOSCHED;
644c652,672
< 	return 1;
---
> 	return FSREAD_SUCCESS_SCHED;
> 
> return_failure:
> 	s->owner->streamid = -1;
> #ifdef HAVE_ZAPTEL
> 	ast_settimeout(s->owner, 0, NULL, NULL);
> #endif			
> 	return FSREAD_FAILURE;
> }
> 
> static int ast_fsread_audio(const void *data)
> {
> 	struct ast_filestream *fs = (struct ast_filestream *)data;
> 	enum fsread_res res;
> 
> 	res = ast_readaudio_callback(fs);
> 
> 	if (res == FSREAD_SUCCESS_SCHED)
> 		return 1;
> 	
> 	return 0;
647c675,677
< static int ast_readvideo_callback(void *data)
---
> static int ast_fsread_video(const void *data);
> 
> static enum fsread_res ast_readvideo_callback(struct ast_filestream *s)
649d678
< 	struct ast_filestream *s = data;
658c687
< 			return 0;
---
> 			return FSREAD_FAILURE;
660a690
> 
662c692,693
< 		s->owner->vstreamid = ast_sched_add(s->owner->sched, whennext/8, ast_readvideo_callback, s);
---
> 		s->owner->vstreamid = ast_sched_add(s->owner->sched, whennext / 8, 
> 			ast_fsread_video, s);
664c695
< 		return 0;
---
> 		return FSREAD_SUCCESS_NOSCHED;
666c697,711
< 	return 1;
---
> 
> 	return FSREAD_SUCCESS_SCHED;
> }
> 
> static int ast_fsread_video(const void *data)
> {
> 	struct ast_filestream *fs = (struct ast_filestream *)data;
> 	enum fsread_res res;
> 
> 	res = ast_readvideo_callback(fs);
> 
> 	if (res == FSREAD_SUCCESS_SCHED)
> 		return 1;
> 	
> 	return 0;
676a722,723
> 	enum fsread_res res;
> 
678c725
< 		ast_readaudio_callback(s);
---
> 		res = ast_readaudio_callback(s);
680,681c727,729
< 		ast_readvideo_callback(s);
< 	return 0;
---
> 		res = ast_readvideo_callback(s);
> 
> 	return (res == FSREAD_FAILURE) ? -1 : 0;
750a799,800
> 	if (f->orig_chan_name)
> 		free((void *) f->orig_chan_name);
800a851,853
> 		int res;
> 		if (ast_test_flag(chan, AST_FLAG_MASQ_NOSTREAM))
> 			fs->orig_chan_name = ast_strdup(chan->name);
805,807c858,860
< 		ast_playstream(fs);
< 		if (vfs)
< 			ast_playstream(vfs);
---
> 		res = ast_playstream(fs);
> 		if (!res && vfs)
> 			res = ast_playstream(vfs);
811c864
< 		return 0;
---
> 		return res;
999a1053,1055
> 	const char *orig_chan_name = NULL;
> 	int err = 0;
> 
1009c1065,1068
< 	
---
> 
> 	if (ast_test_flag(c, AST_FLAG_MASQ_NOSTREAM))
> 		orig_chan_name = ast_strdupa(c->name);
> 
1012c1071,1080
< 		int ms = ast_sched_wait(c->sched);
---
> 		int ms;
> 
> 		if (orig_chan_name && strcasecmp(orig_chan_name, c->name)) {
> 			ast_stopstream(c);
> 			err = 1;
> 			break;
> 		}
> 
> 		ms = ast_sched_wait(c->sched);
> 
1107c1175
< 	return (c->_softhangup ? -1 : 0);
---
> 	return (err || c->_softhangup) ? -1 : 0;
Only in asterisk-1.4.11/main: file.o
Only in asterisk-1.4.11/main: fixedjitterbuf.o
Only in asterisk-1.4.11/main: frame.o
Only in asterisk-1.4.11/main: fskmodem.o
Only in asterisk-1.4.11/main: http.o
Only in asterisk-1.4.11/main: image.o
Only in asterisk-1.4.11/main: indications.o
Only in asterisk-1.4.11/main: io.o
Only in asterisk-1.4.11/main: jitterbuf.o
Only in asterisk-1.4.11/main: loader.o
Only in asterisk-1.4.11/main: logger.o
diff -r asterisk-1.4.11/main/Makefile asterisk-1.4.13/main/Makefile
29c29
< 	strcompat.o threadstorage.o dial.o
---
> 	strcompat.o threadstorage.o dial.o astobj2.o
137a138,140
> ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
> 	$(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS)
> else
138a142
> endif
diff -r asterisk-1.4.11/main/manager.c asterisk-1.4.13/main/manager.c
37c37
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 76176 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84742 $")
686,688c686
< 	AST_LIST_UNLOCK(&sessions);
< 
< 	ast_atomic_fetchadd_int(&num_sessions, -1);
---
> 	num_sessions--;
689a688
> 	AST_LIST_UNLOCK(&sessions);
1137,1138c1136,1137
< "Description: A 'UpdateConfig' action will dump the contents of a configuration\n"
< "file by category and contents.\n"
---
> "Description: A 'UpdateConfig' action will modify, create, or delete\n"
> "configuration elements in Asterisk configuration files.\n"
1979,1985c1978,1984
< 	if (s->fd > -1) {
< 		if (!s->eventq)
< 			s->eventq = master_eventq;
< 		while(s->eventq->next) {
< 			eqe = s->eventq->next;
< 			if ((s->authenticated && (s->readperm & eqe->category) == eqe->category) &&
< 			    ((s->send_events & eqe->category) == eqe->category)) {
---
> 	if (!s->eventq)
> 		s->eventq = master_eventq;
> 	while(s->eventq->next) {
> 		eqe = s->eventq->next;
> 		if ((s->authenticated && (s->readperm & eqe->category) == eqe->category) &&
> 				   ((s->send_events & eqe->category) == eqe->category)) {
> 			if (s->fd > -1) {
1988,1990c1987,1990
< 			}
< 			unuse_eventqent(s->eventq);
< 			s->eventq = eqe;
---
> 			} else if (!s->outputstr && !(s->outputstr = ast_calloc(1, sizeof(*s->outputstr)))) 
> 				ret = -1;
> 			else 
> 				ast_dynamic_str_append(&s->outputstr, 0, "%s", eqe->eventdata);
1991a1992,1993
> 		unuse_eventqent(s->eventq);
> 		s->eventq = eqe;
2237a2240
> 				num_sessions--;
2256,2257d2258
< 		if (s)
< 			ast_atomic_fetchadd_int(&num_sessions, -1);
2280,2281d2280
< 		ast_atomic_fetchadd_int(&num_sessions, 1);
< 		
2298a2298
> 		num_sessions++;
2304d2303
< 		AST_LIST_UNLOCK(&sessions);
2305a2305
> 		AST_LIST_UNLOCK(&sessions);
2583d2582
< 		AST_LIST_UNLOCK(&sessions);
2585a2585
> 		AST_LIST_UNLOCK(&sessions);
Only in asterisk-1.4.11/main: manager.o
Only in asterisk-1.4.11/main: md5.o
Only in asterisk-1.4.11/main: netsock.o
diff -r asterisk-1.4.11/main/pbx.c asterisk-1.4.13/main/pbx.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 75403 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82514 $")
3483c3483
< 			(char *)ast_get_extension_app_data(e));
---
> 			(!ast_strlen_zero(ast_get_extension_app_data(e)) ? (char *)ast_get_extension_app_data(e) : ""));
5036a5037
> 					char failed_reason[4] = "";
5040a5042,5043
> 					snprintf(failed_reason, sizeof(failed_reason), "%d", *reason);
> 					pbx_builtin_setvar_helper(chan, "REASON", failed_reason);
5860c5863,5864
< 		if (strchr(argv[argc], 'g'))
---
> 		if (strchr(argv[argc], 'g')) {
> 			ast_log(LOG_WARNING, "The use of the 'g' flag is deprecated.  Please use Set(GLOBAL(foo)=bar) instead\n");
5861a5866
> 		}
5863a5869,5871
> 	if (argc > 1)
> 		ast_log(LOG_WARNING, "Setting multiple variables at once within Set is deprecated.  Please separate each name/value pair into its own line.\n");
> 
Only in asterisk-1.4.11/main: pbx.o
Only in asterisk-1.4.11/main: plc.o
Only in asterisk-1.4.11/main: privacy.o
diff -r asterisk-1.4.11/main/rtp.c asterisk-1.4.13/main/rtp.c
31c31
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79553 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 85057 $")
60c60
< #define MAX_TIMESTAMP_SKEW	120
---
> #define MAX_TIMESTAMP_SKEW	640
178c178
< static int ast_rtcp_write(void *data);
---
> static int ast_rtcp_write(const void *data);
180,181c180,181
< static int ast_rtcp_write_sr(void *data);
< static int ast_rtcp_write_rr(void *data);
---
> static int ast_rtcp_write_sr(const void *data);
> static int ast_rtcp_write_rr(const void *data);
739a740,743
> 	} else {
> 		/* Not a supported event */
> 		ast_log(LOG_DEBUG, "Ignoring RTP 2833 Event: %08x. Not a DTMF Digit.\n", event);
> 		return &ast_null_frame;
2096c2100
< 		ast_verbose("  Jitter:		 %u\n", rtp->rtcp->reported_jitter);
---
> 		ast_verbose("  Jitter:		 %u\n", rtp->rtcp->reported_jitter / (unsigned int)65536.0);
2310c2314
< static int ast_rtcp_write_sr(void *data)
---
> static int ast_rtcp_write_sr(const void *data)
2312c2316
< 	struct ast_rtp *rtp = data;
---
> 	struct ast_rtp *rtp = (struct ast_rtp *)data;
2424c2428
< static int ast_rtcp_write_rr(void *data)
---
> static int ast_rtcp_write_rr(const void *data)
2426c2430
< 	struct ast_rtp *rtp = data;
---
> 	struct ast_rtp *rtp = (struct ast_rtp *)data;
2523c2527
< static int ast_rtcp_write(void *data)
---
> static int ast_rtcp_write(const void *data)
2525c2529
< 	struct ast_rtp *rtp = data;
---
> 	struct ast_rtp *rtp = (struct ast_rtp *)data;
2942a2947,2956
> 				/* Update local address information */
> 				ast_rtp_get_peer(p0, &t0);
> 				memcpy(&ac0, &t0, sizeof(ac0));
> 				ast_rtp_get_peer(p1, &t1);
> 				memcpy(&ac1, &t1, sizeof(ac1));
> 				/* Update codec information */
> 				if (pr0->get_codec && c0->tech_pvt)
> 					oldcodec0 = codec0 = pr0->get_codec(c0);
> 				if (pr1->get_codec && c1->tech_pvt)
> 					oldcodec1 = codec1 = pr1->get_codec(c1);
Only in asterisk-1.4.11/main: rtp.o
diff -r asterisk-1.4.11/main/say.c asterisk-1.4.13/main/say.c
34c34
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 77795 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84078 $")
261,263c261,263
<                                         res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
<                                 else
<                                         res = ast_waitstream(chan, ints);
---
> 					res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
> 				else
> 					res = ast_waitstream(chan, ints);
1508a1509,1516
> 		} else if (num < 200) {
> 			/* hundred, not one-hundred */
> 			ast_copy_string(fn, "digits/hundred", sizeof(fn));
> 			num -= ((num / 100) * 100);
> 		} else if (num < 1000) {
> 			snprintf(fn, sizeof(fn), "digits/%d", num / 100);
> 			playh++;
> 			num -= ((num / 100) * 100);
1510,1513c1518,1527
< 			if (num < 1000) {
< 				snprintf(fn, sizeof(fn), "digits/%d", (num/100));
< 				playh++;
< 				num -= ((num / 100) * 100);
---
> 			if (num < 1100) {
> 				/* thousand, not one-thousand */
> 				num = num % 1000;
> 				ast_copy_string(fn, "digits/thousand", sizeof(fn));
> 			} else if (num < 10000)	{ /* 1,100 to 9,9999 */
> 				res = ast_say_number_full_nl(chan, num / 100, ints, language, audiofd, ctrlfd);
> 				if (res)
> 					return res;
> 				num = num % 100;
> 				ast_copy_string(fn, "digits/hundred", sizeof(fn));
1516c1530
< 					res = ast_say_number_full_en(chan, num / 1000, ints, language, audiofd, ctrlfd);
---
> 					res = ast_say_number_full_nl(chan, num / 1000, ints, language, audiofd, ctrlfd);
1523c1537
< 						res = ast_say_number_full_en(chan, num / 1000000, ints, language, audiofd, ctrlfd);
---
> 						res = ast_say_number_full_nl(chan, num / 1000000, ints, language, audiofd, ctrlfd);
Only in asterisk-1.4.11/main: say.o
diff -r asterisk-1.4.11/main/sched.c asterisk-1.4.13/main/sched.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 56457 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
59c59
< 	void *data;                   /*!< Data */
---
> 	const void *data;             /*!< Data */
214c214
< int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, void *data, int variable)
---
> int ast_sched_add_variable(struct sched_context *con, int when, ast_sched_cb callback, const void *data, int variable)
247c247
< int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, void *data)
---
> int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, const void *data)
Only in asterisk-1.4.11/main: sched.o
Only in asterisk-1.4.11/main: sha1.o
Only in asterisk-1.4.11/main: slinfactory.o
Only in asterisk-1.4.11/main: srv.o
diff -r asterisk-1.4.11/main/stdtime/localtime.c asterisk-1.4.13/main/stdtime/localtime.c
29,31d28
<  * 
<  * \author Leap second handling Bradley White (bww@k.gp.cs.cmu.edu).
<  * \author POSIX-style TZ environment variable handling from Guy Harris (guy@auspex.com).
32a30
>  * The original source from this file may be obtained from ftp://elsie.nci.nih.gov/pub/
36,43c34,42
<  * Asterisk defines
<  *
<  * Don't mess with these unless you're really sure you know what you're doing.
<  */
< #ifndef _THREAD_SAFE
< #define _THREAD_SAFE
< #endif
< #define TZ_STRLEN_MAX	255
---
> ** This file is in the public domain, so clarified as of
> ** 1996-06-05 by Arthur David Olson.
> */
> 
> /*
> ** Leap second handling from Bradley White.
> ** POSIX-style TZ environment variable handling from Guy Harris.
> */
> 
53a53,54
> #include <float.h>
> 
57d57
< 
60c60
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 51256 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82676 $")
64a65,66
> #include "asterisk/linkedlists.h"
> #include "asterisk/utils.h"
68c70
< static const char elsieid[] = "@(#)localtime.c	7.57";
---
> static char	__attribute__((unused)) elsieid[] = "@(#)localtime.c	8.5";
72c74,85
< 
---
> #ifndef TZ_ABBR_MAX_LEN
> #define TZ_ABBR_MAX_LEN	16
> #endif /* !defined TZ_ABBR_MAX_LEN */
> 
> #ifndef TZ_ABBR_CHAR_SET
> #define TZ_ABBR_CHAR_SET \
> 	"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :+-._"
> #endif /* !defined TZ_ABBR_CHAR_SET */
> 
> #ifndef TZ_ABBR_ERR_CHAR
> #define TZ_ABBR_ERR_CHAR	'_'
> #endif /* !defined TZ_ABBR_ERR_CHAR */
85,88c98
< #ifdef SOLARIS
< #undef TM_ZONE
< #undef TM_GMTOFF 
< #endif
---
> static const char	gmt[] = "GMT";
90,91d99
< #ifdef TM_ZONE
< #ifndef WILDABBR
93,109c101,105
<  * Someone might make incorrect use of a time zone abbreviation:
<  *	1.	They might reference tzname[0] before calling ast_tzset (explicitly
<  *		or implicitly).
<  *	2.	They might reference tzname[1] before calling ast_tzset (explicitly
<  *		or implicitly).
<  *	3.	They might reference tzname[1] after setting to a time zone
<  *		in which Daylight Saving Time is never observed.
<  *	4.	They might reference tzname[0] after setting to a time zone
<  *		in which Standard Time is never observed.
<  *	5.	They might reference tm.TM_ZONE after calling offtime.
<  * What's best to do in the above cases is open to debate;
<  * for now, we just set things up so that in any of the five cases
<  * WILDABBR is used.  Another possibility:  initialize tzname[0] to the
<  * string "tzname[0] used before set", and similarly for the other cases.
<  * And another:  initialize tzname[0] to "ERA", with an explanation in the
<  * manual page of what this "time zone abbreviation" means (doing this so
<  * that tzname[0] has the "normal" length of three characters).
---
>  * The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
>  * We default to US rules as of 1999-08-17.
>  * POSIX 1003.1 section 8.1.1 says that the default DST rules are
>  * implementation dependent; for historical reasons, US rules are a
>  * common default.
111,115c107,109
< #define WILDABBR	"   "
< #endif /* !defined WILDABBR */
< 
< static char		wildabbr[] = "WILDABBR";
< #endif /* TM_ZONE */
---
> #ifndef TZDEFRULESTRING
> #define TZDEFRULESTRING ",M4.1.0,M10.5.0"
> #endif /* !defined TZDEFDST */
117,119c111,113
< /*! \brief FreeBSD defines 'zone' in 'struct tm' as non-const, so don't declare this
<    string as const. */
< static char		gmt[] = "GMT";
---
> #ifndef WRONG
> #define WRONG	(-1)
> #endif /* !defined WRONG */
122,127c116,121
< struct ttinfo {
< 	long		tt_gmtoff;	/*!< GMT offset in seconds */
< 	int		tt_isdst;	/*!< used to set tm_isdst */
< 	int		tt_abbrind;	/*!< abbreviation list index */
< 	int		tt_ttisstd;	/*!< TRUE if transition is std time */
< 	int		tt_ttisgmt;	/*!< TRUE if transition is GMT */
---
> struct ttinfo {				/* time type information */
> 	long		tt_gmtoff;	/* UTC offset in seconds */
> 	int		tt_isdst;	/* used to set tm_isdst */
> 	int		tt_abbrind;	/* abbreviation list index */
> 	int		tt_ttisstd;	/* TRUE if transition is std time */
> 	int		tt_ttisgmt;	/* TRUE if transition is UTC */
131,133c125,127
< struct lsinfo {
< 	time_t		ls_trans;	/*!< transition time */
< 	long		ls_corr;	/*!< correction to apply */
---
> struct lsinfo {				/* leap second information */
> 	time_t		ls_trans;	/* transition time */
> 	long		ls_corr;	/* correction to apply */
143a138,140
> #ifndef TZ_STRLEN_MAX
> #define TZ_STRLEN_MAX	255
> #endif /* !defined TZ_STRLEN_MAX */
146c143,144
< 	char	name[TZ_STRLEN_MAX + 1];
---
> 	/*! Name of the file that this references */
> 	char    name[TZ_STRLEN_MAX + 1];
150a149,150
> 	int		goback;
> 	int		goahead;
157c157
< 	struct state	*next;
---
> 	AST_LIST_ENTRY(state) list;
161,165c161,165
< 	int		r_type;		/*!< type of rule--see below */
< 	int		r_day;		/*!< day number of rule */
< 	int		r_week;		/*!< week number of rule */
< 	int		r_mon;		/*!< month number of rule */
< 	long		r_time;		/*!< transition time of rule */
---
> 	int		r_type;		/* type of rule--see below */
> 	int		r_day;		/* day number of rule */
> 	int		r_week;		/* week number of rule */
> 	int		r_mon;		/* month number of rule */
> 	long		r_time;		/* transition time of rule */
168,170c168,170
< #define JULIAN_DAY		0	/*!< Jn - Julian day */
< #define DAY_OF_YEAR		1	/*!< n - day of year */
< #define MONTH_NTH_DAY_OF_WEEK	2	/*!< Mm.n.d - month, week, day of week */
---
> #define JULIAN_DAY		0	/* Jn - Julian day */
> #define DAY_OF_YEAR		1	/* n - day of year */
> #define MONTH_NTH_DAY_OF_WEEK	2	/* Mm.n.d - month, week, day of week */
176a177,180
> static time_t		detzcode64 P((const char * codep));
> static int		differ_by_repeat P((time_t t1, time_t t0));
> static const char *	getzname P((const char * strp));
> static const char *	getqzname P((const char * strp, const int delim));
182,186c186,190
< static void		gmtload P((struct state * sp));
< static void		gmtsub P((const time_t * timep, long offset,
< 				struct tm * tmp, const char * zone));
< static void		localsub P((const time_t * timep, long offset,
< 				struct tm * tmp, const char * zone));
---
> static int		gmtload P((struct state * sp));
> static struct tm *	gmtsub P((const time_t * timep, long offset,
> 				struct tm * tmp));
> static struct tm *	localsub P((const time_t * timep, long offset,
> 				struct tm * tmp, const struct state *sp));
187a192,195
> static int		leaps_thru_end_of P((int y));
> static int		long_increment_overflow P((long * number, int delta));
> static int		long_normalize_overflow P((long * tensptr,
> 				int * unitsptr, const int base));
189c197
< 				int base));
---
> 				const int base));
191,193c199,201
< 				void(*funcp) P((const time_t *,
< 				long, struct tm *, const char*)),
< 				long offset, const char * zone));
---
> 				struct tm * (*funcp) P((const time_t *,
> 				long, struct tm *, const struct state *sp)),
> 				long offset, const struct state *sp));
195,198c203,210
< 				void(*funcp) P((const time_t *,
< 				long, struct tm*, const char*)),
< 				long offset, int * okayp, const char * zone));
< static void		timesub P((const time_t * timep, long offset,
---
> 				struct tm * (*funcp) P((const time_t *,
> 				long, struct tm*, const struct state *sp)),
> 				long offset, int * okayp, const struct state *sp));
> static time_t		time2sub P((struct tm *tmp,
> 				struct tm * (*funcp) (const time_t *,
> 				long, struct tm*, const struct state *sp),
> 				long offset, int * okayp, int do_norm_secs, const struct state *sp));
> static struct tm *	timesub P((const time_t * timep, long offset,
204c216,217
< static int		tzload P((const char * name, struct state * sp));
---
> static int		tzload P((const char * name, struct state * sp,
> 				int doextend));
208,210c221
< static struct state *	lclptr      = NULL;
< static struct state *	last_lclptr = NULL;
< static struct state *	gmtptr      = NULL;
---
> static AST_LIST_HEAD_STATIC(zonelist, state);
216,224c227
< static int		gmt_is_set;
< #ifdef	_THREAD_SAFE
< AST_MUTEX_DEFINE_STATIC(lcl_mutex);
< AST_MUTEX_DEFINE_STATIC(tzset_mutex);
< AST_MUTEX_DEFINE_STATIC(tzsetwall_mutex);
< AST_MUTEX_DEFINE_STATIC(gmt_mutex);
< #endif
< 
< /*
---
> /*! \note
229c232
< ** Thanks to Paul Eggert (eggert@twinsun.com) for noting this.
---
> ** Thanks to Paul Eggert for noting this.
232c235
< static long detzcode(const char * const	codep)
---
> static long detzcode(const char * const codep)
234,235c237,238
< 	register long	result;
< 	register int	i;
---
> 	long	result;
> 	int	i;
237c240
< 	result = (codep[0] & 0x80) ? ~0L : 0L;
---
> 	result = (codep[0] & 0x80) ? ~0L : 0;
243c246
< static int tzload(register const char *name, register struct state *const	sp)
---
> static time_t detzcode64(const char * const codep)
245,247c248,278
< 	register const char *	p;
< 	register int		i;
< 	register int		fid;
---
> 	time_t	result;
> 	int	i;
> 
> 	result = (codep[0] & 0x80) ?  (~(int_fast64_t) 0) : 0;
> 	for (i = 0; i < 8; ++i)
> 		result = result * 256 + (codep[i] & 0xff);
> 	return result;
> }
> 
> static int differ_by_repeat(const time_t t1, const time_t t0)
> {
> 	const long long at1 = t1, at0 = t0;
> 	if (TYPE_INTEGRAL(time_t) &&
> 		TYPE_BIT(time_t) - TYPE_SIGNED(time_t) < SECSPERREPEAT_BITS)
> 			return 0;
> 	return at1 - at0 == SECSPERREPEAT;
> }
> 
> static int tzload(const char *name, struct state * const sp, const int doextend)
> {
> 	const char *		p;
> 	int			i;
> 	int			fid;
> 	int			stored;
> 	int			nread;
> 	union {
> 		struct tzhead	tzhead;
> 		char		buf[2 * sizeof(struct tzhead) +
> 					2 * sizeof *sp +
> 					4 * TZ_MAX_TIMES];
> 	} u;
249,251d279
< #ifdef DEBUG
< 	fprintf(stderr,"tzload called with name=%s, sp=%d\n", name, sp);
< #endif
253c281
< 		return -1;
---
> 		return WRONG;
255,256c283
< 		register int	doaccess;
< 		struct stat	stab;
---
> 		int	doaccess;
264c291
< 		char		fullname[FILENAME_MAX + 1] = "";
---
> 		char		fullname[FILENAME_MAX + 1];
271,276c298,303
< 				return -1;
< 			if ((strlen(p) + 1 + strlen(name) + 1) >= sizeof fullname)
< 				return -1;
< 			(void) strncpy(fullname, p, sizeof(fullname) - 1);
< 			(void) strncat(fullname, "/", sizeof(fullname) - strlen(fullname) - 1);
< 			(void) strncat(fullname, name, sizeof(fullname) - strlen(fullname) - 1);
---
> 				return WRONG;
> 			if ((strlen(p) + strlen(name) + 1) >= sizeof fullname)
> 				return WRONG;
> 			(void) strcpy(fullname, p);
> 			(void) strcat(fullname, "/");
> 			(void) strcat(fullname, name);
285c312
< 		     	return -1;
---
> 			return WRONG;
287,291c314
< 			return -1;
< 		if ((fstat(fid, &stab) < 0) || !S_ISREG(stab.st_mode)) {
< 			close(fid);
< 			return -1;
< 		}
---
> 			return WRONG;
293,295c316,319
< 	{
< 		struct tzhead *	tzhp;
< 		char		buf[sizeof *sp + sizeof *tzhp];
---
> 	nread = read(fid, u.buf, sizeof u.buf);
> 	if (close(fid) < 0 || nread <= 0)
> 		return WRONG;
> 	for (stored = 4; stored <= 8; stored *= 2) {
299,315c323,329
< 		i = read(fid, buf, sizeof buf);
< 		if (close(fid) != 0)
< 			return -1;
< 		p = buf;
< 		p += (sizeof tzhp->tzh_magic) + (sizeof tzhp->tzh_reserved);
< 		ttisstdcnt = (int) detzcode(p);
< 		p += 4;
< 		ttisgmtcnt = (int) detzcode(p);
< 		p += 4;
< 		sp->leapcnt = (int) detzcode(p);
< 		p += 4;
< 		sp->timecnt = (int) detzcode(p);
< 		p += 4;
< 		sp->typecnt = (int) detzcode(p);
< 		p += 4;
< 		sp->charcnt = (int) detzcode(p);
< 		p += 4;
---
> 		ttisstdcnt = (int) detzcode(u.tzhead.tzh_ttisstdcnt);
> 		ttisgmtcnt = (int) detzcode(u.tzhead.tzh_ttisgmtcnt);
> 		sp->leapcnt = (int) detzcode(u.tzhead.tzh_leapcnt);
> 		sp->timecnt = (int) detzcode(u.tzhead.tzh_timecnt);
> 		sp->typecnt = (int) detzcode(u.tzhead.tzh_typecnt);
> 		sp->charcnt = (int) detzcode(u.tzhead.tzh_charcnt);
> 		p = u.tzhead.tzh_charcnt + sizeof u.tzhead.tzh_charcnt;
322,323c336,338
< 				return -1;
< 		if (i - (p - buf) < sp->timecnt * 4 +	/* ats */
---
> 				return WRONG;
> 		if (nread - (p - u.buf) <
> 			sp->timecnt * stored +		/* ats */
325c340
< 			sp->typecnt * (4 + 2) +		/* ttinfos */
---
> 			sp->typecnt * 6 +		/* ttinfos */
327c342
< 			sp->leapcnt * (4 + 4) +		/* lsinfos */
---
> 			sp->leapcnt * (stored + 4) +	/* lsinfos */
330c345
< 				return -1;
---
> 				return WRONG;
332,333c347,349
< 			sp->ats[i] = detzcode(p);
< 			p += 4;
---
> 			sp->ats[i] = (stored == 4) ?
> 				detzcode(p) : detzcode64(p);
> 			p += stored;
338c354
< 				return -1;
---
> 				return WRONG;
341c357
< 			register struct ttinfo *	ttisp;
---
> 			struct ttinfo *	ttisp;
348c364
< 				return -1;
---
> 				return WRONG;
352c368
< 					return -1;
---
> 					return WRONG;
358c374
< 			register struct lsinfo *	lsisp;
---
> 			struct lsinfo *	lsisp;
361,362c377,379
< 			lsisp->ls_trans = detzcode(p);
< 			p += 4;
---
> 			lsisp->ls_trans = (stored == 4) ?
> 				detzcode(p) : detzcode64(p);
> 			p += stored;
367c384
< 			register struct ttinfo *	ttisp;
---
> 			struct ttinfo *	ttisp;
376c393
< 						return -1;
---
> 						return WRONG;
380c397
< 			register struct ttinfo *	ttisp;
---
> 			struct ttinfo *	ttisp;
389c406
< 						return -1;
---
> 						return WRONG;
391a409,448
> 		/*
> 		** Out-of-sort ats should mean we're running on a
> 		** signed time_t system but using a data file with
> 		** unsigned values (or vice versa).
> 		*/
> 		for (i = 0; i < sp->timecnt - 2; ++i)
> 			if (sp->ats[i] > sp->ats[i + 1]) {
> 				++i;
> 				if (TYPE_SIGNED(time_t)) {
> 					/*
> 					** Ignore the end (easy).
> 					*/
> 					sp->timecnt = i;
> 				} else {
> 					/*
> 					** Ignore the beginning (harder).
> 					*/
> 					int	j;
> 
> 					for (j = 0; j + i < sp->timecnt; ++j) {
> 						sp->ats[j] = sp->ats[j + i];
> 						sp->types[j] = sp->types[j + i];
> 					}
> 					sp->timecnt = j;
> 				}
> 				break;
> 			}
> 		/*
> 		** If this is an old file, we're done.
> 		*/
> 		if (u.tzhead.tzh_version[0] == '\0')
> 			break;
> 		nread -= p - u.buf;
> 		for (i = 0; i < nread; ++i)
> 			u.buf[i] = p[i];
> 		/*
> 		** If this is a narrow integer time_t system, we're done.
> 		*/
> 		if (stored >= (int) sizeof(time_t) && TYPE_INTEGRAL(time_t))
> 			break;
392a450,492
> 	if (doextend && nread > 2 &&
> 		u.buf[0] == '\n' && u.buf[nread - 1] == '\n' &&
> 		sp->typecnt + 2 <= TZ_MAX_TYPES) {
> 			struct state	ts;
> 			int	result;
> 
> 			u.buf[nread - 1] = '\0';
> 			result = tzparse(&u.buf[1], &ts, FALSE);
> 			if (result == 0 && ts.typecnt == 2 &&
> 				sp->charcnt + ts.charcnt <= TZ_MAX_CHARS) {
> 					for (i = 0; i < 2; ++i)
> 						ts.ttis[i].tt_abbrind +=
> 							sp->charcnt;
> 					for (i = 0; i < ts.charcnt; ++i)
> 						sp->chars[sp->charcnt++] =
> 							ts.chars[i];
> 					i = 0;
> 					while (i < ts.timecnt &&
> 						ts.ats[i] <=
> 						sp->ats[sp->timecnt - 1])
> 							++i;
> 					while (i < ts.timecnt &&
> 					    sp->timecnt < TZ_MAX_TIMES) {
> 						sp->ats[sp->timecnt] =
> 							ts.ats[i];
> 						sp->types[sp->timecnt] =
> 							sp->typecnt +
> 							ts.types[i];
> 						++sp->timecnt;
> 						++i;
> 					}
> 					sp->ttis[sp->typecnt++] = ts.ttis[0];
> 					sp->ttis[sp->typecnt++] = ts.ttis[1];
> 			}
> 	}
> 	i = 2 * YEARSPERREPEAT;
> 	sp->goback = sp->goahead = sp->timecnt > i;
> 	sp->goback = sp->goback && sp->types[i] == sp->types[0] &&
> 		differ_by_repeat(sp->ats[i], sp->ats[0]);
> 	sp->goahead = sp->goahead &&
> 		sp->types[sp->timecnt - 1] == sp->types[sp->timecnt - 1 - i] &&
> 		differ_by_repeat(sp->ats[sp->timecnt - 1],
> 			 sp->ats[sp->timecnt - 1 - i]);
406,409c506,508
<  * Given a pointer into a time zone string, extract a number from that string.
<  * \return Check that the number is within a specified range; if it is not, return
<  * NULL.
<  * Otherwise, return a pointer to the first character not part of the number.
---
> ** Given a pointer into a time zone string, scan until a character that is not
> ** a valid character in a zone name is found. Return a pointer to that
> ** character.
412c511
< static const char *getnum(register const char *strp, int * const nump, const int min, const int max)
---
> static const char * getzname(const char *strp)
414,415c513,549
< 	register char	c;
< 	register int	num;
---
> 	char	c;
> 
> 	while ((c = *strp) != '\0' && !is_digit(c) && c != ',' && c != '-' &&
> 		c != '+')
> 			++strp;
> 	return strp;
> }
> 
> /*! \brief
> ** Given a pointer into an extended time zone string, scan until the ending
> ** delimiter of the zone name is located. Return a pointer to the delimiter.
> **
> ** As with getzname above, the legal character set is actually quite
> ** restricted, with other characters producing undefined results.
> ** We don't do any checking here; checking is done later in common-case code.
> */
> 
> static const char * getqzname(const char *strp, const int delim)
> {
> 	int	c;
> 
> 	while ((c = *strp) != '\0' && c != delim)
> 		++strp;
> 	return strp;
> }
> 
> /*! \brief
> ** Given a pointer into a time zone string, extract a number from that string.
> ** Check that the number is within a specified range; if it is not, return
> ** NULL.
> ** Otherwise, return a pointer to the first character not part of the number.
> */
> 
> static const char *getnum(const char *strp, int *nump, const int min, const int max)
> {
> 	char	c;
> 	int	num;
433,437c567,571
<  * Given a pointer into a time zone string, extract a number of seconds,
<  * in hh[:mm[:ss]] form, from the string.
<  * \return If any error occurs, return NULL.
<  * Otherwise, return a pointer to the first character not part of the number
<  * of seconds.
---
> ** Given a pointer into a time zone string, extract a number of seconds,
> ** in hh[:mm[:ss]] form, from the string.
> ** If any error occurs, return NULL.
> ** Otherwise, return a pointer to the first character not part of the number
> ** of seconds.
440c574
< static const char *getsecs(register const char *strp, long * const secsp)
---
> static const char *getsecs(const char *strp, long * const secsp)
462c596
< 			/* `SECSPERMIN' allows for leap seconds.  */
---
> 			/* `SECSPERMIN' allows for leap seconds. */
473,476c607,610
<  * Given a pointer into a time zone string, extract an offset, in
<  * [+-]hh[:mm[:ss]] form, from the string.
<  * \return If any error occurs, return NULL.
<  * Otherwise, return a pointer to the first character not part of the time.
---
> ** Given a pointer into a time zone string, extract an offset, in
> ** [+-]hh[:mm[:ss]] form, from the string.
> ** If any error occurs, return NULL.
> ** Otherwise, return a pointer to the first character not part of the time.
479c613
< static const char * getoffset(register const char *strp, long * const offsetp)
---
> static const char *getoffset(const char *strp, long *offsetp)
481c615
< 	register int	neg = 0;
---
> 	int	neg = 0;
497,500c631,634
<  * Given a pointer into a time zone string, extract a rule in the form
<  * date[/time].  See POSIX section 8 for the format of "date" and "time".
<  * \return If a valid rule is not found, return NULL.
<  * Otherwise, return a pointer to the first character not part of the rule.
---
> ** Given a pointer into a time zone string, extract a rule in the form
> ** date[/time]. See POSIX section 8 for the format of "date" and "time".
> ** If a valid rule is not found, return NULL.
> ** Otherwise, return a pointer to the first character not part of the rule.
503c637
< static const char *getrule(const char *strp, register struct rule * const rulep)
---
> static const char *getrule(const char *strp, struct rule *rulep)
549,551c683,685
<  * Given the Epoch-relative time of January 1, 00:00:00 GMT, in a year, the
<  * year, a rule, and the offset from GMT at the time that rule takes effect,
<  * calculate the Epoch-relative time that rule takes effect.
---
> ** Given the Epoch-relative time of January 1, 00:00:00 UTC, in a year, the
> ** year, a rule, and the offset from UTC at the time that rule takes effect,
> ** calculate the Epoch-relative time that rule takes effect.
554,562c688,692
< static time_t transtime(janfirst, year, rulep, offset)
< const time_t				janfirst;
< const int				year;
< register const struct rule * const	rulep;
< const long				offset;
< {
< 	register int	leapyear;
< 	register time_t	value = 0;
< 	register int	i;
---
> static time_t transtime(const time_t janfirst, const int year, const struct rule *rulep, const long offset)
> {
> 	int	leapyear;
> 	time_t	value;
> 	int	i;
564a695
> 	INITIALIZE(value);
612c743
< 		** "dow" is the day-of-week of the first day of the month.  Get
---
> 		** "dow" is the day-of-week of the first day of the month. Get
634,635c765,766
< 	** "value" is the Epoch-relative time of 00:00:00 GMT on the day in
< 	** question.  To get the Epoch-relative time of the specified local
---
> 	** "value" is the Epoch-relative time of 00:00:00 UTC on the day in
> 	** question. To get the Epoch-relative time of the specified local
637c768
< 	** from GMT.
---
> 	** from UTC.
642c773
< /*
---
> /*! \note
647,651c778
< static int
< tzparse(name, sp, lastditch)
< const char *			name;
< register struct state * const	sp;
< const int			lastditch;
---
> static int tzparse(const char *name, struct state *sp, const int lastditch)
654,662c781,789
< 	const char *			dstname = NULL;
< 	size_t				stdlen = 0;
< 	size_t				dstlen = 0;
< 	long				stdoffset = 0L;
< 	long				dstoffset = 0L;
< 	register time_t *		atp;
< 	register unsigned char *	typep;
< 	register char *			cp;
< 	register int			load_result;
---
> 	const char *			dstname;
> 	size_t				stdlen;
> 	size_t				dstlen;
> 	long				stdoffset;
> 	long				dstoffset;
> 	time_t *		atp;
> 	unsigned char *	typep;
> 	char *			cp;
> 	int			load_result;
663a791
> 	INITIALIZE(dstname);
665,668c793,818
< #ifdef DEBUG
< 	fprintf(stderr, "tzparse(): loading default rules\n");
< #endif
< 	load_result = tzload(TZDEFRULES, sp);
---
> 	if (lastditch) {
> 		stdlen = strlen(name);	/* length of standard zone name */
> 		name += stdlen;
> 		if (stdlen >= sizeof sp->chars)
> 			stdlen = (sizeof sp->chars) - 1;
> 		stdoffset = 0;
> 	} else {
> 		if (*name == '<') {
> 			name++;
> 			stdname = name;
> 			name = getqzname(name, '>');
> 			if (*name != '>')
> 				return WRONG;
> 			stdlen = name - stdname;
> 			name++;
> 		} else {
> 			name = getzname(name);
> 			stdlen = name - stdname;
> 		}
> 		if (*name == '\0')
> 			return WRONG;
> 		name = getoffset(name, &stdoffset);
> 		if (name == NULL)
> 			return WRONG;
> 	}
> 	load_result = tzload(TZDEFRULES, sp, FALSE);
671a822,833
> 		if (*name == '<') {
> 			dstname = ++name;
> 			name = getqzname(name, '>');
> 			if (*name != '>')
> 				return WRONG;
> 			dstlen = name - dstname;
> 			name++;
> 		} else {
> 			dstname = name;
> 			name = getzname(name);
> 			dstlen = name - dstname; /* length of DST zone name */
> 		}
675c837
< 				return -1;
---
> 				return WRONG;
676a839,840
> 		if (*name == '\0' && load_result != 0)
> 			name = TZDEFRULESTRING;
680,681c844,845
< 			register int	year;
< 			register time_t	janfirst;
---
> 			int	year;
> 			time_t	janfirst;
687c851
< 				return -1;
---
> 				return WRONG;
689c853
< 				return -1;
---
> 				return WRONG;
691c855
< 				return -1;
---
> 				return WRONG;
693c857
< 				return -1;
---
> 				return WRONG;
696c860
< 			** Two transitions per year, from EPOCH_YEAR to 2037.
---
> 			** Two transitions per year, from EPOCH_YEAR forward.
698,700d861
< 			sp->timecnt = 2 * (2037 - EPOCH_YEAR + 1);
< 			if (sp->timecnt > TZ_MAX_TIMES)
< 				return -1;
710c871,876
< 			for (year = EPOCH_YEAR; year <= 2037; ++year) {
---
> 			sp->timecnt = 0;
> 			for (year = EPOCH_YEAR;
> 			    sp->timecnt + 2 <= TZ_MAX_TIMES;
> 			    ++year) {
> 			    	time_t	newfirst;
> 
726c892,894
< 				janfirst += year_lengths[isleap(year)] *
---
> 				sp->timecnt += 2;
> 				newfirst = janfirst;
> 				newfirst += year_lengths[isleap(year)] *
727a896,898
> 				if (newfirst <= janfirst)
> 					break;
> 				janfirst = newfirst;
730,735c901,906
< 			register long	theirstdoffset;
< 			register long	theirdstoffset;
< 			register long	theiroffset;
< 			register int	isdst;
< 			register int	i;
< 			register int	j;
---
> 			long	theirstdoffset;
> 			long	theirdstoffset;
> 			long	theiroffset;
> 			int	isdst;
> 			int	i;
> 			int	j;
738,740c909
< 				return -1;
< 			if (load_result != 0)
< 				return -1;
---
> 				return WRONG;
813a983
> 			sp->typecnt = 2;
826,827c996,997
< 	if (sp->charcnt > sizeof sp->chars)
< 		return -1;
---
> 	if ((size_t) sp->charcnt > sizeof sp->chars)
> 		return WRONG;
839,841c1009
< static void
< gmtload(sp)
< struct state * const	sp;
---
> static int gmtload(struct state *sp)
843,886c1011,1012
< 	if (tzload(gmt, sp) != 0)
< 		(void) tzparse(gmt, sp, TRUE);
< }
< 
< /*
< ** A non-static declaration of ast_tzsetwall in a system header file
< ** may cause a warning about this upcoming static declaration...
< */
< static
< #ifdef	_THREAD_SAFE
< int
< ast_tzsetwall_basic P((void))
< #else
< int
< ast_tzsetwall P((void))
< #endif
< {
< 	struct state *cur_state = lclptr;
< 
< 	/* Find the appropriate structure, if already parsed */
< 	while (cur_state != NULL) {
< 		if (cur_state->name[0] == '\0')
< 			break;
< 		cur_state = cur_state->next;
< 	}
< 	if (cur_state != NULL)
< 		return 0;
< 	cur_state = malloc(sizeof(struct state));
< 	if (cur_state == NULL) {
< 		return -1;
< 	}
< 	memset(cur_state,0,sizeof(struct state));
< 	if (tzload((char *) NULL, cur_state) != 0)
< #ifdef DEBUG
< 	{
< 		fprintf(stderr, "ast_tzsetwall: calling gmtload()\n");
< #endif
< 		gmtload(cur_state);
< #ifdef DEBUG
< 	}
< #endif
< 
< 	if (last_lclptr)
< 		last_lclptr->next = cur_state;
---
> 	if (tzload(gmt, sp, TRUE) != 0)
> 		return tzparse(gmt, sp, TRUE);
888,900c1014
< 		lclptr = cur_state;
< 	last_lclptr = cur_state;
< 	return 0;
< }
< 
< #ifdef	_THREAD_SAFE
< int
< ast_tzsetwall P((void))
< {
< 	ast_mutex_lock(&tzsetwall_mutex);
< 	ast_tzsetwall_basic();
< 	ast_mutex_unlock(&tzsetwall_mutex);
< 	return 0;
---
> 		return WRONG;
902d1015
< #endif
904,910c1017
< #ifdef	_THREAD_SAFE
< static int
< ast_tzset_basic P((const char *name))
< #else
< int
< ast_tzset P((const char *name))
< #endif
---
> static const struct state *ast_tzset(const char *zone)
912c1019
< 	struct state *cur_state = lclptr;
---
> 	struct state *sp;
914,917c1021,1022
< 	/* Not set at all */
< 	if (name == NULL) {
< 		return ast_tzsetwall();
< 	}
---
> 	if (ast_strlen_zero(zone))
> 		zone = "/etc/localtime";
919,930c1024,1029
< 	/* Find the appropriate structure, if already parsed */
< 	while (cur_state != NULL) {
< 		if (!strcmp(cur_state->name,name))
< 			break;
< 		cur_state = cur_state->next;
< 	}
< 	if (cur_state != NULL)
< 		return 0;
< 
< 	cur_state = malloc(sizeof(struct state));
< 	if (cur_state == NULL) {
< 		return -1;
---
> 	AST_LIST_LOCK(&zonelist);
> 	AST_LIST_TRAVERSE(&zonelist, sp, list) {
> 		if (!strcmp(sp->name, zone)) {
> 			AST_LIST_UNLOCK(&zonelist);
> 			return sp;
> 		}
932c1031
< 	memset(cur_state,0,sizeof(*cur_state));
---
> 	AST_LIST_UNLOCK(&zonelist);
934,961c1033,1034
< 	/* Name is set, but set to the empty string == no adjustments */
< 	if (name[0] == '\0') {
< 		/*
< 		** User wants it fast rather than right.
< 		*/
< 		cur_state->leapcnt = 0;		/* so, we're off a little */
< 		cur_state->timecnt = 0;
< 		cur_state->ttis[0].tt_gmtoff = 0;
< 		cur_state->ttis[0].tt_abbrind = 0;
< 		(void) strncpy(cur_state->chars, gmt, sizeof(cur_state->chars) - 1);
< 	} else if (tzload(name, cur_state) != 0) {
< 		if (name[0] == ':') {
< 			(void) gmtload(cur_state);
< 		} else if (tzparse(name, cur_state, FALSE) != 0) {
< 			/* If not found, load localtime */
< 			if (tzload("/etc/localtime", cur_state) != 0)
< 				/* Last ditch, get GMT */
< 				(void) gmtload(cur_state);
< 		}
< 	}
< 	strncpy(cur_state->name, name, sizeof(cur_state->name) - 1);
< 	if (last_lclptr)
< 		last_lclptr->next = cur_state;
< 	else
< 		lclptr = cur_state;
< 	last_lclptr = cur_state;
< 	return 0;
< }
---
> 	if (!(sp = ast_calloc(1, sizeof *sp)))
> 		return NULL;
963,969c1036,1044
< #ifdef	_THREAD_SAFE
< void
< ast_tzset P((const char *name))
< {
< 	ast_mutex_lock(&tzset_mutex);
< 	ast_tzset_basic(name);
< 	ast_mutex_unlock(&tzset_mutex);
---
> 	if (tzload(zone, sp, TRUE) != 0) {
> 		if (zone[0] == ':' || tzparse(zone, sp, FALSE) != 0)
> 			(void) gmtload(sp);
> 	}
> 	ast_copy_string(sp->name, zone, sizeof(sp->name));
> 	AST_LIST_LOCK(&zonelist);
> 	AST_LIST_INSERT_TAIL(&zonelist, sp, list);
> 	AST_LIST_UNLOCK(&zonelist);
> 	return sp;
971d1045
< #endif
973c1047
< /*
---
> /*! \note
976c1050
< ** freely called.  (And no, the PANS doesn't require the above behavior--
---
> ** freely called. (And no, the PANS doesn't require the above behavior--
982,992c1056,1060
< /*ARGSUSED*/
< static void
< localsub(timep, offset, tmp, zone)
< const time_t * const	timep;
< const long		offset;
< struct tm * const	tmp;
< const char * const	zone;
< {
< 	register struct state *		sp;
< 	register const struct ttinfo *	ttisp;
< 	register int			i;
---
> static struct tm *localsub(const time_t *timep, const long offset, struct tm *tmp, const struct state *sp)
> {
> 	const struct ttinfo *	ttisp;
> 	int			i;
> 	struct tm *		result;
995,1020c1063,1103
< 	sp = lclptr;
< 	/* Find the right zone record */
< 	if (zone == NULL)
< 		sp = NULL;
< 	else
< 		while (sp != NULL) {
< 			if (!strcmp(sp->name,zone))
< 				break;
< 			sp = sp->next;
< 		}
< 
< 	if (sp == NULL) {
< 		ast_tzsetwall();
< 		sp = lclptr;
< 		/* Find the default zone record */
< 		while (sp != NULL) {
< 			if (sp->name[0] == '\0')
< 				break;
< 			sp = sp->next;
< 		}
< 	}
< 
< 	/* Last ditch effort, use GMT */
< 	if (sp == NULL) {
< 		gmtsub(timep, offset, tmp, zone);
< 		return;
---
> 	if (sp == NULL)
> 		return gmtsub(timep, offset, tmp);
> 	if ((sp->goback && t < sp->ats[0]) ||
> 		(sp->goahead && t > sp->ats[sp->timecnt - 1])) {
> 			time_t			newt = t;
> 			time_t		seconds;
> 			time_t		tcycles;
> 			int_fast64_t	icycles;
> 
> 			if (t < sp->ats[0])
> 				seconds = sp->ats[0] - t;
> 			else	seconds = t - sp->ats[sp->timecnt - 1];
> 			--seconds;
> 			tcycles = seconds / YEARSPERREPEAT / AVGSECSPERYEAR;
> 			++tcycles;
> 			icycles = tcycles;
> 			if (tcycles - icycles >= 1 || icycles - tcycles >= 1)
> 				return NULL;
> 			seconds = icycles;
> 			seconds *= YEARSPERREPEAT;
> 			seconds *= AVGSECSPERYEAR;
> 			if (t < sp->ats[0])
> 				newt += seconds;
> 			else	newt -= seconds;
> 			if (newt < sp->ats[0] ||
> 				newt > sp->ats[sp->timecnt - 1])
> 					return NULL;	/* "cannot happen" */
> 			result = localsub(&newt, offset, tmp, sp);
> 			if (result == tmp) {
> 				time_t	newy;
> 
> 				newy = tmp->tm_year;
> 				if (t < sp->ats[0])
> 					newy -= icycles * YEARSPERREPEAT;
> 				else
> 					newy += icycles * YEARSPERREPEAT;
> 				tmp->tm_year = newy;
> 				if (tmp->tm_year != newy)
> 					return NULL;
> 			}
> 			return result;
1024c1107
< 		while (sp->ttis[i].tt_isdst)
---
> 		while (sp->ttis[i].tt_isdst) {
1028a1112
> 		}
1030,1033c1114,1125
< 		for (i = 1; i < sp->timecnt; ++i)
< 			if (t < sp->ats[i])
< 				break;
< 		i = sp->types[i - 1];
---
> 		int	lo = 1;
> 		int	hi = sp->timecnt;
> 
> 		while (lo < hi) {
> 			int	mid = (lo + hi) >> 1;
> 
> 			if (t < sp->ats[mid])
> 				hi = mid;
> 			else
> 				lo = mid + 1;
> 		}
> 		i = (int) sp->types[lo - 1];
1042c1134
< 	timesub(&t, ttisp->tt_gmtoff, sp, tmp);
---
> 	result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
1044d1135
< 	tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind];
1047a1139
> 	return result;
1050,1054c1142
< struct tm *
< ast_localtime(timep, p_tm, zone)
< const time_t * const	timep;
< struct tm *p_tm;
< const char * const	zone;
---
> struct tm *ast_localtime(const time_t *timep, struct tm *tmp, const char *zone)
1056,1064c1144,1146
< #ifdef _THREAD_SAFE
< 	ast_mutex_lock(&lcl_mutex);
< #endif
< 	ast_tzset(ast_strlen_zero(zone) ? "/etc/localtime" : zone);
< 	localsub(timep, 0L, p_tm, zone);
< #ifdef _THREAD_SAFE
< 	ast_mutex_unlock(&lcl_mutex);
< #endif
< 	return(p_tm);
---
> 	const struct state *sp = ast_tzset(zone);
> 	memset(tmp, 0, sizeof(*tmp));
> 	return sp ? localsub(timep, 0L, tmp, sp) : NULL;
1071,1076c1153
< static void
< gmtsub(timep, offset, tmp, zone)
< const time_t * const	timep;
< const long		offset;
< struct tm * const	tmp;
< const char * const	zone;
---
> static struct tm *gmtsub(const time_t *timep, const long offset, struct tm *tmp)
1078,1085c1155,1161
< #ifdef	_THREAD_SAFE
< 	ast_mutex_lock(&gmt_mutex);
< #endif
< 	if (!gmt_is_set) {
< 		gmt_is_set = TRUE;
< 		gmtptr = (struct state *) malloc(sizeof *gmtptr);
< 		if (gmtptr != NULL)
< 			gmtload(gmtptr);
---
> 	struct tm *	result;
> 	struct state *sp;
> 
> 	AST_LIST_LOCK(&zonelist);
> 	AST_LIST_TRAVERSE(&zonelist, sp, list) {
> 		if (!strcmp(sp->name, "UTC"))
> 			break;
1087,1088c1163,1172
< 	ast_mutex_unlock(&gmt_mutex);
< 	timesub(timep, offset, gmtptr, tmp);
---
> 
> 	if (!sp) {
> 		if (!(sp = (struct state *) ast_calloc(1, sizeof *sp)))
> 			return NULL;
> 		gmtload(sp);
> 		AST_LIST_INSERT_TAIL(&zonelist, sp, list);
> 	}
> 	AST_LIST_UNLOCK(&zonelist);
> 
> 	result = timesub(timep, offset, sp, tmp);
1092c1176
< 	** "GMT+xxxx" or "GMT-xxxx" if offset is non-zero,
---
> 	** "UTC+xxxx" or "UTC-xxxx" if offset is non-zero,
1096,1101c1180,1182
< 		tmp->TM_ZONE = wildabbr;
< 	else {
< 		if (gmtptr == NULL)
< 			tmp->TM_ZONE = gmt;
< 		else	tmp->TM_ZONE = gmtptr->chars;
< 	}
---
> 		tmp->TM_ZONE = "    ";
> 	else
> 		tmp->TM_ZONE = sp->chars;
1102a1184,1195
> 	return result;
> }
> 
> /*! \brief
> ** Return the number of leap years through the end of the given year
> ** where, to make the math easy, the answer for year zero is defined as zero.
> */
> 
> static int leaps_thru_end_of(const int y)
> {
> 	return (y >= 0) ? (y / 4 - y / 100 + y / 400) :
> 		-(leaps_thru_end_of(-(y + 1)) + 1);
1105,1120c1198,1210
< static void
< timesub(timep, offset, sp, tmp)
< const time_t * const			timep;
< const long				offset;
< register const struct state * const	sp;
< register struct tm * const		tmp;
< {
< 	register const struct lsinfo *	lp;
< 	register long			days;
< 	register long			rem;
< 	register int			y;
< 	register int			yleap;
< 	register const int *		ip;
< 	register long			corr;
< 	register int			hit;
< 	register int			i;
---
> static struct tm *timesub(const time_t *timep, const long offset, const struct state *sp, struct tm *tmp)
> {
> 	const struct lsinfo *	lp;
> 	time_t			tdays;
> 	int			idays;	/* unsigned would be so 2003 */
> 	long			rem;
> 	int				y;
> 	const int *		ip;
> 	long			corr;
> 	int			hit;
> 	int			i;
> 	long	seconds;
> 
1145,1153c1235,1257
< 	days = *timep / SECSPERDAY;
< 	rem = *timep % SECSPERDAY;
< #ifdef mc68k
< 	if (*timep == 0x80000000) {
< 		/*
< 		** A 3B1 muffs the division on the most negative number.
< 		*/
< 		days = -24855;
< 		rem = -11648;
---
> 	y = EPOCH_YEAR;
> 	tdays = *timep / SECSPERDAY;
> 	rem = *timep - tdays * SECSPERDAY;
> 	while (tdays < 0 || tdays >= year_lengths[isleap(y)]) {
> 		int		newy;
> 		time_t	tdelta;
> 		int	idelta;
> 		int	leapdays;
> 
> 		tdelta = tdays / DAYSPERLYEAR;
> 		idelta = tdelta;
> 		if (tdelta - idelta >= 1 || idelta - tdelta >= 1)
> 			return NULL;
> 		if (idelta == 0)
> 			idelta = (tdays < 0) ? -1 : 1;
> 		newy = y;
> 		if (increment_overflow(&newy, idelta))
> 			return NULL;
> 		leapdays = leaps_thru_end_of(newy - 1) -
> 			leaps_thru_end_of(y - 1);
> 		tdays -= ((time_t) newy - y) * DAYSPERNYEAR;
> 		tdays -= leapdays;
> 		y = newy;
1155,1156c1259,1268
< #endif /* defined mc68k */
< 	rem += (offset - corr);
---
> 
> 	seconds = tdays * SECSPERDAY + 0.5;
> 	tdays = seconds / SECSPERDAY;
> 	rem += seconds - tdays * SECSPERDAY;
> 
> 	/*
> 	** Given the range, we can now fearlessly cast...
> 	*/
> 	idays = tdays;
> 	rem += offset - corr;
1159c1271
< 		--days;
---
> 		--idays;
1163c1275,1285
< 		++days;
---
> 		++idays;
> 	}
> 	while (idays < 0) {
> 		if (increment_overflow(&y, -1))
> 			return NULL;
> 		idays += year_lengths[isleap(y)];
> 	}
> 	while (idays >= year_lengths[isleap(y)]) {
> 		idays -= year_lengths[isleap(y)];
> 		if (increment_overflow(&y, 1))
> 			return NULL;
1164a1287,1302
> 	tmp->tm_year = y;
> 	if (increment_overflow(&tmp->tm_year, -TM_YEAR_BASE))
> 		return NULL;
> 	tmp->tm_yday = idays;
> 	/*
> 	** The "extra" mods below avoid overflow problems.
> 	*/
> 	tmp->tm_wday = EPOCH_WDAY +
> 		((y - EPOCH_YEAR) % DAYSPERWEEK) *
> 		(DAYSPERNYEAR % DAYSPERWEEK) +
> 		leaps_thru_end_of(y - 1) -
> 		leaps_thru_end_of(EPOCH_YEAR - 1) +
> 		idays;
> 	tmp->tm_wday %= DAYSPERWEEK;
> 	if (tmp->tm_wday < 0)
> 		tmp->tm_wday += DAYSPERWEEK;
1166c1304
< 	rem = rem % SECSPERHOUR;
---
> 	rem %= SECSPERHOUR;
1170c1308
< 	** representation.  This uses "... ??:59:60" et seq.
---
> 	** representation. This uses "... ??:59:60" et seq.
1173,1194c1311,1314
< 	tmp->tm_wday = (int) ((EPOCH_WDAY + days) % DAYSPERWEEK);
< 	if (tmp->tm_wday < 0)
< 		tmp->tm_wday += DAYSPERWEEK;
< 	y = EPOCH_YEAR;
< #define LEAPS_THRU_END_OF(y)	((y) / 4 - (y) / 100 + (y) / 400)
< 	while (days < 0 || days >= (long) year_lengths[yleap = isleap(y)]) {
< 		register int	newy;
< 
< 		newy = y + days / DAYSPERNYEAR;
< 		if (days < 0)
< 			--newy;
< 		days -= (newy - y) * DAYSPERNYEAR +
< 			LEAPS_THRU_END_OF(newy - 1) -
< 			LEAPS_THRU_END_OF(y - 1);
< 		y = newy;
< 	}
< 	tmp->tm_year = y - TM_YEAR_BASE;
< 	tmp->tm_yday = (int) days;
< 	ip = mon_lengths[yleap];
< 	for (tmp->tm_mon = 0; days >= (long) ip[tmp->tm_mon]; ++(tmp->tm_mon))
< 		days = days - (long) ip[tmp->tm_mon];
< 	tmp->tm_mday = (int) (days + 1);
---
> 	ip = mon_lengths[isleap(y)];
> 	for (tmp->tm_mon = 0; idays >= ip[tmp->tm_mon]; ++(tmp->tm_mon))
> 		idays -= ip[tmp->tm_mon];
> 	tmp->tm_mday = (int) (idays + 1);
1198a1319
> 	return tmp;
1201,1223c1322
< char *
< ast_ctime(timep)
< const time_t * const	timep;
< {
< /*
< ** Section 4.12.3.2 of X3.159-1989 requires that
< **	The ctime funciton converts the calendar time pointed to by timer
< **	to local time in the form of a string.  It is equivalent to
< **		asctime(localtime(timer))
< */
< 	return asctime(localtime(timep));
< }
< 
< char *
< ast_ctime_r(timep, buf)
< const time_t * const	timep;
< char *buf;
< {
<         struct tm tm;
< 	return asctime_r(localtime_r(timep, &tm), buf);
< }
< 
< /*
---
> /*! \note
1227,1228c1326
< **	[kridle@xinet.com as of 1996-01-16.]
< **	It does a binary search of the time_t space.  Since time_t's are
---
> **	It does a binary search of the time_t space. Since time_t's are
1233,1238c1331,1332
< #ifndef WRONG
< #define WRONG	(-1)
< #endif /* !defined WRONG */
< 
< /*
< ** Simplified normalize logic courtesy Paul Eggert (eggert@twinsun.com).
---
> /*! \brief
> ** Simplified normalize logic courtesy Paul Eggert.
1241,1244c1335
< static int
< increment_overflow(number, delta)
< int *	number;
< int	delta;
---
> static int increment_overflow(int *number, int delta)
1253,1257c1344
< static int
< normalize_overflow(tensptr, unitsptr, base)
< int * const	tensptr;
< int * const	unitsptr;
< const int	base;
---
> static int long_increment_overflow(long *number, int delta)
1259c1346,1355
< 	register int	tensdelta;
---
> 	long	number0;
> 
> 	number0 = *number;
> 	*number += delta;
> 	return (*number < number0) != (delta < 0);
> }
> 
> static int normalize_overflow(int *tensptr, int *unitsptr, const int base)
> {
> 	int	tensdelta;
1268,1271c1364
< static int
< tmcomp(atmp, btmp)
< register const struct tm * const atmp;
< register const struct tm * const btmp;
---
> static int long_normalize_overflow(long *tensptr, int *unitsptr, const int base)
1273c1366,1377
< 	register int	result;
---
> 	int	tensdelta;
> 
> 	tensdelta = (*unitsptr >= 0) ?
> 		(*unitsptr / base) :
> 		(-1 - (-1 - *unitsptr) / base);
> 	*unitsptr -= tensdelta * base;
> 	return long_increment_overflow(tensptr, tensdelta);
> }
> 
> static int tmcomp(const struct tm *atmp, const struct tm *btmp)
> {
> 	int	result;
1284,1296c1388,1396
< static time_t
< time2(tmp, funcp, offset, okayp, zone)
< struct tm * const	tmp;
< void (* const		funcp) P((const time_t*, long, struct tm*, const char*));
< const long		offset;
< int * const		okayp;
< const char * const	zone;
< {
< 	register const struct state *	sp;
< 	register int			dir;
< 	register int			bits;
< 	register int			i, j ;
< 	register int			saved_seconds;
---
> static time_t time2sub(struct tm *tmp, struct tm * (* const funcp) (const time_t *, long, struct tm *, const struct state *), const long offset, int *okayp, const int do_norm_secs, const struct state *sp)
> {
> 	int			dir;
> 	int			i, j;
> 	int			saved_seconds;
> 	long			li;
> 	time_t			lo;
> 	time_t			hi;
> 	long				y;
1302a1403,1407
> 	if (do_norm_secs) {
> 		if (normalize_overflow(&yourtm.tm_min, &yourtm.tm_sec,
> 			SECSPERMIN))
> 				return WRONG;
> 	}
1307c1412,1413
< 	if (normalize_overflow(&yourtm.tm_year, &yourtm.tm_mon, MONSPERYEAR))
---
> 	y = yourtm.tm_year;
> 	if (long_normalize_overflow(&y, &yourtm.tm_mon, MONSPERYEAR))
1310c1416
< 	** Turn yourtm.tm_year into an actual year number for now.
---
> 	** Turn y into an actual year number for now.
1313c1419
< 	if (increment_overflow(&yourtm.tm_year, TM_YEAR_BASE))
---
> 	if (long_increment_overflow(&y, TM_YEAR_BASE))
1316c1422
< 		if (increment_overflow(&yourtm.tm_year, -1))
---
> 		if (long_increment_overflow(&y, -1))
1318,1319c1424,1425
< 		i = yourtm.tm_year + (1 < yourtm.tm_mon);
< 		yourtm.tm_mday += year_lengths[isleap(i)];
---
> 		li = y + (1 < yourtm.tm_mon);
> 		yourtm.tm_mday += year_lengths[isleap(li)];
1322,1324c1428,1430
< 		i = yourtm.tm_year + (1 < yourtm.tm_mon);
< 		yourtm.tm_mday -= year_lengths[isleap(i)];
< 		if (increment_overflow(&yourtm.tm_year, 1))
---
> 		li = y + (1 < yourtm.tm_mon);
> 		yourtm.tm_mday -= year_lengths[isleap(li)];
> 		if (long_increment_overflow(&y, 1))
1328c1434
< 		i = mon_lengths[isleap(yourtm.tm_year)][yourtm.tm_mon];
---
> 		i = mon_lengths[isleap(y)][yourtm.tm_mon];
1334c1440
< 			if (increment_overflow(&yourtm.tm_year, 1))
---
> 			if (long_increment_overflow(&y, 1))
1338c1444,1447
< 	if (increment_overflow(&yourtm.tm_year, -TM_YEAR_BASE))
---
> 	if (long_increment_overflow(&y, -TM_YEAR_BASE))
> 		return WRONG;
> 	yourtm.tm_year = y;
> 	if (yourtm.tm_year != y)
1340c1449,1451
< 	if (yourtm.tm_year + TM_YEAR_BASE < EPOCH_YEAR) {
---
> 	if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN)
> 		saved_seconds = 0;
> 	else if (y + TM_YEAR_BASE < EPOCH_YEAR) {
1358,1365c1469
< 	** Divide the search space in half
< 	** (this works whether time_t is signed or unsigned).
< 	*/
< 	bits = TYPE_BIT(time_t) - 1;
< 	/*
< 	** If time_t is signed, then 0 is just above the median,
< 	** assuming two's complement arithmetic.
< 	** If time_t is unsigned, then (1 << bits) is just above the median.
---
> 	** Do a binary search (this works whatever time_t's type is).
1367c1471,1484
< 	t = TYPE_SIGNED(time_t) ? 0 : (((time_t) 1) << bits);
---
> 	if (!TYPE_SIGNED(time_t)) {
> 		lo = 0;
> 		hi = lo - 1;
> 	} else if (!TYPE_INTEGRAL(time_t)) {
> 		if (sizeof(time_t) > sizeof(float))
> 			hi = (time_t) DBL_MAX;
> 		else	hi = (time_t) FLT_MAX;
> 		lo = -hi;
> 	} else {
> 		lo = 1;
> 		for (i = 0; i < (int) TYPE_BIT(time_t) - 1; ++i)
> 			lo *= 2;
> 		hi = -(lo + 1);
> 	}
1369,1370c1486,1498
< 		(*funcp)(&t, offset, &mytm, zone);
< 		dir = tmcomp(&mytm, &yourtm);
---
> 		t = lo / 2 + hi / 2;
> 		if (t < lo)
> 			t = lo;
> 		else if (t > hi)
> 			t = hi;
> 		if ((*funcp)(&t, offset, &mytm, sp) == NULL) {
> 			/*
> 			** Assume that t is too extreme to be represented in
> 			** a struct tm; arrange things so that it is less
> 			** extreme on the next pass.
> 			*/
> 			dir = (t > 0) ? 1 : -1;
> 		} else	dir = tmcomp(&mytm, &yourtm);
1372c1500,1511
< 			if (bits-- < 0)
---
> 			if (t == lo) {
> 				++t;
> 				if (t <= lo)
> 					return WRONG;
> 				++lo;
> 			} else if (t == hi) {
> 				--t;
> 				if (t >= hi)
> 					return WRONG;
> 				--hi;
> 			}
> 			if (lo > hi)
1374,1378c1513,1515
< 			if (bits < 0)
< 				--t; /* may be needed if new t is minimal */
< 			else if (dir > 0)
< 				t -= ((time_t) 1) << bits;
< 			else	t += ((time_t) 1) << bits;
---
> 			if (dir > 0)
> 				hi = t;
> 			else	lo = t;
1392,1396d1528
< 		sp = (const struct state *)
< 			(((void *) funcp == (void *) localsub) ?
< 			lclptr : gmtptr);
< 		if (sp == NULL)
< 			return WRONG;
1405c1537,1538
< 				(*funcp)(&newt, offset, &mytm, zone);
---
> 				if ((*funcp)(&newt, offset, &mytm, sp) == NULL)
> 					continue;
1424,1425c1557,1558
< 	(*funcp)(&t, offset, tmp, zone);
< 	*okayp = TRUE;
---
> 	if ((*funcp)(&t, offset, tmp, sp))
> 		*okayp = TRUE;
1429,1438c1562,1583
< static time_t
< time1(tmp, funcp, offset, zone)
< struct tm * const	tmp;
< void (* const		funcp) P((const time_t *, long, struct tm *, const char*));
< const long		offset;
< const char * const	zone;
< {
< 	register time_t			t;
< 	register const struct state *	sp;
< 	register int			samei, otheri;
---
> static time_t time2(struct tm *tmp, struct tm * (* const funcp) (const time_t*, long, struct tm*, const struct state *sp), const long offset, int *okayp, const struct state *sp)
> {
> 	time_t	t;
> 
> 	/*! \note
> 	** First try without normalization of seconds
> 	** (in case tm_sec contains a value associated with a leap second).
> 	** If that fails, try with normalization of seconds.
> 	*/
> 	t = time2sub(tmp, funcp, offset, okayp, FALSE, sp);
> 	return *okayp ? t : time2sub(tmp, funcp, offset, okayp, TRUE, sp);
> }
> 
> static time_t time1(struct tm *tmp, struct tm * (* const funcp) (const time_t *, long, struct tm *, const struct state *), const long offset, const struct state *sp)
> {
> 	time_t			t;
> 	int			samei, otheri;
> 	int			sameind, otherind;
> 	int			i;
> 	int			nseen;
> 	int				seen[TZ_MAX_TYPES];
> 	int				types[TZ_MAX_TYPES];
1443c1588
< 	t = time2(tmp, funcp, offset, &okay, zone);
---
> 	t = time2(tmp, funcp, offset, &okay, sp);
1446c1591
< 	** PCTS code courtesy Grant Sullivan (grant@osf.org).
---
> 	** PCTS code courtesy Grant Sullivan.
1463,1467d1607
< 	/*
< 	** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's.
< 	*/
< 	sp = (const struct state *) (((void *) funcp == (void *) localsub) ?
< 		lclptr : gmtptr);
1470c1610,1619
< 	for (samei = sp->typecnt - 1; samei >= 0; --samei) {
---
> 	for (i = 0; i < sp->typecnt; ++i)
> 		seen[i] = FALSE;
> 	nseen = 0;
> 	for (i = sp->timecnt - 1; i >= 0; --i)
> 		if (!seen[sp->types[i]]) {
> 			seen[sp->types[i]] = TRUE;
> 			types[nseen++] = sp->types[i];
> 		}
> 	for (sameind = 0; sameind < nseen; ++sameind) {
> 		samei = types[sameind];
1473c1622,1623
< 		for (otheri = sp->typecnt - 1; otheri >= 0; --otheri) {
---
> 		for (otherind = 0; otherind < nseen; ++otherind) {
> 			otheri = types[otherind];
1479c1629
< 			t = time2(tmp, funcp, offset, &okay, zone);
---
> 			t = time2(tmp, funcp, offset, &okay, sp);
1490,1504c1640,1645
< time_t
< ast_mktime(tmp,zone)
< struct tm * const	tmp;
< const char * const	zone;
< {
< 	time_t mktime_return_value;
< #ifdef	_THREAD_SAFE
< 	ast_mutex_lock(&lcl_mutex);
< #endif
< 	ast_tzset(!ast_strlen_zero(zone) ? zone : "/etc/localtime");
< 	mktime_return_value = time1(tmp, localsub, 0L, !ast_strlen_zero(zone) ? zone : "/etc/localtime");
< #ifdef	_THREAD_SAFE
< 	ast_mutex_unlock(&lcl_mutex);
< #endif
< 	return(mktime_return_value);
---
> time_t ast_mktime(struct tm *tmp, const char *zone)
> {
> 	const struct state *sp;
> 	if (!(sp = ast_tzset(zone)))
> 		return 0;
> 	return time1(tmp, localsub, 0L, sp);
Only in asterisk-1.4.11/main/stdtime: localtime.o
diff -r asterisk-1.4.11/main/stdtime/private.h asterisk-1.4.13/main/stdtime/private.h
1,2d0
< /* $FreeBSD: src/lib/libc/stdtime/private.h,v 1.6.8.1 2000/08/23 00:19:15 jhb Exp $ */
< 
5a4
> 
8c7
< ** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov).
---
> ** 1996-06-05 by Arthur David Olson.
11,29d9
< /* Stuff moved from Makefile.inc to reduce clutter */
< #ifndef __CYGWIN__
< #ifndef TM_GMTOFF
< #define TM_GMTOFF	tm_gmtoff
< #define TM_ZONE		tm_zone
< #endif
< #define STD_INSPIRED	1
< #define PCTS		1
< #define HAVE_LONG_DOUBLE 1
< #define HAVE_STRERROR	1
< #define	HAVE_UNISTD_H	1
< #define	LOCALE_HOME	_PATH_LOCALE
< #ifdef SOLARIS
< #define TZDIR		"/usr/share/lib/zoneinfo"
< #else
< #define TZDIR		"/usr/share/zoneinfo"
< #endif /* def SOLARIS */
< #endif /* ndef TM_GMTOFF */
< 
44,46c24
< /*
< static char	privatehid[] = "@(#)private.h	7.43";
< */
---
> static char	__attribute__((unused)) privatehid[] = "@(#)private.h	8.3";
49a28,29
> #define GRANDPARENTED	"Local time zone must be set--see zic manual page"
> 
62a43,46
> #ifndef HAVE_INCOMPATIBLE_CTIME_R
> #define HAVE_INCOMPATIBLE_CTIME_R	0
> #endif /* !defined INCOMPATIBLE_CTIME_R */
> 
68c52
< #define HAVE_STRERROR		0
---
> #define HAVE_STRERROR		1
70a55,66
> #ifndef HAVE_SYMLINK
> #define HAVE_SYMLINK		1
> #endif /* !defined HAVE_SYMLINK */
> 
> #ifndef HAVE_SYS_STAT_H
> #define HAVE_SYS_STAT_H		1
> #endif /* !defined HAVE_SYS_STAT_H */
> 
> #ifndef HAVE_SYS_WAIT_H
> #define HAVE_SYS_WAIT_H		1
> #endif /* !defined HAVE_SYS_WAIT_H */
> 
82a79,83
> #if HAVE_INCOMPATIBLE_CTIME_R
> #define asctime_r _incompatible_asctime_r
> #define ctime_r _incompatible_ctime_r
> #endif /* HAVE_INCOMPATIBLE_CTIME_R */
> 
91c92
< #include "limits.h"	/* for CHAR_BIT */
---
> #include "limits.h"	/* for CHAR_BIT et al. */
95c96
< #if HAVE_GETTEXT - 0
---
> #if HAVE_GETTEXT
97c98
< #endif /* HAVE_GETTEXT - 0 */
---
> #endif /* HAVE_GETTEXT */
99c100,111
< #if HAVE_UNISTD_H - 0
---
> #if HAVE_SYS_WAIT_H
> #include <sys/wait.h>	/* for WIFEXITED and WEXITSTATUS */
> #endif /* HAVE_SYS_WAIT_H */
> 
> #ifndef WIFEXITED
> #define WIFEXITED(status)	(((status) & 0xff) == 0)
> #endif /* !defined WIFEXITED */
> #ifndef WEXITSTATUS
> #define WEXITSTATUS(status)	(((status) >> 8) & 0xff)
> #endif /* !defined WEXITSTATUS */
> 
> #if HAVE_UNISTD_H
101c113
< #endif /* HAVE_UNISTD_H - 0 */
---
> #endif /* HAVE_UNISTD_H */
103c115
< #if !(HAVE_UNISTD_H - 0)
---
> #if !HAVE_UNISTD_H
110c122
< #endif /* !(HAVE_UNISTD_H - 0) */
---
> #endif /* !HAVE_UNISTD_H */
112c124
< /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX.  */
---
> /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
115a128,163
> ** Define HAVE_STDINT_H's default value here, rather than at the
> ** start, since __GLIBC__'s value depends on previously-included
> ** files.
> ** (glibc 2.1 and later have stdint.h, even with pre-C99 compilers.)
> */
> #ifndef HAVE_STDINT_H
> #define HAVE_STDINT_H \
> 	(199901 <= __STDC_VERSION__ || \
> 	2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
> #endif /* !defined HAVE_STDINT_H */
> 
> #if HAVE_STDINT_H
> #include "stdint.h"
> #endif /* !HAVE_STDINT_H */
> 
> #ifndef INT_FAST64_MAX
> /* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX.  */
> #if defined LLONG_MAX || defined __LONG_LONG_MAX__
> typedef long long	int_fast64_t;
> #else /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
> #if (LONG_MAX >> 31) < 0xffffffff
> Please use a compiler that supports a 64-bit integer type (or wider);
> you may need to compile with "-DHAVE_STDINT_H".
> #endif /* (LONG_MAX >> 31) < 0xffffffff */
> typedef long		int_fast64_t;
> #endif /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
> #endif /* !defined INT_FAST64_MAX */
> 
> #ifndef INT32_MAX
> #define INT32_MAX 0x7fffffff
> #endif /* !defined INT32_MAX */
> #ifndef INT32_MIN
> #define INT32_MIN (-1 - INT32_MAX)
> #endif /* !defined INT32_MIN */
> 
> /*
118a167,170
> /*
> ** If your compiler lacks prototypes, "#define P(x) ()".
> */
> 
120d171
< #ifdef __STDC__
122,125d172
< #endif /* defined __STDC__ */
< #ifndef __STDC__
< #define P(x)	()
< #endif /* !defined __STDC__ */
128a176,191
> ** SunOS 4.1.1 headers lack EXIT_SUCCESS.
> */
> 
> #ifndef EXIT_SUCCESS
> #define EXIT_SUCCESS	0
> #endif /* !defined EXIT_SUCCESS */
> 
> /*
> ** SunOS 4.1.1 headers lack EXIT_FAILURE.
> */
> 
> #ifndef EXIT_FAILURE
> #define EXIT_FAILURE	1
> #endif /* !defined EXIT_FAILURE */
> 
> /*
149a213,244
> ** SunOS 4.1.1 libraries lack remove.
> */
> 
> #ifndef remove
> extern int	unlink P((const char * filename));
> #define remove	unlink
> #endif /* !defined remove */
> 
> /*
> ** Some ancient errno.h implementations don't declare errno.
> ** But some newer errno.h implementations define it as a macro.
> ** Fix the former without affecting the latter.
> */
> 
> #ifndef errno
> extern int errno;
> #endif /* !defined errno */
> 
> /*
> ** Private function declarations.
> */
> 
> char *		icalloc P((int nelem, int elsize));
> char *		icatalloc P((char * old, const char * new));
> char *		icpyalloc P((const char * string));
> char *		imalloc P((int n));
> void *		irealloc P((void * pointer, int size));
> void		icfree P((char * pointer));
> void		ifree P((char * pointer));
> const char *	scheck P((const char * string, const char * format));
> 
> /*
168a264,272
> /*
> ** Since the definition of TYPE_INTEGRAL contains floating point numbers,
> ** it cannot be used in preprocessor directives.
> */
> 
> #ifndef TYPE_INTEGRAL
> #define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5)
> #endif /* !defined TYPE_INTEGRAL */
> 
177c281,282
<     ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type))
---
> 	((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
> 	1 + TYPE_SIGNED(type))
211c316
< #if HAVE_GETTEXT - 0
---
> #if HAVE_GETTEXT
213c318
< #else /* !(HAVE_GETTEXT - 0) */
---
> #else /* !HAVE_GETTEXT */
215c320
< #endif /* !(HAVE_GETTEXT - 0) */
---
> #endif /* !HAVE_GETTEXT */
221a327,353
> #if HAVE_INCOMPATIBLE_CTIME_R
> #undef asctime_r
> #undef ctime_r
> char *asctime_r P((struct tm const *, char *));
> char *ctime_r P((time_t const *, char *));
> #endif /* HAVE_INCOMPATIBLE_CTIME_R */
> 
> #ifndef YEARSPERREPEAT
> #define YEARSPERREPEAT		400	/* years before a Gregorian repeat */
> #endif /* !defined YEARSPERREPEAT */
> 
> /*
> ** The Gregorian year averages 365.2425 days, which is 31556952 seconds.
> */
> 
> #ifndef AVGSECSPERYEAR
> #define AVGSECSPERYEAR		31556952L
> #endif /* !defined AVGSECSPERYEAR */
> 
> #ifndef SECSPERREPEAT
> #define SECSPERREPEAT		((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
> #endif /* !defined SECSPERREPEAT */
> 
> #ifndef SECSPERREPEAT_BITS
> #define SECSPERREPEAT_BITS	34	/* ceil(log2(SECSPERREPEAT)) */
> #endif /* !defined SECSPERREPEAT_BITS */
> 
223c355
< ** UNIX was a registered trademark of UNIX System Laboratories in 1993.
---
> ** UNIX was a registered trademark of The Open Group in 2003.
diff -r asterisk-1.4.11/main/stdtime/tzfile.h asterisk-1.4.13/main/stdtime/tzfile.h
5,15c5,16
< /*! \brief
<  * This file is in the public domain, so clarified as of
<  * 1996-06-05 by 
<  * \author Arthur David Olson (arthur_david_olson@nih.gov).
<  *
<  * \note This header is for use ONLY with the time conversion code.
<  * There is no guarantee that it will remain unchanged,
<  * or that it will remain at all.
<  * Do NOT copy it to any system include directory.
<  * Thank you!
<  */
---
> /*
> ** This file is in the public domain, so clarified as of
> ** 1996-06-05 by Arthur David Olson.
> */
> 
> /*
> ** This header is for use ONLY with the time conversion code.
> ** There is no guarantee that it will remain unchanged,
> ** or that it will remain at all.
> ** Do NOT copy it to any system include directory.
> ** Thank you!
> */
23,25c24
< /*
< static char	tzfilehid[] = "@(#)tzfile.h	7.14";
< */
---
> static char	__attribute__((unused)) tzfilehid[] = "@(#)tzfile.h	8.1";
34c33,37
< #define TZDIR	"/usr/share/zoneinfo" /*!< Time zone object file directory */
---
> #ifdef SOLARIS
> #define TZDIR	"/usr/share/lib/zoneinfo"
> #else
> #define TZDIR	"/usr/share/zoneinfo"
> #endif /* defined SOLARIS */
38c41
< #define TZDEFAULT	"/etc/localtime"
---
> #define TZDEFAULT	"localtime"
52,53c55,57
<  	char	tzh_magic[4];		/* TZ_MAGIC */
< 	char	tzh_reserved[16];	/* reserved for future use */
---
> 	char	tzh_magic[4];		/* TZ_MAGIC */
> 	char	tzh_version[1];		/* '\0' or '2' as of 2005 */
> 	char	tzh_reserved[15];	/* reserved--must be zero */
87a92,101
> ** If tzh_version is '2' or greater, the above is followed by a second instance
> ** of tzhead and a second instance of the data in which each coded transition
> ** time uses 8 rather than 4 chars,
> ** then a POSIX-TZ-environment-variable-style string for use in handling
> ** instants after the last transition time stored in the file
> ** (with nothing between the newlines if there is no POSIX representation for
> ** such instants).
> */
> 
> /*
93,99c107
< /*
< ** The TZ_MAX_TIMES value below is enough to handle a bit more than a
< ** year's worth of solar time (corrected daily to the nearest second) or
< ** 138 years of Pacific Presidential Election time
< ** (where there are three time zone transitions every fourth year).
< */
< #define TZ_MAX_TIMES	370
---
> #define TZ_MAX_TIMES	1200
109c117
< ** as noted by Earl Chew <earl@hpato.aus.hp.com>.
---
> ** as noted by Earl Chew.
160,164d167
< /*
< ** Accurate only for the past couple of centuries;
< ** that will probably do.
< */
< 
167,168d169
< #ifndef USG
< 
170,185c171,180
< ** Use of the underscored variants may cause problems if you move your code to
< ** certain System-V-based systems; for maximum portability, use the
< ** underscore-free variants.  The underscored variants are provided for
< ** backward compatibility only; they may disappear from future versions of
< ** this file.
< */
< 
< #define SECS_PER_MIN	SECSPERMIN
< #define MINS_PER_HOUR	MINSPERHOUR
< #define HOURS_PER_DAY	HOURSPERDAY
< #define DAYS_PER_WEEK	DAYSPERWEEK
< #define DAYS_PER_NYEAR	DAYSPERNYEAR
< #define DAYS_PER_LYEAR	DAYSPERLYEAR
< #define SECS_PER_HOUR	SECSPERHOUR
< #define SECS_PER_DAY	SECSPERDAY
< #define MONS_PER_YEAR	MONSPERYEAR
---
> ** Since everything in isleap is modulo 400 (or a factor of 400), we know that
> **	isleap(y) == isleap(y % 400)
> ** and so
> **	isleap(a + b) == isleap((a + b) % 400)
> ** or
> **	isleap(a + b) == isleap(a % 400 + b % 400)
> ** This is true even if % means modulo rather than Fortran remainder
> ** (which is allowed by C89 but not C99).
> ** We use this to avoid addition overflow problems.
> */
187c182
< #endif /* !defined USG */
---
> #define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
Only in asterisk-1.4.11/main: strcompat.o
Only in asterisk-1.4.11/main: tdd.o
Only in asterisk-1.4.11/main: term.o
Only in asterisk-1.4.11/main: threadstorage.o
Only in asterisk-1.4.11/main: translate.o
Only in asterisk-1.4.11/main: udptl.o
Only in asterisk-1.4.11/main: ulaw.o
diff -r asterisk-1.4.11/main/utils.c asterisk-1.4.13/main/utils.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79904 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 85315 $")
540a541
> 		enum ast_lock_type type;
542c543
< 		unsigned int pending:1;
---
> 		int pending:2;
586,587c587,588
< void ast_store_lock_info(const char *filename, int line_num, 
< 	const char *func, const char *lock_name, void *lock_addr)
---
> void ast_store_lock_info(enum ast_lock_type type, const char *filename,
> 	int line_num, const char *func, const char *lock_name, void *lock_addr)
618a620
> 	lock_info->locks[i].type = type;
636a639,651
> void ast_mark_lock_failed(void)
> {
> 	struct thr_lock_info *lock_info;
> 
> 	if (!(lock_info = ast_threadstorage_get(&thread_lock_info, sizeof(*lock_info))))
> 		return;
> 
> 	pthread_mutex_lock(&lock_info->lock);
> 	lock_info->locks[lock_info->num_locks - 1].pending = -1;
> 	lock_info->locks[lock_info->num_locks - 1].times_locked--;
> 	pthread_mutex_unlock(&lock_info->lock);
> }
> 
674a690,703
> static const char *locktype2str(enum ast_lock_type type)
> {
> 	switch (type) {
> 	case AST_MUTEX:
> 		return "MUTEX";
> 	case AST_RDLOCK:
> 		return "RDLOCK";
> 	case AST_WRLOCK:
> 		return "WRLOCK";
> 	}
> 
> 	return "UNKNOWN";
> }
> 
690c719
< 		ast_cli(fd, "=== Thread ID: %d (%s)\n", (int) lock_info->thread_id,
---
> 		ast_cli(fd, "=== Thread ID: %u (%s)\n", (int) lock_info->thread_id,
694,696c723,727
< 			ast_cli(fd, "=== ---> %sLock #%d: %s %d %s %s %p (%d)\n", 
< 				lock_info->locks[i].pending ? "Waiting for " : "", i,
< 				lock_info->locks[i].file, lock_info->locks[i].line_num,
---
> 			ast_cli(fd, "=== ---> %sLock #%d (%s): %s %d %s %s %p (%d)\n", 
> 				lock_info->locks[i].pending > 0 ? "Waiting for " : lock_info->locks[i].pending < 0 ? "Tried and failed to get " : "", i,
> 				lock_info->locks[i].file, 
> 				locktype2str(lock_info->locks[i].type),
> 				lock_info->locks[i].line_num,
Only in asterisk-1.4.11/main: utils.o
diff -r asterisk-1.4.11/Makefile asterisk-1.4.13/Makefile
60a61,62
> export GREP
> export ID
75a78,82
> # Some build systems, such as the one in openwrt, like to pass custom target
> # CFLAGS and LDFLAGS in the COPTS and LDOPTS variables.
> ASTCFLAGS+=$(COPTS)
> ASTLDFLAGS+=$(LDOPTS)
> 
249a257
> SUBDIRS_DIST_CLEAN:=$(SUBDIRS:%=%-dist-clean)
355a364,366
> $(SUBDIRS_DIST_CLEAN):
> 	@$(MAKE) --no-print-directory -C $(@:-dist-clean=) dist-clean
> 
365c376
< distclean: clean
---
> distclean: $(SUBDIRS_DIST_CLEAN) clean
644,646c655
< 	@if ! cmp -s .cleancount .lastclean ; then \
< 		$(MAKE) clean;\
< 	fi
---
> 	@cmp -s .cleancount .lastclean || $(MAKE) clean
706c715
< menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml
---
> menuselect-tree: $(foreach dir,$(filter-out main,$(MOD_SUBDIRS)),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml configure
710c719
< .PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) menuselect.makeopts
---
> .PHONY: menuselect main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) menuselect.makeopts
diff -r asterisk-1.4.11/Makefile.rules asterisk-1.4.13/Makefile.rules
19a20,21
> .PHONY: dist-clean
> 
41d42
< ifeq ($(AST_DEVMODE),yes)
43,45d43
< else
< 	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
< endif
49d46
< ifeq ($(AST_DEVMODE),yes)
51,53d47
< else
< 	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS)
< endif
57d50
< ifeq ($(AST_DEVMODE),yes)
59,61d51
< else
< 	$(CMD_PREFIX) $(CXX) -o $@ -c $< $(PTHREAD_CFLAGS) $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations,$(ASTCFLAGS))
< endif
81a72,73
> 
> dist-clean::
diff -r asterisk-1.4.11/makeopts asterisk-1.4.13/makeopts
154a155,157
> USB_INCLUDE=
> USB_LIB=
> 
diff -r asterisk-1.4.11/makeopts.embed_rules asterisk-1.4.13/makeopts.embed_rules
0a1,8
> EMBED_LDSCRIPTS+=../res/modules.link
> EMBED_LDSCRIPTS+=../channels/modules.link
> EMBED_LDSCRIPTS+=../pbx/modules.link
> EMBED_LDSCRIPTS+=../apps/modules.link
> EMBED_LDSCRIPTS+=../codecs/modules.link
> EMBED_LDSCRIPTS+=../formats/modules.link
> EMBED_LDSCRIPTS+=../cdr/modules.link
> EMBED_LDSCRIPTS+=../funcs/modules.link
2,9c10,11
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
< EMBED_LDSCRIPTS+=
---
> EMBED_LDFLAGS+= ZAPTEL_LDFLAGS
> EMBED_LDFLAGS+= ZAPTEL_LDFLAGS OSSAUDIO_LDFLAGS IXJUSER_LDFLAGS
10a13,14
> EMBED_LDFLAGS+=RES_ADSI_LDFLAGS RES_ADSI_LDFLAGS RES_SMDI_LDFLAGS
> EMBED_LDFLAGS+= GSM_LDFLAGS
15,22c19,20
< EMBED_LDFLAGS+=
< EMBED_LDFLAGS+=
< EMBED_LDFLAGS+=
< EMBED_LDFLAGS+=
< EMBED_LIBS+=
< EMBED_LIBS+=
< EMBED_LIBS+=
< EMBED_LIBS+=
---
> EMBED_LIBS+= ZAPTEL_LIB
> EMBED_LIBS+= ZAPTEL_LIB OSSAUDIO_LIB IXJUSER_LIB
23a22,23
> EMBED_LIBS+=RES_ADSI_LIB RES_ADSI_LIB RES_SMDI_LIB
> EMBED_LIBS+= GSM_LIB
diff -r asterisk-1.4.11/makeopts.in asterisk-1.4.13/makeopts.in
154a155,157
> USB_INCLUDE=@USB_INCLUDE@
> USB_LIB=@USB_LIB@
> 
diff -r asterisk-1.4.11/menuselect/config.log asterisk-1.4.13/menuselect/config.log
381c381
< configure:5816: === configuring in mxml (/root/asterisk-1.4.11/menuselect/mxml)
---
> configure:5816: === configuring in mxml (/root/asterisk-1.4.13/menuselect/mxml)
diff -r asterisk-1.4.11/menuselect/config.status asterisk-1.4.13/menuselect/config.status
327c327
< ac_pwd='/root/asterisk-1.4.11/menuselect'
---
> ac_pwd='/root/asterisk-1.4.13/menuselect'
diff -r asterisk-1.4.11/menuselect/Makefile asterisk-1.4.13/menuselect/Makefile
82c82
< 	@if test -f mxml/Makefile ; then $(MAKE) -C mxml clean ; fi
---
> 	@if test -f mxml/Makefile ; then $(MAKE) -C mxml distclean ; fi
Only in asterisk-1.4.11/menuselect: menuselect
diff -r asterisk-1.4.11/menuselect/menuselect_curses.c asterisk-1.4.13/menuselect/menuselect_curses.c
47a48,55
> #define SCROLL_NONE     0
> #define SCROLL_DOWN     1
> 
> #define SCROLL_DOWN_INDICATOR "... More ..."
> 
> #define MIN(x,y) ((x)<(y)?(x):(y))
> #define MAX(x,y) ((x)<(y)?(y):(x))
> 
226c234
< static void draw_category_menu(WINDOW *menu, struct category *cat, int start, int end, int curopt, int changed)
---
> static void draw_category_menu(WINDOW *menu, struct category *cat, int start, int end, int curopt, int changed, int flags)
272c280
< 		if (i == end)
---
> 		if (i == end - (flags & SCROLL_DOWN ? 1 : 0))
275a284,288
> 	if (flags & SCROLL_DOWN) {
> 		wmove(menu, j, max_x / 2 - sizeof(SCROLL_DOWN_INDICATOR) / 2);
> 		waddstr(menu, SCROLL_DOWN_INDICATOR);
> 	}
> 
281a295,322
> static int move_up(int *current, int itemcount, int delta, int *start, int *end, int scroll)
> {
> 	if (*current > 0) {
> 		*current = MAX(*current - delta, 0);
> 		if (*current < *start) {
> 			int diff = *start - MAX(*start - delta, 0);
> 			*start  -= diff;
> 			*end    -= diff;
> 			return 1;
> 		}
> 	}
> 	return 0;
> }
> 
> static int move_down(int *current, int itemcount, int delta, int *start, int *end, int scroll)
> {
> 	if (*current < itemcount) {
> 		*current = MIN(*current + delta, itemcount);
> 		if (*current > *end - 1 - (scroll & SCROLL_DOWN ? 1 : 0)) {
> 			int diff = MIN(*end + delta - 1, itemcount) - *end + 1;
> 			*start  += diff;
> 			*end    += diff;
> 			return 1;
> 		}
> 	}
> 	return 0;
> }
> 
291a333
> 	int scroll = SCROLL_NONE;
302c344,348
< 	draw_category_menu(menu, cat, start, end, curopt, changed);
---
> 	if (maxopt > end) {
> 		scroll = SCROLL_DOWN;
> 	}
> 
> 	draw_category_menu(menu, cat, start, end, curopt, changed, scroll);
308,315c354
< 			if (curopt > 0) {
< 				curopt--;
< 				if (curopt < start) {
< 					start--;
< 					end--;
< 					changed = 1;
< 				}
< 			}
---
> 			changed = move_up(&curopt, maxopt, 1, &start, &end, scroll);
318,325c357,360
< 			if (curopt < maxopt) {
< 				curopt++;
< 				if (curopt > end - 1) {
< 					start++;
< 					end++;
< 					changed = 1;
< 				}
< 			}
---
> 			changed = move_down(&curopt, maxopt, 1, &start, &end, scroll);
> 			break;
> 		case KEY_PPAGE:
> 			changed = move_up(&curopt, maxopt, MIN(PAGE_OFFSET, max_y - TITLE_HEIGHT - 6 - (scroll & SCROLL_DOWN ? 1 : 0)), &start, &end, scroll);
328c363
< 			/* XXX Move down the list by PAGE_OFFSET */
---
> 			changed = move_down(&curopt, maxopt, MIN(PAGE_OFFSET, max_y - TITLE_HEIGHT - 6 - (scroll & SCROLL_DOWN ? 1 : 0)), &start, &end, scroll);
330,331c365,369
< 		case KEY_PPAGE:
< 			/* XXX Move up the list by PAGE_OFFSET */
---
> 		case KEY_HOME:
> 			changed = move_up(&curopt, maxopt, curopt, &start, &end, scroll);
> 			break;
> 		case KEY_END:
> 			changed = move_down(&curopt, maxopt, maxopt - curopt, &start, &end, scroll);
369,370c407,415
< 			break;	
< 		draw_category_menu(menu, cat, start, end, curopt, changed);
---
> 			break;
> 
> 		if (end <= maxopt) {
> 			scroll |= SCROLL_DOWN;
> 		} else {
> 			scroll &= ~SCROLL_DOWN;
> 		}
> 
> 		draw_category_menu(menu, cat, start, end, curopt, changed, scroll);
435a481,486
> 		case KEY_HOME:
> 			curopt = 0;
> 			break;
> 		case KEY_END:
> 			curopt = maxopt;
> 			break;
Only in asterisk-1.4.11/menuselect: menuselect_curses.o
Only in asterisk-1.4.11/menuselect: menuselect.o
Only in asterisk-1.4.11/menuselect/mxml: config.h
Only in asterisk-1.4.11/menuselect/mxml: config.log
Only in asterisk-1.4.11/menuselect/mxml: config.status
Only in asterisk-1.4.11/menuselect/mxml: libmxml.a
diff -r asterisk-1.4.11/menuselect/mxml/Makefile asterisk-1.4.13/menuselect/mxml/Makefile
26c26
< CFLAGS		=	$(OPTIM) -Wall  
---
> CFLAGS		=	$(OPTIM) -Wall -O -Wall -O -Wall    
121a122,123
> distclean: clean
> 	$(RM) mxml.list Makefile
diff -r asterisk-1.4.11/menuselect/mxml/Makefile.in asterisk-1.4.13/menuselect/mxml/Makefile.in
121a122,123
> distclean: clean
> 	$(RM) mxml.list Makefile
Only in asterisk-1.4.11/menuselect/mxml: mxml-attr.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-entity.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-file.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-index.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-node.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-private.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-search.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-set.o
Only in asterisk-1.4.11/menuselect/mxml: mxml-string.o
Only in asterisk-1.4.11/menuselect: strcompat.o
diff -r asterisk-1.4.11/menuselect.makeopts asterisk-1.4.13/menuselect.makeopts
1c1
< MENUSELECT_APPS=app_flash app_ivrdemo app_meetme app_osplookup app_page app_rpt app_skel app_zapbarge app_zapras app_zapscan 
---
> MENUSELECT_APPS=app_flash app_meetme app_osplookup app_page app_rpt app_zapbarge app_zapras app_zapscan 
3c3
< MENUSELECT_CHANNELS=chan_alsa chan_features chan_gtalk chan_h323 chan_misdn chan_nbs chan_vpb chan_zap 
---
> MENUSELECT_CHANNELS=chan_alsa chan_gtalk chan_h323 chan_misdn chan_nbs chan_vpb chan_zap 
10,15c10,15
< MENUSELECT_CFLAGS=LOADABLE_MODULES 
< MENUSELECT_EMBED=
< MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM 
< MENUSELECT_MOH=MOH-FREEPLAY-WAV 
< MENUSELECT_EXTRA_SOUNDS=
< MENUSELECT_BUILD_DEPS=res_adsi res_smdi DEBUG_THREADS 
---
> MENUSELECT_CFLAGS=DEBUG_CHANNEL_LOCKS DEBUG_SCHEDULER DEBUG_THREADS DEBUG_THREADLOCALS DETECT_DEADLOCKS DO_CRASH DONT_OPTIMIZE DUMP_SCHEDULER LOW_MEMORY MALLOC_DEBUG MTX_PROFILE RADIO_RELAX TRACE_FRAMES STATIC_BUILD LOADABLE_MODULES 
> MENUSELECT_EMBED=apps cdr channels codecs formats funcs pbx res 
> MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-WAV CORE-SOUNDS-EN-ULAW CORE-SOUNDS-EN-ALAW CORE-SOUNDS-EN-GSM CORE-SOUNDS-EN-G729 CORE-SOUNDS-EN-G722 CORE-SOUNDS-ES-WAV CORE-SOUNDS-ES-ULAW CORE-SOUNDS-ES-ALAW CORE-SOUNDS-ES-GSM CORE-SOUNDS-ES-G729 CORE-SOUNDS-ES-G722 CORE-SOUNDS-FR-WAV CORE-SOUNDS-FR-ULAW CORE-SOUNDS-FR-ALAW CORE-SOUNDS-FR-GSM CORE-SOUNDS-FR-G729 CORE-SOUNDS-FR-G722 
> MENUSELECT_MOH=MOH-FREEPLAY-WAV MOH-FREEPLAY-ULAW MOH-FREEPLAY-ALAW MOH-FREEPLAY-GSM MOH-FREEPLAY-G729 MOH-FREEPLAY-G722 
> MENUSELECT_EXTRA_SOUNDS=EXTRA-SOUNDS-EN-WAV EXTRA-SOUNDS-EN-ULAW EXTRA-SOUNDS-EN-ALAW EXTRA-SOUNDS-EN-GSM EXTRA-SOUNDS-EN-G729 EXTRA-SOUNDS-EN-G722 
> MENUSELECT_BUILD_DEPS=res_adsi res_smdi 
diff -r asterisk-1.4.11/pbx/ael/ael.flex asterisk-1.4.13/pbx/ael/ael.flex
59c59
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 59206 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84133 $")
64a65,69
> #if defined(__Darwin__) || defined(__CYGWIN__)
> #define GLOB_ABORTED GLOB_ABEND
> #endif
> # include <glob.h>
> 
109a115,116
> 	glob_t globbuf;        /* the current globbuf */
> 	int globbuf_pos;   /* where we are in the current globbuf */
114a122
> static void setup_filestack(char *fnamebuf, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t xscan, int create);
385d392
< 		FILE *in1;
387c394,398
< 		int error = 1;	/* don't use the file if set */
---
> 		int glob_ret;
> 		glob_t globbuf;        /* the current globbuf */
> 		int globbuf_pos = -1;   /* where we are in the current globbuf */
> 		globbuf.gl_offs = 0;	/* initialize it to silence gcc */
> 		
395,415c406,410
< 			int i;
< 			strncpy(fnamebuf, p1, p2-p1);
< 			fnamebuf[p2-p1] = 0;
< 			for (i=0; i<include_stack_index; i++) {
< 				if ( !strcmp(fnamebuf,include_stack[i].fname )) {
< 					ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Nice Try!!! But %s has already been included (perhaps by another file), and would cause an infinite loop of file inclusions!!! Include directive ignored\n",
< 						my_file, my_lineno, my_col, fnamebuf);
< 					break;
< 				}
< 			}
< 			if (i == include_stack_index)
< 				error = 0;	/* we can use this file */
< 		}
< 		if ( !error ) {	/* valid file name */
< 			*p2 = 0;
< 			/* relative vs. absolute */
< 			if (*(p1+1) != '/')
< 				snprintf(fnamebuf, sizeof(fnamebuf), "%s/%s", ast_config_AST_CONFIG_DIR, p1 + 1);
< 			else
< #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
< 				strncpy(fnamebuf, p1 + 1, sizeof(fnamebuf) - 1);
---
> 			strncpy(fnamebuf, p1+1, p2-p1-1);
> 			fnamebuf[p2-p1-1] = 0;
> 		
> #ifdef SOLARIS
> 			glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf);
417c412
< 				ast_copy_string(fnamebuf, p1 + 1, sizeof(fnamebuf));
---
> 			glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf);
419,421c414,422
< 			in1 = fopen( fnamebuf, "r" );
< 			if ( ! in1 ) {
< 				ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Couldn't find the include file: %s; ignoring the Include directive!\n", my_file, my_lineno, my_col, fnamebuf);
---
> 			if (glob_ret == GLOB_NOSPACE) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: Not enough memory\n", fnamebuf);
> 			} else if (glob_ret  == GLOB_ABORTED) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: Read error\n", fnamebuf);
> 			} else if (glob_ret  == GLOB_NOMATCH) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: No matches!\n", fnamebuf);
423,442c424
< 				char *buffer;
< 				struct stat stats;
< 				stat(fnamebuf, &stats);
< 				buffer = (char*)malloc(stats.st_size+1);
< 				fread(buffer, 1, stats.st_size, in1);
< 				buffer[stats.st_size] = 0;
< 				ast_log(LOG_NOTICE,"  --Read in included file %s, %d chars\n",fnamebuf, (int)stats.st_size);
< 				fclose(in1);
< 
< 				include_stack[include_stack_index].fname = my_file;
< 				my_file = strdup(fnamebuf);
< 				include_stack[include_stack_index].lineno = my_lineno;
< 				include_stack[include_stack_index].colno = my_col+yyleng;
< 				include_stack[include_stack_index++].bufstate = YY_CURRENT_BUFFER;
< 
< 				yy_switch_to_buffer(ael_yy_scan_string (buffer ,yyscanner),yyscanner);
< 				free(buffer);
< 				my_lineno = 1;
< 				my_col = 1;
< 				BEGIN(INITIAL);
---
> 			  globbuf_pos = 0;
444a427,429
> 		if (globbuf_pos > -1) {
> 			setup_filestack(fnamebuf, sizeof(fnamebuf), &globbuf, 0, yyscanner, 1);
> 		}
446a432
> 
448,450c434,435
< 		if ( --include_stack_index < 0 ) {
< 			yyterminate();
< 		} else {
---
> 		char fnamebuf[2048];
> 		if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
451a437
> 			my_file = 0;
453,456c439,463
< 			yy_switch_to_buffer(include_stack[include_stack_index].bufstate, yyscanner );
< 			my_lineno = include_stack[include_stack_index].lineno;
< 			my_col    = include_stack[include_stack_index].colno;
< 			my_file   = include_stack[include_stack_index].fname;
---
> 			include_stack[include_stack_index-1].globbuf_pos++;
> 			setup_filestack(fnamebuf, sizeof(fnamebuf), &include_stack[include_stack_index-1].globbuf, include_stack[include_stack_index-1].globbuf_pos, yyscanner, 0);
> 			/* finish this */			
> 			
> 		} else {
> 			if (include_stack[include_stack_index].fname) {
> 				free(include_stack[include_stack_index].fname);
> 				include_stack[include_stack_index].fname = 0;
> 			}
> 			if ( --include_stack_index < 0 ) {
> 				yyterminate();
> 			} else {
> 				if (my_file) {
> 					free(my_file);
> 					my_file = 0;
> 				}
> 				globfree(&include_stack[include_stack_index].globbuf);
> 				include_stack[include_stack_index].globbuf_pos = -1;
> 				
> 				yy_delete_buffer( YY_CURRENT_BUFFER, yyscanner );
> 				yy_switch_to_buffer(include_stack[include_stack_index].bufstate, yyscanner );
> 				my_lineno = include_stack[include_stack_index].lineno;
> 				my_col    = include_stack[include_stack_index].colno;
> 				my_file   = strdup(include_stack[include_stack_index].fname);
> 			}
570a578,579
> 	if (my_file)
> 		free(my_file);
594a604,676
> 
> static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t yyscanner, int create)
> {
> 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
> 	int error, i;
> 	FILE *in1;
> 	char fnamebuf[2048];
> 
> 	if (globbuf && globbuf->gl_pathv && globbuf->gl_pathc > 0)
> #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
> 			strncpy(fnamebuf, globbuf->gl_pathv[globpos], fnamebuf_siz);
> #else
> 			ast_copy_string(fnamebuf, globbuf->gl_pathv[globpos], fnamebuf_siz);
> #endif
> 	else {
> 		ast_log(LOG_ERROR,"Include file name not present!\n");
> 		return;
> 	}
> 	for (i=0; i<include_stack_index; i++) {
> 		if ( !strcmp(fnamebuf,include_stack[i].fname )) {
> 			ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Nice Try!!! But %s has already been included (perhaps by another file), and would cause an infinite loop of file inclusions!!! Include directive ignored\n",
> 				my_file, my_lineno, my_col, fnamebuf);
> 			break;
> 		}
> 	}
> 	error = 1;
> 	if (i == include_stack_index)
> 		error = 0;	/* we can use this file */
> 	if ( !error ) {	/* valid file name */
> 		/* relative vs. absolute */
> 		if (fnamebuf[0] != '/')
> 			snprintf(fnamebuf2, fnamebuf_siz, "%s/%s", ast_config_AST_CONFIG_DIR, fnamebuf);
> 		else
> #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
> 			strncpy(fnamebuf2, fnamebuf, fnamebuf_siz);
> #else
> 			ast_copy_string(fnamebuf2, fnamebuf, fnamebuf_siz);
> #endif
> 		in1 = fopen( fnamebuf2, "r" );
> 
> 		if ( ! in1 ) {
> 			ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Couldn't find the include file: %s; ignoring the Include directive!\n", my_file, my_lineno, my_col, fnamebuf2);
> 		} else {
> 			char *buffer;
> 			struct stat stats;
> 			stat(fnamebuf2, &stats);
> 			buffer = (char*)malloc(stats.st_size+1);
> 			fread(buffer, 1, stats.st_size, in1);
> 			buffer[stats.st_size] = 0;
> 			ast_log(LOG_NOTICE,"  --Read in included file %s, %d chars\n",fnamebuf2, (int)stats.st_size);
> 			fclose(in1);
> 			if (my_file)
> 				free(my_file);
> 			my_file = strdup(fnamebuf2);
> 			include_stack[include_stack_index].fname = strdup(my_file);
> 			include_stack[include_stack_index].lineno = my_lineno;
> 			include_stack[include_stack_index].colno = my_col+yyleng;
> 			if (create)
> 				include_stack[include_stack_index].globbuf = *globbuf;
> 
> 			include_stack[include_stack_index].globbuf_pos = 0;
> 
> 			include_stack[include_stack_index].bufstate = YY_CURRENT_BUFFER;
> 			if (create)
> 				include_stack_index++;
> 			yy_switch_to_buffer(ael_yy_scan_string (buffer ,yyscanner),yyscanner);
> 			free(buffer);
> 			my_lineno = 1;
> 			my_col = 1;
> 			BEGIN(INITIAL);
> 		}
> 	}
> }
diff -r asterisk-1.4.11/pbx/ael/ael_lex.c asterisk-1.4.13/pbx/ael/ael_lex.c
779c779
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 59206 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84133 $")
784a785,789
> #if defined(__Darwin__) || defined(__CYGWIN__)
> #define GLOB_ABORTED GLOB_ABEND
> #endif
> # include <glob.h>
> 
829a835,836
> 	glob_t globbuf;        /* the current globbuf */
> 	int globbuf_pos;   /* where we are in the current globbuf */
834a842
> static void setup_filestack(char *fnamebuf, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t xscan, int create);
884c892
< #line 884 "ael_lex.c"
---
> #line 892 "ael_lex.c"
891a900
> #ifndef YY_NO_UNISTD_H
896a906
> #endif
939a950,951
> static int yy_init_globals (yyscan_t yyscanner );
> 
1090c1102,1103
< extern int ael_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
---
> extern int ael_yylex \
>                (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
1092c1105,1106
< #define YY_DECL int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
---
> #define YY_DECL int ael_yylex \
>                (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
1119c1133
< #line 173 "ael.flex"
---
> #line 181 "ael.flex"
1122c1136
< #line 1122 "ael_lex.c"
---
> #line 1136 "ael_lex.c"
1213c1227
< #line 175 "ael.flex"
---
> #line 183 "ael.flex"
1218c1232
< #line 176 "ael.flex"
---
> #line 184 "ael.flex"
1223c1237
< #line 177 "ael.flex"
---
> #line 185 "ael.flex"
1228c1242
< #line 178 "ael.flex"
---
> #line 186 "ael.flex"
1233c1247
< #line 179 "ael.flex"
---
> #line 187 "ael.flex"
1238c1252
< #line 180 "ael.flex"
---
> #line 188 "ael.flex"
1243c1257
< #line 181 "ael.flex"
---
> #line 189 "ael.flex"
1248c1262
< #line 182 "ael.flex"
---
> #line 190 "ael.flex"
1253c1267
< #line 183 "ael.flex"
---
> #line 191 "ael.flex"
1258c1272
< #line 184 "ael.flex"
---
> #line 192 "ael.flex"
1263c1277
< #line 185 "ael.flex"
---
> #line 193 "ael.flex"
1268c1282
< #line 186 "ael.flex"
---
> #line 194 "ael.flex"
1273c1287
< #line 187 "ael.flex"
---
> #line 195 "ael.flex"
1278c1292
< #line 188 "ael.flex"
---
> #line 196 "ael.flex"
1283c1297
< #line 189 "ael.flex"
---
> #line 197 "ael.flex"
1288c1302
< #line 190 "ael.flex"
---
> #line 198 "ael.flex"
1293c1307
< #line 191 "ael.flex"
---
> #line 199 "ael.flex"
1298c1312
< #line 192 "ael.flex"
---
> #line 200 "ael.flex"
1303c1317
< #line 193 "ael.flex"
---
> #line 201 "ael.flex"
1308c1322
< #line 194 "ael.flex"
---
> #line 202 "ael.flex"
1313c1327
< #line 195 "ael.flex"
---
> #line 203 "ael.flex"
1318c1332
< #line 196 "ael.flex"
---
> #line 204 "ael.flex"
1323c1337
< #line 197 "ael.flex"
---
> #line 205 "ael.flex"
1328c1342
< #line 198 "ael.flex"
---
> #line 206 "ael.flex"
1333c1347
< #line 199 "ael.flex"
---
> #line 207 "ael.flex"
1338c1352
< #line 200 "ael.flex"
---
> #line 208 "ael.flex"
1343c1357
< #line 201 "ael.flex"
---
> #line 209 "ael.flex"
1348c1362
< #line 202 "ael.flex"
---
> #line 210 "ael.flex"
1353c1367
< #line 203 "ael.flex"
---
> #line 211 "ael.flex"
1358c1372
< #line 204 "ael.flex"
---
> #line 212 "ael.flex"
1363c1377
< #line 205 "ael.flex"
---
> #line 213 "ael.flex"
1368c1382
< #line 206 "ael.flex"
---
> #line 214 "ael.flex"
1373c1387
< #line 207 "ael.flex"
---
> #line 215 "ael.flex"
1378c1392
< #line 208 "ael.flex"
---
> #line 216 "ael.flex"
1383c1397
< #line 209 "ael.flex"
---
> #line 217 "ael.flex"
1388c1402
< #line 210 "ael.flex"
---
> #line 218 "ael.flex"
1393c1407
< #line 211 "ael.flex"
---
> #line 219 "ael.flex"
1398c1412
< #line 212 "ael.flex"
---
> #line 220 "ael.flex"
1403c1417
< #line 213 "ael.flex"
---
> #line 221 "ael.flex"
1408c1422
< #line 214 "ael.flex"
---
> #line 222 "ael.flex"
1413c1427
< #line 216 "ael.flex"
---
> #line 224 "ael.flex"
1419c1433
< #line 217 "ael.flex"
---
> #line 225 "ael.flex"
1424c1438
< #line 218 "ael.flex"
---
> #line 226 "ael.flex"
1430c1444
< #line 219 "ael.flex"
---
> #line 227 "ael.flex"
1435c1449
< #line 220 "ael.flex"
---
> #line 228 "ael.flex"
1441c1455
< #line 222 "ael.flex"
---
> #line 230 "ael.flex"
1446c1460
< #line 223 "ael.flex"
---
> #line 231 "ael.flex"
1451c1465
< #line 224 "ael.flex"
---
> #line 232 "ael.flex"
1456c1470
< #line 226 "ael.flex"
---
> #line 234 "ael.flex"
1474c1488
< #line 242 "ael.flex"
---
> #line 250 "ael.flex"
1500c1514
< #line 264 "ael.flex"
---
> #line 272 "ael.flex"
1512c1526
< #line 272 "ael.flex"
---
> #line 280 "ael.flex"
1537c1551
< #line 294 "ael.flex"
---
> #line 302 "ael.flex"
1549c1563
< #line 302 "ael.flex"
---
> #line 310 "ael.flex"
1577c1591
< #line 326 "ael.flex"
---
> #line 334 "ael.flex"
1595c1609
< #line 340 "ael.flex"
---
> #line 348 "ael.flex"
1616c1630
< #line 357 "ael.flex"
---
> #line 365 "ael.flex"
1626c1640
< #line 363 "ael.flex"
---
> #line 371 "ael.flex"
1642c1656
< #line 375 "ael.flex"
---
> #line 383 "ael.flex"
1655c1669
< #line 384 "ael.flex"
---
> #line 392 "ael.flex"
1657d1670
< 		FILE *in1;
1659c1672,1676
< 		int error = 1;	/* don't use the file if set */
---
> 		int glob_ret;
> 		glob_t globbuf;        /* the current globbuf */
> 		int globbuf_pos = -1;   /* where we are in the current globbuf */
> 		globbuf.gl_offs = 0;	/* initialize it to silence gcc */
> 		
1667,1687c1684,1688
< 			int i;
< 			strncpy(fnamebuf, p1, p2-p1);
< 			fnamebuf[p2-p1] = 0;
< 			for (i=0; i<include_stack_index; i++) {
< 				if ( !strcmp(fnamebuf,include_stack[i].fname )) {
< 					ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Nice Try!!! But %s has already been included (perhaps by another file), and would cause an infinite loop of file inclusions!!! Include directive ignored\n",
< 						my_file, my_lineno, my_col, fnamebuf);
< 					break;
< 				}
< 			}
< 			if (i == include_stack_index)
< 				error = 0;	/* we can use this file */
< 		}
< 		if ( !error ) {	/* valid file name */
< 			*p2 = 0;
< 			/* relative vs. absolute */
< 			if (*(p1+1) != '/')
< 				snprintf(fnamebuf, sizeof(fnamebuf), "%s/%s", ast_config_AST_CONFIG_DIR, p1 + 1);
< 			else
< #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
< 				strncpy(fnamebuf, p1 + 1, sizeof(fnamebuf) - 1);
---
> 			strncpy(fnamebuf, p1+1, p2-p1-1);
> 			fnamebuf[p2-p1-1] = 0;
> 		
> #ifdef SOLARIS
> 			glob_ret = glob(fnamebuf, GLOB_NOCHECK, NULL, &globbuf);
1689c1690
< 				ast_copy_string(fnamebuf, p1 + 1, sizeof(fnamebuf));
---
> 			glob_ret = glob(fnamebuf, GLOB_NOMAGIC|GLOB_BRACE, NULL, &globbuf);
1691,1693c1692,1700
< 			in1 = fopen( fnamebuf, "r" );
< 			if ( ! in1 ) {
< 				ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Couldn't find the include file: %s; ignoring the Include directive!\n", my_file, my_lineno, my_col, fnamebuf);
---
> 			if (glob_ret == GLOB_NOSPACE) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: Not enough memory\n", fnamebuf);
> 			} else if (glob_ret  == GLOB_ABORTED) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: Read error\n", fnamebuf);
> 			} else if (glob_ret  == GLOB_NOMATCH) {
> 				ast_log(LOG_WARNING,
> 					"Glob Expansion of pattern '%s' failed: No matches!\n", fnamebuf);
1695,1714c1702
< 				char *buffer;
< 				struct stat stats;
< 				stat(fnamebuf, &stats);
< 				buffer = (char*)malloc(stats.st_size+1);
< 				fread(buffer, 1, stats.st_size, in1);
< 				buffer[stats.st_size] = 0;
< 				ast_log(LOG_NOTICE,"  --Read in included file %s, %d chars\n",fnamebuf, (int)stats.st_size);
< 				fclose(in1);
< 
< 				include_stack[include_stack_index].fname = my_file;
< 				my_file = strdup(fnamebuf);
< 				include_stack[include_stack_index].lineno = my_lineno;
< 				include_stack[include_stack_index].colno = my_col+yyleng;
< 				include_stack[include_stack_index++].bufstate = YY_CURRENT_BUFFER;
< 
< 				ael_yy_switch_to_buffer(ael_yy_scan_string (buffer ,yyscanner),yyscanner);
< 				free(buffer);
< 				my_lineno = 1;
< 				my_col = 1;
< 				BEGIN(INITIAL);
---
> 			  globbuf_pos = 0;
1716a1705,1707
> 		if (globbuf_pos > -1) {
> 			setup_filestack(fnamebuf, sizeof(fnamebuf), &globbuf, 0, yyscanner, 1);
> 		}
1724c1715
< #line 447 "ael.flex"
---
> #line 433 "ael.flex"
1726,1728c1717,1718
< 		if ( --include_stack_index < 0 ) {
< 			yyterminate();
< 		} else {
---
> 		char fnamebuf[2048];
> 		if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
1729a1720
> 			my_file = 0;
1731,1734c1722,1746
< 			ael_yy_switch_to_buffer(include_stack[include_stack_index].bufstate,yyscanner );
< 			my_lineno = include_stack[include_stack_index].lineno;
< 			my_col    = include_stack[include_stack_index].colno;
< 			my_file   = include_stack[include_stack_index].fname;
---
> 			include_stack[include_stack_index-1].globbuf_pos++;
> 			setup_filestack(fnamebuf, sizeof(fnamebuf), &include_stack[include_stack_index-1].globbuf, include_stack[include_stack_index-1].globbuf_pos, yyscanner, 0);
> 			/* finish this */			
> 			
> 		} else {
> 			if (include_stack[include_stack_index].fname) {
> 				free(include_stack[include_stack_index].fname);
> 				include_stack[include_stack_index].fname = 0;
> 			}
> 			if ( --include_stack_index < 0 ) {
> 				yyterminate();
> 			} else {
> 				if (my_file) {
> 					free(my_file);
> 					my_file = 0;
> 				}
> 				globfree(&include_stack[include_stack_index].globbuf);
> 				include_stack[include_stack_index].globbuf_pos = -1;
> 				
> 				ael_yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner );
> 				ael_yy_switch_to_buffer(include_stack[include_stack_index].bufstate,yyscanner );
> 				my_lineno = include_stack[include_stack_index].lineno;
> 				my_col    = include_stack[include_stack_index].colno;
> 				my_file   = strdup(include_stack[include_stack_index].fname);
> 			}
1740c1752
< #line 460 "ael.flex"
---
> #line 467 "ael.flex"
1743c1755
< #line 1743 "ael_lex.c"
---
> #line 1755 "ael_lex.c"
1929c1941
< 			size_t num_to_read =
---
> 			int num_to_read =
2494c2506
< YY_BUFFER_STATE ael_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
---
> YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
2497c2509
< 	return ael_yy_scan_bytes(str,strlen(str) ,yyscanner);
---
> 	return ael_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
2879c2891
< #line 460 "ael.flex"
---
> #line 467 "ael.flex"
2991a3004,3005
> 	if (my_file)
> 		free(my_file);
3016a3031,3103
> static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t yyscanner, int create)
> {
> 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
> 	int error, i;
> 	FILE *in1;
> 	char fnamebuf[2048];
> 
> 	if (globbuf && globbuf->gl_pathv && globbuf->gl_pathc > 0)
> #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
> 			strncpy(fnamebuf, globbuf->gl_pathv[globpos], fnamebuf_siz);
> #else
> 			ast_copy_string(fnamebuf, globbuf->gl_pathv[globpos], fnamebuf_siz);
> #endif
> 	else {
> 		ast_log(LOG_ERROR,"Include file name not present!\n");
> 		return;
> 	}
> 	for (i=0; i<include_stack_index; i++) {
> 		if ( !strcmp(fnamebuf,include_stack[i].fname )) {
> 			ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Nice Try!!! But %s has already been included (perhaps by another file), and would cause an infinite loop of file inclusions!!! Include directive ignored\n",
> 				my_file, my_lineno, my_col, fnamebuf);
> 			break;
> 		}
> 	}
> 	error = 1;
> 	if (i == include_stack_index)
> 		error = 0;	/* we can use this file */
> 	if ( !error ) {	/* valid file name */
> 		/* relative vs. absolute */
> 		if (fnamebuf[0] != '/')
> 			snprintf(fnamebuf2, fnamebuf_siz, "%s/%s", ast_config_AST_CONFIG_DIR, fnamebuf);
> 		else
> #if defined(STANDALONE) || defined(LOW_MEMORY) || defined(STANDALONE_AEL)
> 			strncpy(fnamebuf2, fnamebuf, fnamebuf_siz);
> #else
> 			ast_copy_string(fnamebuf2, fnamebuf, fnamebuf_siz);
> #endif
> 		in1 = fopen( fnamebuf2, "r" );
> 
> 		if ( ! in1 ) {
> 			ast_log(LOG_ERROR,"File=%s, line=%d, column=%d: Couldn't find the include file: %s; ignoring the Include directive!\n", my_file, my_lineno, my_col, fnamebuf2);
> 		} else {
> 			char *buffer;
> 			struct stat stats;
> 			stat(fnamebuf2, &stats);
> 			buffer = (char*)malloc(stats.st_size+1);
> 			fread(buffer, 1, stats.st_size, in1);
> 			buffer[stats.st_size] = 0;
> 			ast_log(LOG_NOTICE,"  --Read in included file %s, %d chars\n",fnamebuf2, (int)stats.st_size);
> 			fclose(in1);
> 			if (my_file)
> 				free(my_file);
> 			my_file = strdup(fnamebuf2);
> 			include_stack[include_stack_index].fname = strdup(my_file);
> 			include_stack[include_stack_index].lineno = my_lineno;
> 			include_stack[include_stack_index].colno = my_col+yyleng;
> 			if (create)
> 				include_stack[include_stack_index].globbuf = *globbuf;
> 
> 			include_stack[include_stack_index].globbuf_pos = 0;
> 
> 			include_stack[include_stack_index].bufstate = YY_CURRENT_BUFFER;
> 			if (create)
> 				include_stack_index++;
> 			ael_yy_switch_to_buffer(ael_yy_scan_string (buffer ,yyscanner),yyscanner);
> 			free(buffer);
> 			my_lineno = 1;
> 			my_col = 1;
> 			BEGIN(INITIAL);
> 		}
> 	}
> }
> 
Only in asterisk-1.4.11/pbx/ael: ael_lex.o
diff -r asterisk-1.4.11/pbx/ael/ael.tab.c asterisk-1.4.13/pbx/ael/ael.tab.c
180c180
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 67526 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84239 $")
202c202
< static char *ael_token_subst(char *mess);
---
> static char *ael_token_subst(const char *mess);
493c493
< #define YYLAST   350
---
> #define YYLAST   302
502c502
< #define YYNSTATES  267
---
> #define YYNSTATES  271
575c575
<       52,    51,    -1,    51,     1,    -1,    -1,    41,     9,    53,
---
>       52,    51,    -1,     1,    51,    -1,    -1,    41,     9,    53,
577c577
<       54,     1,    -1,    -1,    56,    55,    -1,    55,     1,    -1,
---
>       54,     1,    -1,    -1,    56,    55,    -1,     1,    55,    -1,
583c583
<       59,    -1,    59,     1,    -1,    67,    11,    67,    11,    67,
---
>       59,    -1,     1,    59,    -1,    67,    11,    67,    11,    67,
611c611
<        8,    92,    -1,    92,     1,    -1,    46,    -1,    46,    13,
---
>        8,    92,    -1,     1,    92,    -1,    46,    -1,    46,    13,
719,744c719,745
<        7,     8,     0,    17,     1,     5,     4,     0,    22,     0,
<        0,    17,    11,    10,     0,    23,     0,    20,    19,    16,
<        0,    26,    25,     0,     0,     0,    36,     0,     0,     0,
<        0,     0,     0,     0,    34,     0,    26,    33,    29,    31,
<       32,    30,   116,    24,     0,     0,     0,     0,     0,   123,
<      123,     0,    35,     0,    28,    12,     0,    42,    85,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<        0,     0,     0,    66,     0,    75,   118,   109,     0,     0,
<      116,   119,    21,     0,     0,     0,    55,     0,     0,     0,
<        0,   133,   127,     0,     0,    38,     0,    42,     0,     0,
<       48,     0,    50,     0,    51,     0,    61,    88,     0,    95,
<        0,    82,    81,    83,    70,     0,     0,   102,    78,    69,
<       87,   105,    53,   108,     0,    77,    79,    15,   117,    37,
<        0,    39,     0,     0,    56,   123,     0,   126,   121,   122,
<        0,   129,   131,   132,     0,    44,    65,     0,    99,    76,
<        0,   111,    46,     0,     0,     0,     0,     0,    62,     0,
<        0,     0,    67,     0,    97,    68,     0,    74,    42,   103,
<        0,    84,    54,   104,   107,     0,     0,     0,    57,     0,
<        0,   128,   130,   101,   109,     0,     0,     0,     0,     0,
<      111,    59,     0,    52,     0,     0,     0,    90,    63,    89,
<       96,     0,     0,     0,    86,   106,   110,     0,     0,     0,
<      123,     0,    49,     0,     0,    42,    64,   112,    60,    58,
<        0,     0,     0,     0,     0,     0,    98,    71,   120,    80,
<        0,    40,     0,   100,    42,    42,     0,     0,     0,    94,
<       93,    92,    91,     0,    41,     0,     0,     0,    45,     0,
<        0,    72,    47,     0,     0,     0,    73
---
>        7,     8,     0,     0,     1,     5,     4,     0,    22,     0,
>        0,     0,     0,    11,    10,     0,    23,     0,    19,    20,
>       16,    18,     0,    25,     0,     0,     0,     0,    36,     0,
>        0,     0,     0,     0,     0,     0,    34,     0,     0,    33,
>       29,    31,    32,    30,   116,    24,     0,    28,     0,     0,
>        0,     0,     0,     0,     0,    35,     0,    12,    27,     0,
>       85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
>        0,     0,     0,     0,     0,    66,     0,    75,   118,   109,
>        0,     0,   116,   119,    21,     0,     0,     0,    55,     0,
>        0,     0,     0,     0,   133,   127,     0,     0,    38,     0,
>        0,     0,     0,     0,    48,     0,    50,     0,    51,     0,
>       61,    88,     0,    95,     0,    82,    81,    83,    70,     0,
>        0,   102,    78,    69,    87,   105,    53,   108,     0,    77,
>       79,    15,   117,    37,     0,    39,     0,     0,    56,   126,
>        0,     0,   121,   122,     0,   129,   131,   132,     0,    44,
>       65,    43,    99,    76,     0,   111,    46,     0,     0,     0,
>        0,     0,    62,     0,     0,     0,    67,     0,    97,    68,
>        0,    74,     0,   103,     0,    84,    54,   104,   107,     0,
>        0,     0,    57,   124,     0,   128,   130,   101,   109,     0,
>        0,     0,     0,     0,   111,    59,     0,    52,     0,     0,
>        0,    90,    63,    89,    96,     0,     0,     0,    86,   106,
>      110,     0,     0,     0,     0,     0,    49,     0,     0,     0,
>       64,   112,    60,    58,     0,     0,     0,     0,     0,     0,
>       98,    71,   120,    80,     0,    40,   125,   100,     0,     0,
>      114,     0,     0,    94,    93,    92,    91,     0,    41,   113,
>      115,     0,    45,     0,     0,    72,    47,     0,     0,     0,
>       73
750,755c751,756
<       -1,     5,     6,     7,   102,     8,     9,    10,    11,    20,
<       83,    35,    26,    45,    46,    47,    48,   106,   163,   164,
<      111,   160,    84,   133,    97,   165,   117,    85,   107,   176,
<      253,   263,   185,   181,   118,   174,   120,   109,   194,    87,
<      179,    88,   216,   134,   199,   200,    89,    90,    49,    50,
<       99,   103,   104,    51
---
>       -1,     5,     6,     7,   105,     8,     9,    10,    11,    21,
>       85,    36,    27,    47,    48,    49,    50,   110,   167,   168,
>      115,   164,    86,   137,    99,   169,   121,    87,   111,   180,
>      257,   267,   189,   185,   122,   178,   124,   113,   198,    89,
>      183,    90,   220,   138,   203,   204,    91,    92,    51,    52,
>      102,   106,   107,    53
760c761
< #define YYPACT_NINF -198
---
> #define YYPACT_NINF -201
763,789c764,791
<       91,  -198,   -25,    14,  -198,    37,    69,  -198,  -198,    65,
<     -198,  -198,    55,    78,  -198,  -198,  -198,    26,   107,   140,
<       75,    78,  -198,  -198,    74,  -198,    23,  -198,  -198,  -198,
<       81,   138,  -198,   152,   130,   133,  -198,   159,   -14,   184,
<      187,   201,   205,    12,  -198,   116,   138,  -198,  -198,  -198,
<     -198,  -198,    83,  -198,   202,   146,   206,   191,   170,   173,
<      173,     3,  -198,   125,  -198,  -198,   126,   125,  -198,   175,
<      211,   211,   212,   211,    77,   178,   213,   214,   215,   218,
<      211,   185,   164,  -198,   125,  -198,  -198,     7,   117,   220,
<       83,  -198,  -198,   219,   170,   125,  -198,     8,    20,   129,
<      131,  -198,   207,   221,     5,  -198,   134,   125,   222,   223,
<     -198,   226,  -198,   192,  -198,    87,   194,   183,   224,   154,
<      228,  -198,  -198,  -198,  -198,   125,   230,  -198,  -198,  -198,
<      216,  -198,   198,  -198,   182,  -198,  -198,  -198,  -198,  -198,
<       33,  -198,   199,   200,  -198,   173,   203,  -198,  -198,  -198,
<      192,  -198,  -198,  -198,   234,  -198,  -198,    18,   231,  -198,
<      204,   167,     1,   233,   236,   237,   178,   178,  -198,   178,
<      208,   178,  -198,   209,   238,  -198,   210,  -198,   125,  -198,
<      125,  -198,  -198,  -198,   217,   225,   227,   229,  -198,   179,
<      239,  -198,  -198,  -198,   204,   247,   232,   235,   244,   251,
<      167,   240,   241,  -198,   241,   188,   127,   197,  -198,   193,
<     -198,    26,   249,   180,  -198,  -198,  -198,   252,   243,   125,
<      173,   190,  -198,   248,   250,   125,  -198,  -198,  -198,   242,
<      256,   253,   178,   178,   178,   178,  -198,  -198,  -198,  -198,
<      125,  -198,   181,  -198,   125,   125,    21,   241,   241,   254,
<      254,   254,   254,   245,  -198,    24,    30,   257,  -198,   255,
<      241,  -198,  -198,   246,   264,   125,  -198
---
>      136,  -201,   -30,    11,  -201,    26,   233,  -201,  -201,    27,
>     -201,  -201,    59,     9,  -201,  -201,  -201,   -17,    43,     9,
>      141,   155,     9,  -201,  -201,    90,  -201,    78,  -201,  -201,
>     -201,  -201,    17,  -201,   164,    99,   129,    17,  -201,   115,
>      -14,   172,   175,   176,   178,    12,  -201,   179,    17,  -201,
>     -201,  -201,  -201,  -201,   169,  -201,   177,  -201,   145,   186,
>      180,   152,    30,    30,    96,  -201,   199,  -201,  -201,    41,
>     -201,   159,   202,   202,   206,   202,    51,   173,   197,   205,
>      208,   214,   202,   181,   147,  -201,   199,  -201,  -201,    37,
>       31,   218,   169,  -201,  -201,   221,   152,   199,  -201,    21,
>       30,    15,   225,   230,  -201,   224,   231,   130,  -201,    85,
>      237,    85,   232,   235,  -201,   240,  -201,   204,  -201,    89,
>      209,    70,   238,    98,   239,  -201,  -201,  -201,  -201,   199,
>      247,  -201,  -201,  -201,   234,  -201,   211,  -201,   126,  -201,
>     -201,  -201,  -201,  -201,    65,  -201,   212,   213,  -201,  -201,
>       30,   216,  -201,  -201,   204,  -201,  -201,  -201,   250,  -201,
>     -201,  -201,   252,  -201,   219,   140,    -4,   248,   255,   253,
>      173,   173,  -201,   173,   222,   173,  -201,   226,   251,  -201,
>      227,  -201,    41,  -201,   199,  -201,  -201,  -201,   228,   229,
>      236,   242,  -201,  -201,   263,  -201,  -201,  -201,   219,   265,
>      241,   243,   262,   269,   140,   244,   245,  -201,   245,   105,
>      111,   118,  -201,   134,  -201,   -17,   267,   271,  -201,  -201,
>     -201,   270,   256,   199,    30,   131,  -201,   268,   272,    85,
>     -201,  -201,  -201,   246,   275,   278,   173,   173,   173,   173,
>     -201,  -201,  -201,  -201,   199,  -201,  -201,  -201,    85,    85,
>     -201,   245,   245,   279,   279,   279,   279,   254,  -201,  -201,
>     -201,   280,  -201,   273,   245,  -201,  -201,   257,   284,   199,
>     -201
795,800c797,802
<     -198,  -198,  -198,   266,   -16,  -198,  -198,  -198,  -198,   258,
<       58,  -198,  -198,   259,  -198,  -198,  -198,  -103,  -198,   112,
<       10,  -198,  -198,   114,   186,  -197,   -73,  -198,   -52,  -198,
<     -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,
<     -198,  -198,  -198,    84,    85,  -198,   260,  -198,  -198,  -198,
<      -57,   171,  -198,   -43
---
>     -201,  -201,  -201,   286,   -16,  -201,  -201,  -201,  -201,   127,
>      135,  -201,  -201,   -28,  -201,  -201,  -201,  -106,  -201,   142,
>       52,  -201,  -201,   133,   198,  -200,   -75,  -201,   -54,  -201,
>     -201,  -201,  -201,  -201,  -201,  -201,  -201,  -201,  -201,  -201,
>     -201,  -201,  -201,   101,    97,  -201,   210,  -201,  -201,  -201,
>      -59,   193,  -201,   -38
807c809
< #define YYTABLE_NINF -126
---
> #define YYTABLE_NINF -124
810,845c812,842
<       86,    24,   119,   100,   157,   230,   152,   231,   101,    91,
<      153,   105,   -58,    62,   131,   142,    12,    56,    13,   155,
<      143,    27,   155,   -43,    32,   155,  -114,    57,   145,  -113,
<       33,   155,   130,    34,   146,  -115,    63,    14,    86,    22,
<      186,    22,   201,   141,    23,   143,    23,    91,   132,   144,
<      257,   258,   -43,   -43,   -43,  -114,  -114,  -114,  -113,  -113,
<     -113,    18,    22,   262,  -115,  -115,  -115,    23,    17,    -2,
<       15,    21,   -14,   177,   144,   213,    28,     1,    31,    21,
<       29,   112,    28,   114,     2,     3,   -18,    67,   189,    44,
<      125,    68,     4,   205,   206,    69,   207,   166,   209,     1,
<      167,    70,    71,    72,    44,    73,     2,     3,    74,    75,
<       76,    77,    78,   115,     4,    79,    80,    64,   116,    19,
<       81,    65,   246,    42,    82,   135,   136,    64,   214,    67,
<      147,   -27,   147,    68,   148,   155,   149,    69,   170,   156,
<      233,   255,   256,    70,    71,    72,    36,    73,    25,    27,
<       74,    75,    76,    77,    78,    37,    52,    79,    80,   249,
<      250,   251,   252,   242,   173,   170,    82,   241,    38,    39,
<      127,    53,   128,    27,    54,   129,    40,    41,    42,    43,
<      147,   155,   147,    55,  -124,   238,  -125,    93,   254,   183,
<       58,    59,   184,   169,   170,   236,   171,   243,   232,   170,
<      184,   196,   197,   198,   170,    60,   235,   234,   170,    61,
<       92,    96,    94,   266,    98,    95,   108,   110,   113,   116,
<      150,   121,   122,   123,   124,   137,   126,   139,   158,   151,
<      161,   159,   172,   162,   178,   168,   175,   180,   193,   182,
<      187,   188,   192,   203,   190,   132,   202,   220,   204,   208,
<      210,   212,   211,   219,   222,   225,   226,   237,   215,   244,
<      239,   245,   191,   261,   248,   170,   217,   240,   218,   247,
<      260,   265,    16,   223,   195,   154,   224,     0,   221,    30,
<      140,   228,   229,   201,     0,   227,   259,   264,     0,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<        0,     0,     0,     0,     0,    66,     0,     0,     0,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
<      138
---
>       88,    25,   123,   159,   103,   161,   234,   -58,   235,    57,
>       19,    12,   108,    65,   -17,    13,    93,    59,    37,    23,
>       68,    29,   -26,   150,    24,    38,    14,    60,   146,   151,
>       17,   100,   134,   147,    39,  -123,    66,   205,    88,   139,
>      140,   149,   109,   145,   135,    69,   -42,    40,    41,    70,
>       20,   261,   262,    71,    93,    42,    43,    44,    45,    72,
>       73,    74,   148,    75,   266,    18,    76,    77,    78,    79,
>       80,   101,   190,    81,    82,   181,   217,   147,   136,    33,
>      173,   174,    84,   175,    26,    34,   109,   119,    35,    69,
>      -42,   193,   120,    70,    32,   209,   210,    71,   211,   170,
>      213,   104,   171,    72,    73,    74,   148,    75,   177,   174,
>       76,    77,    78,    79,    80,   236,   174,    81,    82,   -42,
>      -42,   -42,   174,   250,   237,   116,    84,   118,   238,   174,
>      218,   156,    23,   187,   129,   157,   188,    24,   247,    58,
>       55,   188,   259,   260,     1,   174,    28,   239,    22,    31,
>       29,     2,     3,   131,    22,   132,    29,    22,   133,     4,
>       30,   253,   254,   255,   256,   246,    23,    46,    54,   245,
>       56,    24,    46,    69,   200,   201,   202,    70,    61,    62,
>       63,    71,    64,    46,    67,    94,    95,    72,    73,    74,
>      258,    75,    96,    98,    76,    77,    78,    79,    80,   240,
>      112,    81,    82,    69,    97,   125,    83,    70,   114,    44,
>       84,    71,   117,   126,   120,   270,   127,    72,    73,    74,
>      128,    75,   130,   141,    76,    77,    78,    79,    80,   143,
>      152,    81,    82,    -2,    15,   153,   -14,   154,   162,   155,
>       84,     1,   160,   163,   165,   166,   176,   179,     2,     3,
>      172,   182,   186,   191,   192,   184,     4,   194,   196,   197,
>      136,   206,   207,   212,   208,   215,   223,   214,   216,   219,
>      221,   224,   226,   229,   230,   241,   242,   222,   243,   248,
>      244,   265,   227,   249,   228,   232,   233,   205,   251,   252,
>      174,   269,    16,   264,   144,   263,   195,   199,   268,   225,
>      158,   231,   142
848c845
< static const yytype_int16 yycheck[] =
---
> static const yytype_uint16 yycheck[] =
850,885c847,877
<       52,    17,    75,    60,   107,   202,     1,   204,     5,    52,
<        5,    63,    11,     1,     7,     7,    41,    31,     4,     1,
<       12,     9,     1,     5,     1,     1,     5,    41,     8,     5,
<        7,     1,    84,    10,    14,     5,    24,     0,    90,    36,
<        7,    36,    41,    95,    41,    12,    41,    90,    41,    41,
<      247,   248,    34,    35,    36,    34,    35,    36,    34,    35,
<       36,     6,    36,   260,    34,    35,    36,    41,     3,     0,
<        1,    13,     3,   125,    41,   178,     1,     8,     4,    21,
<        5,    71,     1,    73,    15,    16,     5,     4,   145,    31,
<       80,     8,    23,   166,   167,    12,   169,    10,   171,     8,
<       13,    18,    19,    20,    46,    22,    15,    16,    25,    26,
<       27,    28,    29,    36,    23,    32,    33,     1,    41,    41,
<       37,     5,   225,    40,    41,     8,     9,     1,   180,     4,
<        1,     5,     1,     8,     5,     1,     5,    12,    11,     5,
<       13,   244,   245,    18,    19,    20,     8,    22,    41,     9,
<       25,    26,    27,    28,    29,    17,     4,    32,    33,   232,
<      233,   234,   235,   220,    10,    11,    41,   219,    30,    31,
<        6,    41,     8,     9,    41,    11,    38,    39,    40,    41,
<        1,     1,     1,    24,     5,     5,     5,    41,   240,     7,
<        6,     4,    10,    10,    11,   211,    13,     7,    10,    11,
<       10,    34,    35,    36,    11,     4,    13,    10,    11,     4,
<        8,    41,     6,   265,    41,    24,    41,     6,     6,    41,
<       13,     8,     8,     8,     6,     5,    41,     8,     6,     8,
<        4,     8,     8,    41,     4,    41,     8,    21,     7,    41,
<       41,    41,     8,     7,    41,    41,    13,     8,    11,    41,
<       41,    41,    14,    24,     7,    11,     5,     8,    41,    11,
<        8,    11,   150,     8,    11,    11,    41,    24,    41,    13,
<       13,     7,     6,    41,   160,   104,    41,    -1,   194,    21,
<       94,    41,    41,    41,    -1,   200,    41,    41,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
<       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
<       90
---
>       54,    17,    77,   109,    63,   111,   206,    11,   208,    37,
>        1,    41,    66,     1,     5,     4,    54,    31,     1,    36,
>       48,     9,     5,     8,    41,     8,     0,    41,     7,    14,
>        3,     1,    86,    12,    17,     5,    24,    41,    92,     8,
>        9,   100,     1,    97,     7,     4,     5,    30,    31,     8,
>       41,   251,   252,    12,    92,    38,    39,    40,    41,    18,
>       19,    20,    41,    22,   264,     6,    25,    26,    27,    28,
>       29,    41,     7,    32,    33,   129,   182,    12,    41,     1,
>       10,    11,    41,    13,    41,     7,     1,    36,    10,     4,
>        5,   150,    41,     8,     4,   170,   171,    12,   173,    10,
>      175,     5,    13,    18,    19,    20,    41,    22,    10,    11,
>       25,    26,    27,    28,    29,    10,    11,    32,    33,    34,
>       35,    36,    11,   229,    13,    73,    41,    75,    10,    11,
>      184,     1,    36,     7,    82,     5,    10,    41,     7,    24,
>       41,    10,   248,   249,     8,    11,    19,    13,    13,    22,
>        9,    15,    16,     6,    19,     8,     9,    22,    11,    23,
>        5,   236,   237,   238,   239,   224,    36,    32,     4,   223,
>       41,    41,    37,     4,    34,    35,    36,     8,     6,     4,
>        4,    12,     4,    48,     5,     8,    41,    18,    19,    20,
>      244,    22,     6,    41,    25,    26,    27,    28,    29,   215,
>       41,    32,    33,     4,    24,     8,    37,     8,     6,    40,
>       41,    12,     6,     8,    41,   269,     8,    18,    19,    20,
>        6,    22,    41,     5,    25,    26,    27,    28,    29,     8,
>        5,    32,    33,     0,     1,     5,     3,    13,     6,     8,
>       41,     8,     5,     8,     4,    41,     8,     8,    15,    16,
>       41,     4,    41,    41,    41,    21,    23,    41,     8,     7,
>       41,    13,     7,    41,    11,    14,    24,    41,    41,    41,
>       41,     8,     7,    11,     5,     8,     5,    41,     8,    11,
>       24,     8,    41,    11,    41,    41,    41,    41,    13,    11,
>       11,     7,     6,    13,    96,    41,   154,   164,    41,   198,
>      107,   204,    92
893,918c885,911
<       49,    50,    41,     4,     0,     1,    45,     3,     6,    41,
<       51,    52,    36,    41,    46,    41,    54,     9,     1,     5,
<       51,     4,     1,     7,    10,    53,     8,    17,    30,    31,
<       38,    39,    40,    41,    52,    55,    56,    57,    58,    90,
<       91,    95,     4,    41,    41,    24,    31,    41,     6,     4,
<        4,     4,     1,    24,     1,     5,    55,     4,     8,    12,
<       18,    19,    20,    22,    25,    26,    27,    28,    29,    32,
<       33,    37,    41,    52,    64,    69,    70,    81,    83,    88,
<       89,    95,     8,    41,     6,    24,    41,    66,    41,    92,
<       92,     5,    46,    93,    94,    70,    59,    70,    41,    79,
<        6,    62,    62,     6,    62,    36,    41,    68,    76,    68,
<       78,     8,     8,     8,     6,    62,    41,     6,     8,    11,
<       70,     7,    41,    65,    85,     8,     9,     5,    88,     8,
<       66,    70,     7,    12,    41,     8,    14,     1,     5,     5,
<       13,     8,     1,     5,    93,     1,     5,    59,     6,     8,
<       63,     4,    41,    60,    61,    67,    10,    13,    41,    10,
<       11,    13,     8,    10,    77,     8,    71,    70,     4,    82,
<       21,    75,    41,     7,    10,    74,     7,    41,    41,    92,
<       41,    61,     8,     7,    80,    65,    34,    35,    36,    86,
<       87,    41,    13,     7,    11,    68,    68,    68,    41,    68,
<       41,    14,    41,    59,    70,    41,    84,    41,    41,    24,
<        8,    85,     7,    41,    41,    11,     5,    86,    41,    41,
<       67,    67,    10,    13,    10,    13,    46,     8,     5,     8,
<       24,    70,    92,     7,    11,    11,    59,    13,    11,    68,
<       68,    68,    68,    72,    70,    59,    59,    67,    67,    41,
<       13,     8,    67,    73,    41,     7,    70
---
>       49,    50,    41,     4,     0,     1,    45,     3,     6,     1,
>       41,    51,    52,    36,    41,    46,    41,    54,    51,     9,
>        5,    51,     4,     1,     7,    10,    53,     1,     8,    17,
>       30,    31,    38,    39,    40,    41,    52,    55,    56,    57,
>       58,    90,    91,    95,     4,    41,    41,    55,    24,    31,
>       41,     6,     4,     4,     4,     1,    24,     5,    55,     4,
>        8,    12,    18,    19,    20,    22,    25,    26,    27,    28,
>       29,    32,    33,    37,    41,    52,    64,    69,    70,    81,
>       83,    88,    89,    95,     8,    41,     6,    24,    41,    66,
>        1,    41,    92,    92,     5,    46,    93,    94,    70,     1,
>       59,    70,    41,    79,     6,    62,    62,     6,    62,    36,
>       41,    68,    76,    68,    78,     8,     8,     8,     6,    62,
>       41,     6,     8,    11,    70,     7,    41,    65,    85,     8,
>        9,     5,    88,     8,    66,    70,     7,    12,    41,    92,
>        8,    14,     5,     5,    13,     8,     1,     5,    93,    59,
>        5,    59,     6,     8,    63,     4,    41,    60,    61,    67,
>       10,    13,    41,    10,    11,    13,     8,    10,    77,     8,
>       71,    70,     4,    82,    21,    75,    41,     7,    10,    74,
>        7,    41,    41,    92,    41,    61,     8,     7,    80,    65,
>       34,    35,    36,    86,    87,    41,    13,     7,    11,    68,
>       68,    68,    41,    68,    41,    14,    41,    59,    70,    41,
>       84,    41,    41,    24,     8,    85,     7,    41,    41,    11,
>        5,    86,    41,    41,    67,    67,    10,    13,    10,    13,
>       46,     8,     5,     8,    24,    70,    92,     7,    11,    11,
>       59,    13,    11,    68,    68,    68,    68,    72,    70,    59,
>       59,    67,    67,    41,    13,     8,    67,    73,    41,     7,
>       70
1443c1436
< #line 1444 "ael.tab.c"
---
> #line 1437 "ael.tab.c"
1451c1444
< #line 1452 "ael.tab.c"
---
> #line 1445 "ael.tab.c"
1459c1452
< #line 1460 "ael.tab.c"
---
> #line 1453 "ael.tab.c"
1464c1457
< #line 1465 "ael.tab.c"
---
> #line 1458 "ael.tab.c"
1472c1465
< #line 1473 "ael.tab.c"
---
> #line 1466 "ael.tab.c"
1480c1473
< #line 1481 "ael.tab.c"
---
> #line 1474 "ael.tab.c"
1488c1481
< #line 1489 "ael.tab.c"
---
> #line 1482 "ael.tab.c"
1496c1489
< #line 1497 "ael.tab.c"
---
> #line 1490 "ael.tab.c"
1504c1497
< #line 1505 "ael.tab.c"
---
> #line 1498 "ael.tab.c"
1512c1505
< #line 1513 "ael.tab.c"
---
> #line 1506 "ael.tab.c"
1520c1513
< #line 1521 "ael.tab.c"
---
> #line 1514 "ael.tab.c"
1528c1521
< #line 1529 "ael.tab.c"
---
> #line 1522 "ael.tab.c"
1536c1529
< #line 1537 "ael.tab.c"
---
> #line 1530 "ael.tab.c"
1544c1537
< #line 1545 "ael.tab.c"
---
> #line 1538 "ael.tab.c"
1552c1545
< #line 1553 "ael.tab.c"
---
> #line 1546 "ael.tab.c"
1557c1550
< #line 1558 "ael.tab.c"
---
> #line 1551 "ael.tab.c"
1565c1558
< #line 1566 "ael.tab.c"
---
> #line 1559 "ael.tab.c"
1570c1563
< #line 1571 "ael.tab.c"
---
> #line 1564 "ael.tab.c"
1578c1571
< #line 1579 "ael.tab.c"
---
> #line 1572 "ael.tab.c"
1583c1576
< #line 1584 "ael.tab.c"
---
> #line 1577 "ael.tab.c"
1588c1581
< #line 1589 "ael.tab.c"
---
> #line 1582 "ael.tab.c"
1593c1586
< #line 1594 "ael.tab.c"
---
> #line 1587 "ael.tab.c"
1601c1594
< #line 1602 "ael.tab.c"
---
> #line 1595 "ael.tab.c"
1609c1602
< #line 1610 "ael.tab.c"
---
> #line 1603 "ael.tab.c"
1617c1610
< #line 1618 "ael.tab.c"
---
> #line 1611 "ael.tab.c"
1625c1618
< #line 1626 "ael.tab.c"
---
> #line 1619 "ael.tab.c"
1630c1623
< #line 1631 "ael.tab.c"
---
> #line 1624 "ael.tab.c"
1638c1631
< #line 1639 "ael.tab.c"
---
> #line 1632 "ael.tab.c"
1646c1639
< #line 1647 "ael.tab.c"
---
> #line 1640 "ael.tab.c"
1654c1647
< #line 1655 "ael.tab.c"
---
> #line 1648 "ael.tab.c"
1662c1655
< #line 1663 "ael.tab.c"
---
> #line 1656 "ael.tab.c"
1667c1660
< #line 1668 "ael.tab.c"
---
> #line 1661 "ael.tab.c"
1675c1668
< #line 1676 "ael.tab.c"
---
> #line 1669 "ael.tab.c"
1683c1676
< #line 1684 "ael.tab.c"
---
> #line 1677 "ael.tab.c"
1691c1684
< #line 1692 "ael.tab.c"
---
> #line 1685 "ael.tab.c"
1699c1692
< #line 1700 "ael.tab.c"
---
> #line 1693 "ael.tab.c"
1707c1700
< #line 1708 "ael.tab.c"
---
> #line 1701 "ael.tab.c"
1715c1708
< #line 1716 "ael.tab.c"
---
> #line 1709 "ael.tab.c"
1723c1716
< #line 1724 "ael.tab.c"
---
> #line 1717 "ael.tab.c"
1731c1724
< #line 1732 "ael.tab.c"
---
> #line 1725 "ael.tab.c"
1739c1732
< #line 1740 "ael.tab.c"
---
> #line 1733 "ael.tab.c"
1747c1740
< #line 1748 "ael.tab.c"
---
> #line 1741 "ael.tab.c"
1755c1748
< #line 1756 "ael.tab.c"
---
> #line 1749 "ael.tab.c"
2132a2126
> 			(yyval.pval) = 0;
2134d2127
< 
2181c2174
<     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
---
>     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
2229c2222
<     { (yyval.pval)=(yyvsp[(1) - (2)].pval);;}
---
>     { (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
2327c2320
<     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
---
>     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
2893c2886
<     {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
---
>     {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
2939c2932
< #line 2940 "ael.tab.c"
---
> #line 2933 "ael.tab.c"
3242c3235
< static char *ael_token_subst(char *mess)
---
> static char *ael_token_subst(const char *mess)
3246c3239
< 	char *p;
---
> 	const char *p;
3287c3280
< 	char *s2 = ael_token_subst((char *)s);
---
> 	char *s2 = ael_token_subst(s);
Only in asterisk-1.4.11/pbx/ael: ael.tab.o
Only in asterisk-1.4.13/pbx/ael/ael-test: ael-ntest22
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-ntest10 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-ntest10
8,10c8,10
< LOG: lev:2 file:pbx_ael.c  line:3978 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3985 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3993 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
21c21
< LOG: lev:2 file:pbx_ael.c  line:3996 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
35a36
> Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-1-.|10, FREE, registrar=pbx_ael);
49a51
> Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-3-.|10, FREE, registrar=pbx_ael);
68a71
> Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-8-.|10, FREE, registrar=pbx_ael);
75a79
> Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-5-.|10, FREE, registrar=pbx_ael);
91a96
> Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael);
95a101
> Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael);
102a109
> Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-10-.|10, FREE, registrar=pbx_ael);
118a126
> Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael);
122a131
> Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael);
129a139
> Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-16-.|10, FREE, registrar=pbx_ael);
143c153
< LOG: lev:2 file:pbx_ael.c  line:3998 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
145c155
< LOG: lev:2 file:pbx_ael.c  line:4001 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
147,148c157,158
< LOG: lev:2 file:pbx_ael.c  line:4004 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:523 func: main  7 contexts, 27 extensions, 114 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  7 contexts, 37 extensions, 124 priorities
Only in asterisk-1.4.13/pbx/ael/ael-test: ref.ael-ntest22
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test1 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test1
5,7c5,7
< LOG: lev:2 file:pbx_ael.c  line:3978 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3985 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3993 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
11,15c11,15
< LOG: lev:2 file:pbx_ael.c  line:3996 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3998 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:4001 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:4004 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:523 func: main  5 contexts, 14 extensions, 157 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  5 contexts, 16 extensions, 159 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test18 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test18
5,12c5,12
< LOG: lev:2 file:pbx_ael.c  line:3970 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3977 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3985 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3988 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3990 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3993 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3996 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:483 func: main  1 contexts, 5 extensions, 25 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 7 extensions, 27 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test2 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test2
5,7c5,7
< LOG: lev:2 file:pbx_ael.c  line:3910 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
---
> LOG: lev:2 file:pbx_ael.c  line:4048 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4055 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./apptest.ael2, 3474 chars
9,11c9,11
< LOG: lev:2 file:pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
---
> LOG: lev:2 file:pbx_ael.c  line:4063 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
13,21c13,21
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:2 file:pbx_ael.c  line:3928 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3936 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:512 func: main  1 contexts, 1 extensions, 142 priorities
---
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:2 file:pbx_ael.c  line:4066 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4068 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4071 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4074 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 1 extensions, 142 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test3 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test3
5,18c5,18
< LOG: lev:2 file:pbx_ael.c  line:3859 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3866 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./telemarket_torture.ael2, 28036 chars
< LOG: lev:2 file:pbx_ael.c  line:3874 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3877 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3879 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3882 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3885 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:483 func: main  172 contexts, 858 extensions, 2326 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./include1.ael2, 78 chars
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./include2.ael2, 98 chars
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./include3.ael2, 57 chars
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./include5.ael2, 56 chars
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./include4.ael2, 87 chars
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./telemarket_torture.ael2, 28036 chars
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  172 contexts, 934 extensions, 2402 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test4 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test4
5,7c5,7
< LOG: lev:2 file:pbx_ael.c  line:3910 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
---
> LOG: lev:2 file:pbx_ael.c  line:4048 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4055 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:ael.flex  line:654 func: setup_filestack    --Read in included file ./apptest.ael2, 3474 chars
9,11c9,11
< LOG: lev:2 file:pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
---
> LOG: lev:2 file:pbx_ael.c  line:4063 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
13,21c13,21
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:3 file:pbx_ael.c  line:2365 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
< LOG: lev:2 file:pbx_ael.c  line:3928 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3936 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:512 func: main  1 contexts, 1 extensions, 142 priorities
---
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:3 file:pbx_ael.c  line:2392 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
> LOG: lev:2 file:pbx_ael.c  line:4066 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4068 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4071 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4074 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 1 extensions, 142 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test5 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test5
5,12c5,12
< LOG: lev:2 file:pbx_ael.c  line:3803 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3810 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3818 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3821 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3823 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3826 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3829 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:479 func: main  38 contexts, 90 extensions, 484 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  38 contexts, 91 extensions, 485 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test6 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test6
5,6c5,6
< LOG: lev:2 file:pbx_ael.c  line:3803 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3810 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
---
> LOG: lev:2 file:pbx_ael.c  line:3978 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:3985 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
8,9c8,10
< LOG: lev:4 file:ael.y  line:752 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
< LOG: lev:4 file:ael.y  line:752 func: ael_yyerror  ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&'
---
> LOG: lev:4 file:ael.y  line:755 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
> LOG: lev:4 file:ael.flex  line:276 func: ael_yylex  File=./extensions.ael, line=174, column=49: Mismatched '}' in expression!
> LOG: lev:4 file:ael.y  line:755 func: ael_yyerror  ==== File: ./extensions.ael, Line 174, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
11,16c12,17
< LOG: lev:4 file:ael.y  line:752 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
< LOG: lev:4 file:ael.y  line:752 func: ael_yyerror  ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&'
< LOG: lev:4 file:ael.y  line:752 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
< LOG: lev:2 file:pbx_ael.c  line:3818 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:4 file:pbx_ael.c  line:3831 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
< LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
---
> LOG: lev:4 file:ael.y  line:755 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
> LOG: lev:4 file:ael.y  line:755 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
> LOG: lev:4 file:ael.y  line:755 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 32-32: Error: syntax error, unexpected '|', expecting '(' or ';' or '=' or ':'
> LOG: lev:2 file:pbx_ael.c  line:3993 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:4 file:pbx_ael.c  line:4006 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
> LOG: lev:4 file:ael2_parse  line:523 func: main  0 contexts, 0 extensions, 0 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-test8 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-test8
5,12c5,12
< LOG: lev:2 file:pbx_ael.c  line:3803 func: pbx_load_module  Starting AEL load process.
< LOG: lev:2 file:pbx_ael.c  line:3810 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3818 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3821 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3823 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3826 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
< LOG: lev:2 file:pbx_ael.c  line:3829 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
< LOG: lev:4 file:ael2_parse  line:479 func: main  1 contexts, 5 extensions, 15 priorities
---
> LOG: lev:2 file:pbx_ael.c  line:4069 func: pbx_load_module  Starting AEL load process.
> LOG: lev:2 file:pbx_ael.c  line:4076 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4084 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4087 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4089 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4092 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
> LOG: lev:2 file:pbx_ael.c  line:4095 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
> LOG: lev:4 file:ael2_parse  line:527 func: main  1 contexts, 7 extensions, 17 priorities
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-vtest13 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-vtest13
21a22
> exten => sw-1-,10,Goto(sw-1-.|10)
41a43
> exten => sw-3-,10,Goto(sw-3-.|10)
65a68
> exten => sw-4-,10,Goto(sw-4-.|10)
89a93
> exten => sw-5-,10,Goto(sw-5-.|10)
113a118
> exten => sw-6-,10,Goto(sw-6-.|10)
137a143
> exten => sw-7-,10,Goto(sw-7-.|10)
161a168
> exten => sw-8-,10,Goto(sw-8-.|10)
185a193
> exten => sw-9-,10,Goto(sw-9-.|10)
209a218
> exten => sw-10-,10,Goto(sw-10-.|10)
233a243
> exten => sw-11-,10,Goto(sw-11-.|10)
257a268
> exten => sw-12-,10,Goto(sw-12-.|10)
281a293
> exten => sw-13-,10,Goto(sw-13-.|10)
305a318
> exten => sw-14-,10,Goto(sw-14-.|10)
329a343
> exten => sw-15-,10,Goto(sw-15-.|10)
353a368
> exten => sw-16-,10,Goto(sw-16-.|10)
377a393
> exten => sw-17-,10,Goto(sw-17-.|10)
401a418
> exten => sw-18-,10,Goto(sw-18-.|10)
425a443
> exten => sw-19-,10,Goto(sw-19-.|10)
449a468
> exten => sw-20-,10,Goto(sw-20-.|10)
473a493
> exten => sw-21-,10,Goto(sw-21-.|10)
497a518
> exten => sw-22-,10,Goto(sw-22-.|10)
521a543
> exten => sw-23-,10,Goto(sw-23-.|10)
545a568
> exten => sw-24-,10,Goto(sw-24-.|10)
569a593
> exten => sw-25-,10,Goto(sw-25-.|10)
593a618
> exten => sw-26-,10,Goto(sw-26-.|10)
617a643
> exten => sw-27-,10,Goto(sw-27-.|10)
641a668
> exten => sw-28-,10,Goto(sw-28-.|10)
665a693
> exten => sw-29-,10,Goto(sw-29-.|10)
689a718
> exten => sw-30-,10,Goto(sw-30-.|10)
713a743
> exten => sw-31-,10,Goto(sw-31-.|10)
737a768
> exten => sw-32-,10,Goto(sw-32-.|10)
761a793
> exten => sw-33-,10,Goto(sw-33-.|10)
785a818
> exten => sw-34-,10,Goto(sw-34-.|10)
809a843
> exten => sw-35-,10,Goto(sw-35-.|10)
833a868
> exten => sw-36-,10,Goto(sw-36-.|10)
857a893
> exten => sw-37-,10,Goto(sw-37-.|10)
881a918
> exten => sw-38-,10,Goto(sw-38-.|10)
905a943
> exten => sw-39-,10,Goto(sw-39-.|10)
929a968
> exten => sw-40-,10,Goto(sw-40-.|10)
953a993
> exten => sw-41-,10,Goto(sw-41-.|10)
977a1018
> exten => sw-42-,10,Goto(sw-42-.|10)
1001a1043
> exten => sw-43-,10,Goto(sw-43-.|10)
1025a1068
> exten => sw-44-,10,Goto(sw-44-.|10)
1049a1093
> exten => sw-45-,10,Goto(sw-45-.|10)
1073a1118
> exten => sw-46-,10,Goto(sw-46-.|10)
1097a1143
> exten => sw-47-,10,Goto(sw-47-.|10)
1121a1168
> exten => sw-48-,10,Goto(sw-48-.|10)
1145a1193
> exten => sw-49-,10,Goto(sw-49-.|10)
1169a1218
> exten => sw-50-,10,Goto(sw-50-.|10)
1193a1243
> exten => sw-51-,10,Goto(sw-51-.|10)
1217a1268
> exten => sw-52-,10,Goto(sw-52-.|10)
1241a1293
> exten => sw-53-,10,Goto(sw-53-.|10)
1265a1318
> exten => sw-54-,10,Goto(sw-54-.|10)
1289a1343
> exten => sw-55-,10,Goto(sw-55-.|10)
1313a1368
> exten => sw-56-,10,Goto(sw-56-.|10)
1337a1393
> exten => sw-57-,10,Goto(sw-57-.|10)
1361a1418
> exten => sw-58-,10,Goto(sw-58-.|10)
1385a1443
> exten => sw-59-,10,Goto(sw-59-.|10)
1409a1468
> exten => sw-60-,10,Goto(sw-60-.|10)
1433a1493
> exten => sw-61-,10,Goto(sw-61-.|10)
1457a1518
> exten => sw-62-,10,Goto(sw-62-.|10)
1481a1543
> exten => sw-63-,10,Goto(sw-63-.|10)
1505a1568
> exten => sw-64-,10,Goto(sw-64-.|10)
1529a1593
> exten => sw-65-,10,Goto(sw-65-.|10)
1553a1618
> exten => sw-66-,10,Goto(sw-66-.|10)
1577a1643
> exten => sw-67-,10,Goto(sw-67-.|10)
1601a1668
> exten => sw-68-,10,Goto(sw-68-.|10)
1625a1693
> exten => sw-69-,10,Goto(sw-69-.|10)
1649a1718
> exten => sw-70-,10,Goto(sw-70-.|10)
1673a1743
> exten => sw-71-,10,Goto(sw-71-.|10)
1697a1768
> exten => sw-72-,10,Goto(sw-72-.|10)
1721a1793
> exten => sw-73-,10,Goto(sw-73-.|10)
1745a1818
> exten => sw-74-,10,Goto(sw-74-.|10)
1769a1843
> exten => sw-75-,10,Goto(sw-75-.|10)
1793a1868
> exten => sw-76-,10,Goto(sw-76-.|10)
2014a2090
> exten => sw-92-,10,Goto(sw-92-.|10)
diff -r asterisk-1.4.11/pbx/ael/ael-test/ref.ael-vtest17 asterisk-1.4.13/pbx/ael/ael-test/ref.ael-vtest17
47a48
> exten => sw-2-,10,Goto(sw-2-.|10)
diff -r asterisk-1.4.11/pbx/ael/ael.y asterisk-1.4.13/pbx/ael/ael.y
27c27
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 67526 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84239 $")
49c49
< static char *ael_token_subst(char *mess);
---
> static char *ael_token_subst(const char *mess);
156c156
< %expect 8
---
> %expect 3
206a207
> 			$$ = 0;
208d208
< 
236c236
< 	| global_statements error {$$=$1;}
---
> 	| error global_statements {$$=$2;}
254c254
< 	| elements error   { $$=$1;}
---
> 	| error elements  { $$=$2;}
298c298
< 	| statements error {$$=$1;}
---
> 	| error statements {$$=$2;}
472c472
< 
---
>  
601c601
< 	| switchlist error {$$=$1;}
---
> 	| error switchlist {$$=$2;}
708c708
< static char *ael_token_subst(char *mess)
---
> static char *ael_token_subst(const char *mess)
712c712
< 	char *p;
---
> 	const char *p;
753c753
< 	char *s2 = ael_token_subst((char *)s);
---
> 	char *s2 = ael_token_subst(s);
diff -r asterisk-1.4.11/pbx/pbx_ael.c asterisk-1.4.13/pbx/pbx_ael.c
27c27
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79363 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84544 $")
112,114c112,114
< static pval *current_db;
< static pval *current_context;
< static pval *current_extension;
---
> static pval *current_db=0;
> static pval *current_context=0;
> static pval *current_extension=0;
2735a2736,2737
> 	if (!item)
> 		return; /* don't check an empty tree */
2897c2899
< 	struct ael_priority *switch_test, *switch_end, *fall_thru;
---
> 	struct ael_priority *switch_test, *switch_end, *fall_thru, *switch_empty;
2910c2912
< 	struct ael_extension *switch_case;
---
> 	struct ael_extension *switch_case,*switch_null;
2986d2987
< 			strp2 = strchr(p->u1.for_init, '=');
2987a2989
> 				strp2 = strchr(p->u1.for_init, '=');
2993,2996c2995,3032
< 			} else
< 				for_init->appargs = strdup(p->u1.for_init);
< 
< 			for_inc->app = strdup("Set");
---
> 				for_init->app = strdup("Set");
> 			} else {
> 				strp2 = p->u1.for_init;
> 				while (*strp2 && isspace(*strp2))
> 					strp2++;
> 				if (*strp2 == '&') { /* itsa macro call */
> 					char *strp3 = strp2+1;
> 					while (*strp3 && isspace(*strp3))
> 						strp3++;
> 					strcpy(buf2, strp3);
> 					strp3 = strchr(buf2,'(');
> 					if (strp3) {
> 						*strp3 = '|';
> 					}
> 					while ((strp3=strchr(buf2,','))) {
> 						*strp3 = '|';
> 					}
> 					strp3 = strrchr(buf2, ')');
> 					if (strp3)
> 						*strp3 = 0; /* remove the closing paren */
> 
> 					for_init->appargs = strdup(buf2);
> 
> 					for_init->app = strdup("Macro");
> 				} else {  /* must be a regular app call */
> 					char *strp3;
> 					strcpy(buf2, strp2);
> 					strp3 = strchr(buf2,'(');
> 					if (strp3) {
> 						*strp3 = 0;
> 						for_init->app = strdup(buf2);
> 						for_init->appargs = strdup(strp3+1);
> 						strp3 = strrchr(for_init->appargs, ')');
> 						if (strp3)
> 							*strp3 = 0; /* remove the closing paren */
> 					}
> 				}
> 			}
3001,3002c3037,3038
< 			strp2 = strchr(p->u3.for_inc, '=');
< 			if (strp) {
---
> 			if (strp) {  /* there's an = in this part; that means an assignment. set it up */
> 				strp2 = strchr(p->u3.for_inc, '=');
3008,3009c3044,3081
< 			} else
< 				for_inc->appargs = strdup(p->u3.for_inc);
---
> 				for_inc->app = strdup("Set");
> 			} else {
> 				strp2 = p->u3.for_inc;
> 				while (*strp2 && isspace(*strp2))
> 					strp2++;
> 				if (*strp2 == '&') { /* itsa macro call */
> 					char *strp3 = strp2+1;
> 					while (*strp3 && isspace(*strp3))
> 						strp3++;
> 					strcpy(buf2, strp3);
> 					strp3 = strchr(buf2,'(');
> 					if (strp3) {
> 						*strp3 = '|';
> 					}
> 					while ((strp3=strchr(buf2,','))) {
> 						*strp3 = '|';
> 					}
> 					strp3 = strrchr(buf2, ')');
> 					if (strp3)
> 						*strp3 = 0; /* remove the closing paren */
> 
> 					for_inc->appargs = strdup(buf2);
> 
> 					for_inc->app = strdup("Macro");
> 				} else {  /* must be a regular app call */
> 					char *strp3;
> 					strcpy(buf2, strp2);
> 					strp3 = strchr(buf2,'(');
> 					if (strp3) {
> 						*strp3 = 0;
> 						for_inc->app = strdup(buf2);
> 						for_inc->appargs = strdup(strp3+1);
> 						strp3 = strrchr(for_inc->appargs, ')');
> 						if (strp3)
> 							*strp3 = 0; /* remove the closing paren */
> 					}
> 				}
> 			}
3085c3157,3160
< 			snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",control_statement_count, p->u1.str);
---
> 			strncpy(buf2,p->u1.str,sizeof(buf2));
> 			buf2[sizeof(buf2)-1] = 0; /* just in case */
> 			substitute_commas(buf2);
> 			snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",control_statement_count, buf2);
3113c3188,3191
< 					snprintf(buf1,sizeof(buf1),"sw-%d-%s", local_control_statement_count, p2->u1.str);
---
> 					strncpy(buf2,p2->u1.str,sizeof(buf2));
> 					buf2[sizeof(buf2)-1] = 0; /* just in case */
> 					substitute_commas(buf2);
> 					snprintf(buf1,sizeof(buf1),"sw-%d-%s", local_control_statement_count, buf2);
3115c3193
< 					snprintf(new_label,sizeof(new_label),"sw-%s-%s-%d", label, p2->u1.str, local_control_statement_count);
---
> 					snprintf(new_label,sizeof(new_label),"sw-%s-%s-%d", label, buf2, local_control_statement_count);
3131c3209,3212
< 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, p2->next->u1.str);
---
> 							strncpy(buf2,p2->next->u1.str,sizeof(buf2));
> 							buf2[sizeof(buf2)-1] = 0; /* just in case */
> 							substitute_commas(buf2);
> 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, buf2);
3138a3220
> 							substitute_commas(buf2);
3177c3259,3262
< 					snprintf(buf1,sizeof(buf1),"_sw-%d-%s", local_control_statement_count, p2->u1.str);
---
> 					strncpy(buf2,p2->u1.str,sizeof(buf2));
> 					buf2[sizeof(buf2)-1] = 0; /* just in case */
> 					substitute_commas(buf2);
> 					snprintf(buf1,sizeof(buf1),"_sw-%d-%s", local_control_statement_count, buf2);
3179c3264
< 					snprintf(new_label,sizeof(new_label),"sw-%s-%s-%d", label, p2->u1.str, local_control_statement_count);
---
> 					snprintf(new_label,sizeof(new_label),"sw-%s-%s-%d", label, buf2, local_control_statement_count);
3194c3279,3282
< 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, p2->next->u1.str);
---
> 							strncpy(buf2,p2->next->u1.str,sizeof(buf2));
> 							buf2[sizeof(buf2)-1] = 0; /* just in case */
> 							substitute_commas(buf2);
> 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, buf2);
3201a3290
> 							substitute_commas(buf2);
3231d3319
< 					default_exists++;
3235a3324,3343
> 					
> 					/* new: the default case intros a pattern with ., which covers ALMOST everything.
> 					   but it doesn't cover a NULL pattern. So, we'll define a null extension to match
> 					   that goto's the default extension. */
> 
> 					default_exists++;
> 					switch_null = new_exten();
> 					switch_null->context = this_context;
> 					switch_null->is_switch = 1;
> 					switch_empty = new_prio();
> 					snprintf(buf1,sizeof(buf1),"sw-%d-.|10",local_control_statement_count);
> 					switch_empty->app = strdup("Goto");
> 					switch_empty->appargs = strdup(buf1);
> 					linkprio(switch_null, switch_empty);
> 					snprintf(buf1,sizeof(buf1),"sw-%d-", local_control_statement_count);
> 					switch_null->name = strdup(buf1);
> 					switch_null->loop_break = exten->loop_break;
> 					switch_null->loop_continue = exten->loop_continue;
> 					linkexten(exten,switch_null);
> 
3245c3353
< 					gen_prios(switch_case, new_label, p2->u2.statements, exten, this_context); /* this will link in all the while body statements here */
---
> 					gen_prios(switch_case, new_label, p2->u2.statements, exten, this_context); /* this will link in all the default:  body statements here */
3259c3367,3370
< 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, p2->next->u1.str);
---
> 							strncpy(buf2,p2->next->u1.str,sizeof(buf2));
> 							buf2[sizeof(buf2)-1] = 0; /* just in case */
> 							substitute_commas(buf2);
> 							snprintf(buf1,sizeof(buf1),"sw-%d-%s|10",local_control_statement_count, buf2);
3266a3378
> 							substitute_commas(buf2);
3973c4085
< 	int errs, sem_err, sem_warn, sem_note;
---
> 	int errs=0, sem_err=0, sem_warn=0, sem_note=0;
Only in asterisk-1.4.11/pbx: pbx_ael.o
Only in asterisk-1.4.11/pbx: pbx_ael.so
Only in asterisk-1.4.11/pbx: pbx_config.o
Only in asterisk-1.4.11/pbx: pbx_config.so
diff -r asterisk-1.4.11/pbx/pbx_dundi.c asterisk-1.4.13/pbx/pbx_dundi.c
22d21
<  *
31c30
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 75583 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83976 $")
256c255,256
< 	int dynamic;                           /*!< Are we dynamic? */
---
> 	/*! Dynamic peers register with us */
> 	unsigned int dynamic:1;
268a269,275
> /*!
>  * \brief Wildcard peer
>  *
>  * This peer is created if the [*] entry is specified in dundi.conf
>  */
> static struct dundi_peer *any_peer;
> 
489a497,499
> 	if (!cur && any_peer)
> 		cur = any_peer;
> 
1268c1278
< static int do_register_expire(void *data)
---
> static int do_register_expire(const void *data)
1270c1280
< 	struct dundi_peer *peer = data;
---
> 	struct dundi_peer *peer = (struct dundi_peer *)data;
1495a1506,1535
> static void deep_copy_peer(struct dundi_peer *peer_dst, const struct dundi_peer *peer_src)
> {
> 	struct permission *cur, *perm;
> 
> 	memcpy(peer_dst, peer_src, sizeof(*peer_dst));
> 	
> 	memset(&peer_dst->permit, 0, sizeof(peer_dst->permit));
> 	memset(&peer_dst->include, 0, sizeof(peer_dst->permit));
> 
> 	AST_LIST_TRAVERSE(&peer_src->permit, cur, list) {
> 		if (!(perm = ast_calloc(1, sizeof(*perm) + strlen(cur->name) + 1)))
> 			continue;
> 
> 		perm->allow = cur->allow;
> 		strcpy(perm->name, cur->name);
> 
> 		AST_LIST_INSERT_HEAD(&peer_dst->permit, perm, list);
> 	}
> 
> 	AST_LIST_TRAVERSE(&peer_src->include, cur, list) {
> 		if (!(perm = ast_calloc(1, sizeof(*perm) + strlen(cur->name) + 1)))
> 			continue;
> 
> 		perm->allow = cur->allow;
> 		strcpy(perm->name, cur->name);
> 
> 		AST_LIST_INSERT_HEAD(&peer_dst->include, perm, list);
> 	}
> }
> 
1508c1548
< 	struct dundi_peer *peer;
---
> 	struct dundi_peer *peer = NULL;
1591a1632,1648
> 		
> 		/* if the peer is not found and we have a valid 'any_peer' setting */
> 		if (any_peer && peer == any_peer) {
> 			/* copy any_peer into a new peer object */
> 			peer = ast_calloc(1, sizeof(*peer));
> 			if (peer) {
> 				deep_copy_peer(peer, any_peer);
> 
> 				/* set EID to remote EID */
> 				peer->eid = *ies.eids[0];
> 
> 				AST_LIST_LOCK(&peers);
> 				AST_LIST_INSERT_HEAD(&peers, peer, list);
> 				AST_LIST_UNLOCK(&peers);
> 			}
> 		}
> 
2898c2955
< static int dundi_rexmit(void *data)
---
> static int dundi_rexmit(const void *data)
2900c2957
< 	struct dundi_packet *pack;
---
> 	struct dundi_packet *pack = (struct dundi_packet *)data;
2903d2959
< 	pack = data;
2993c3049
< static int do_autokill(void *data)
---
> static int do_autokill(const void *data)
2995c3051
< 	struct dundi_transaction *trans = data;
---
> 	struct dundi_transaction *trans = (struct dundi_transaction *)data;
3967c4023
< static int do_register(void *data)
---
> static int do_register(const void *data)
3970c4026
< 	struct dundi_peer *peer = data;
---
> 	struct dundi_peer *peer = (struct dundi_peer *)data;
3993c4049
< static int do_qualify(void *data)
---
> static int do_qualify(const void *data)
3995,3996c4051
< 	struct dundi_peer *peer;
< 	peer = data;
---
> 	struct dundi_peer *peer = (struct dundi_peer *)data;
4332c4387
< 	cfg = ast_config_load(config_file);
---
> 	any_peer = NULL;
4333a4389
> 	cfg = ast_config_load(config_file);
4456c4512,4515
< 			else
---
> 			else if (!strcasecmp(cat, "*")) {
> 				build_peer(&empty_eid, ast_variable_browse(cfg, cat), &globalpcmodel);
> 				any_peer = find_peer(NULL);
> 			} else
4491a4551,4555
> 	mark_mappings();
> 	prune_mappings();
> 	mark_peers();
> 	prune_peers();
> 
Only in asterisk-1.4.11/pbx: pbx_loopback.o
Only in asterisk-1.4.11/pbx: pbx_loopback.so
Only in asterisk-1.4.11/pbx: pbx_realtime.o
Only in asterisk-1.4.11/pbx: pbx_realtime.so
diff -r asterisk-1.4.11/pbx/pbx_spool.c asterisk-1.4.13/pbx/pbx_spool.c
27c27
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79099 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 82358 $")
205c205
< 						ast_log(LOG_WARNING, "Invalid retrytime at line %d of %s\n", lineno, fn);
---
> 						ast_log(LOG_WARNING, "Invalid waittime at line %d of %s\n", lineno, fn);
Only in asterisk-1.4.11/pbx: pbx_spool.o
Only in asterisk-1.4.11/pbx: pbx_spool.so
Only in asterisk-1.4.11/res: res_adsi.o
Only in asterisk-1.4.11/res: res_adsi.so
diff -r asterisk-1.4.11/res/res_agi.c asterisk-1.4.13/res/res_agi.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 77788 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84236 $")
69a70,71
> #define AGI_NANDFS_RETRY 3
> #define AGI_BUF_LEN 2048
113a116
> 	AGI_RESULT_SUCCESS_FAST,
233c236
< 	return AGI_RESULT_SUCCESS;
---
> 	return AGI_RESULT_SUCCESS_FAST;
1207c1210
< 	if (chan) { /* XXX isn't this chan2 ? */
---
> 	if (chan2) {
1826d1828
< #define RETRY	3
1834c1836,1837
< 	char buf[2048];
---
> 	char buf[AGI_BUF_LEN];
> 	char *res = NULL;
1838c1841
< 	int retry = RETRY;
---
> 	int retry = AGI_NANDFS_RETRY;
1853c1856
< 			retry = RETRY;
---
> 			retry = AGI_NANDFS_RETRY;
1869,1870c1872,1894
< 			retry = RETRY;
< 			if (!fgets(buf, sizeof(buf), readf)) {
---
> 			size_t len = sizeof(buf);
> 			size_t buflen = 0;
> 
> 			retry = AGI_NANDFS_RETRY;
> 			buf[0] = '\0';
> 
> 			while (buflen < (len - 1)) {
> 				res = fgets(buf + buflen, len, readf);
> 				if (feof(readf)) 
> 					break;
> 				if (ferror(readf) && ((errno != EINTR) && (errno != EAGAIN))) 
> 					break;
> 				if (res != NULL && !agi->fast)
> 					break;
> 				buflen = strlen(buf);
> 				if (buflen && buf[buflen - 1] == '\n')
> 					break;
> 				len -= buflen;
> 				if (agidebug)
> 					ast_verbose( "AGI Rx << temp buffer %s - errno %s\n", buf, strerror(errno));
> 			}
> 
> 			if (!buf[0]) {
1881a1906
> 
1995c2020
< 	char buf[2048]="";
---
> 	char buf[AGI_BUF_LEN] = "";
2026c2051
< 	if (res == AGI_RESULT_SUCCESS) {
---
> 	if (res == AGI_RESULT_SUCCESS || res == AGI_RESULT_SUCCESS_FAST) {
2030a2056
> 		agi.fast = (res == AGI_RESULT_SUCCESS_FAST) ? 1 : 0;
2033c2059
< 		if (res == AGI_RESULT_SUCCESS && status)
---
> 		if ((res == AGI_RESULT_SUCCESS || res == AGI_RESULT_SUCCESS_FAST) && status)
2044a2071
> 	case AGI_RESULT_SUCCESS_FAST:
Only in asterisk-1.4.11/res: res_agi.o
Only in asterisk-1.4.11/res: res_agi.so
Only in asterisk-1.4.11/res: res_clioriginate.o
Only in asterisk-1.4.11/res: res_clioriginate.so
diff -r asterisk-1.4.11/res/res_config_pgsql.c asterisk-1.4.13/res/res_config_pgsql.c
31c31
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 62797 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 83432 $")
670c670
< 	if (dbhost && !(s = ast_variable_retrieve(config, "general", "dbsock"))) {
---
> 	if (!ast_strlen_zero(dbhost) && !(s = ast_variable_retrieve(config, "general", "dbsock"))) {
679c679
< 	if (dbhost) {
---
> 	if (!ast_strlen_zero(dbhost)) {
705c705
< 	if ((!pgsqlConn) && (dbhost || dbsock) && dbuser && dbpass && my_database) {
---
> 	if ((!pgsqlConn) && (!ast_strlen_zero(dbhost) || !ast_strlen_zero(dbsock)) && !ast_strlen_zero(dbuser) && !ast_strlen_zero(dbpass) && !ast_strlen_zero(my_database)) {
747c747
< 		if (dbhost) {
---
> 		if (!ast_strlen_zero(dbhost)) {
749c749
< 		} else if (dbsock) {
---
> 		} else if (!ast_strlen_zero(dbsock)) {
755c755
< 		if (dbuser && *dbuser) {
---
> 		if (!ast_strlen_zero(dbuser)) {
Only in asterisk-1.4.11/res: res_convert.o
Only in asterisk-1.4.11/res: res_convert.so
diff -r asterisk-1.4.11/res/res_features.c asterisk-1.4.13/res/res_features.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79397 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84437 $")
425c425,427
< 	if (peer && pu->parkingnum != -1) /* Only say number if it's a number */
---
> 	if (peer && pu->parkingnum != -1) { /* Only say number if it's a number */
> 		/* Make sure we don't start saying digits to the channel being parked */
> 		ast_set_flag(peer, AST_FLAG_MASQ_NOSTREAM);
426a429,430
> 		ast_clear_flag(peer, AST_FLAG_MASQ_NOSTREAM);
> 	}
477a482
> #define FEATURE_RETURN_KEEPTRYING    24
498c503
< static int builtin_parkcall(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int builtin_parkcall(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
531c536
< static int builtin_automonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int builtin_automonitor(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
615c620
< static int builtin_disconnect(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int builtin_disconnect(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
642c647
< static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
745c750
< static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
814c819,821
< 	if (check_compat(transferer, newchan))
---
> 	if (check_compat(transferer, newchan)) {
> 		/* we do mean transferee here, NOT transferer */
> 		finishup(transferee);
815a823
> 	}
829c837,838
< 	if (check_compat(transferee, newchan))
---
> 	if (check_compat(transferee, newchan)) {
> 		finishup(transferee);
830a840
> 	}
951c961
< static int feature_exec_app(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense)
---
> static int feature_exec_app(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data)
954c964
< 	struct ast_call_feature *feature;
---
> 	struct ast_call_feature *feature = data;
958,964d967
< 	AST_LIST_LOCK(&feature_list);
< 	AST_LIST_TRAVERSE(&feature_list, feature, feature_entry) {
< 		if (!strcasecmp(feature->exten, code))
< 			break;
< 	}
< 	AST_LIST_UNLOCK(&feature_list);
< 
972c975
< 			return FEATURE_RETURN_PASSDIGITS;
---
> 			return FEATURE_RETURN_KEEPTRYING;
982c985
< 			return FEATURE_RETURN_PASSDIGITS;
---
> 			return FEATURE_RETURN_KEEPTRYING;
1069c1072
< 				res = builtin_features[x].operation(chan, peer, config, code, sense);
---
> 				res = builtin_features[x].operation(chan, peer, config, code, sense, NULL);
1095,1097c1098,1103
< 			res = feature->operation(chan, peer, config, code, sense);
< 			AST_LIST_UNLOCK(&feature_list);
< 			break;
---
> 			res = feature->operation(chan, peer, config, code, sense, feature);
> 			if (res != FEATURE_RETURN_KEEPTRYING) {
> 				AST_LIST_UNLOCK(&feature_list);
> 				break;
> 			}
> 			res = FEATURE_RETURN_PASSDIGITS;
1240c1246
< 						} else {
---
> 						} else if (f->subclass != -1) {
1460c1466,1467
< 			ast_log(LOG_WARNING, "Bridge failed on channels %s and %s\n", chan->name, peer->name);
---
> 			if (!ast_test_flag(chan, AST_FLAG_ZOMBIE) && !ast_test_flag(peer, AST_FLAG_ZOMBIE))
> 				ast_log(LOG_WARNING, "Bridge failed on channels %s and %s, res = %d\n", chan->name, peer->name, res);
1573c1580
< 			if (ast_test_flag(peer->cdr, AST_CDR_FLAG_LOCKED))
---
> 			if (!ast_test_flag(peer->cdr, AST_CDR_FLAG_LOCKED))
Only in asterisk-1.4.11/res: res_features.o
Only in asterisk-1.4.11/res: res_features.so
Only in asterisk-1.4.11/res: res_indications.o
Only in asterisk-1.4.11/res: res_indications.so
diff -r asterisk-1.4.11/res/res_jabber.c asterisk-1.4.13/res/res_jabber.c
36c36
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79665 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84902 $")
1173,1174c1173,1178
< 	if (!buddy) {
< 		ast_log(LOG_NOTICE, "Got presence packet from %s, someone not in our roster!!!!\n", pak->from->partial);
---
> 	if (!buddy && pak->from->partial) {
> 		/* allow our jid to be used to log in with another resource */
> 		if (!strcmp((const char *)pak->from->partial, (const char *)client->jid->partial))
> 			aji_create_buddy(pak->from->partial, client);
> 		else
> 			ast_log(LOG_NOTICE, "Got presence packet from %s, someone not in our roster!!!!\n", pak->from->partial);
1188c1192
< 	while (tmp) {
---
> 	while (tmp && pak->from->resource) {
1261c1265
< 	if (!found && status != 6) {
---
> 	if (!found && status != 6 && pak->from->resource) {
1296,1301d1299
< 	/* if 'from' attribute does not contain 'resource' string
< 	   point to the top of our resource list */
< 	if (!found && !pak->from->resource && buddy->resources) {
< 		found = buddy->resources;
< 	}
< 
1314c1312,1313
< 	if(status !=6 && !found->cap) {
---
> 	/* retrieve capabilites of the new resource */
> 	if(status !=6 && found && !found->cap) {
1327c1326
< 				iks_insert_attrib(iq,"from",iks_find_attrib(pak->x,"to"));
---
> 				iks_insert_attrib(iq,"from", client->jid->full);
Only in asterisk-1.4.11/res: res_monitor.o
Only in asterisk-1.4.11/res: res_monitor.so
diff -r asterisk-1.4.11/res/res_musiconhold.c asterisk-1.4.13/res/res_musiconhold.c
35c35
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79792 $")
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 84160 $")
121,122c121,122
< 	unsigned char pos;
< 	unsigned char save_pos;
---
> 	int pos;
> 	int save_pos;
218c218
< 	if (state->class->delete && ast_atomic_dec_and_test(&state->class->inuse))
---
> 	if (ast_atomic_dec_and_test(&state->class->inuse) && state->class->delete)
235c235
< 	if (state->save_pos) {
---
> 	if (state->save_pos >= 0) {
237c237
< 		state->save_pos = 0;
---
> 		state->save_pos = -1;
314a315
> 		state->save_pos = -1;
Only in asterisk-1.4.11/res: res_musiconhold.o
Only in asterisk-1.4.11/res: res_musiconhold.so
Only in asterisk-1.4.11/res: res_smdi.o
Only in asterisk-1.4.11/res: res_smdi.so
diff -r asterisk-1.4.11/res/res_speech.c asterisk-1.4.13/res/res_speech.c
28c28
< ASTERISK_FILE_VERSION(__FILE__, "$Revision: 79334 $");
---
> ASTERISK_FILE_VERSION(__FILE__, "$Revision: 81406 $");
123c123
< 	if (speech->engine->get != NULL && ast_test_flag(speech, AST_SPEECH_HAVE_RESULTS)) {
---
> 	if (speech->engine->get != NULL) {
Only in asterisk-1.4.11/res: res_speech.o
Only in asterisk-1.4.11/res: res_speech.so
Only in asterisk-1.4.13: temp.txt
diff -r asterisk-1.4.11/UPGRADE.txt asterisk-1.4.13/UPGRADE.txt
133c133,135
<   deprecated in version 1.2 and is no longer recognized in this version.
---
>   deprecated in version 1.2 and is no longer recognized in this version.  The
>   use of Set with multiple argument pairs has also been deprecated.  Please
>   separate each name/value pair into its own dialplan line.
316a319,333
> * It is possible that previous configurations depended on the order in which
>   peers and users were specified in iax.conf for forcing the order in which
>   chan_iax2 matched against them.  This behavior is going away and is considered
>   deprecated in this version.  Avoid having ambiguous peer and user entries and
>   to make things easy on yourself, always set the "username" option for users
>   so that the remote end can match on that exactly instead of trying to infer
>   which user you want based on host.
> 
>   If you would like to go ahead and use the new behavior which doesn't use the
>   order in the config file to influence matching order, then change the 
>   MAX_PEER_BUCKETS define in chan_iax2.c to a value greater than one.  An
>   example is provided there.  By changing this, you will get *much* better
>   performance on systems that do a lot of peer and user lookups as they will be
>   stored in memory in a much more efficient manner.
> 
Only in asterisk-1.4.11/utils: aelbison.c
Only in asterisk-1.4.11/utils: aelbison.o
diff -r asterisk-1.4.11/utils/ael_main.c asterisk-1.4.13/utils/ael_main.c
17a18,21
> /*** MODULEINFO
>   	<depend>pbx_ael</depend>
>  ***/
> 
57,58c61,62
< struct namelist *create_name(char *name);
< struct namelist *create_name(char *name)
---
> struct namelist *create_name(const char *name);
> struct namelist *create_name(const char *name)
285c289
< 	struct namelist *x = create_name((char*)data);
---
> 	struct namelist *x = create_name(data);
290c294
< 		x = create_name((char*)data);
---
> 		x = create_name(data);
317c321
< 		x = create_name((char*)value);
---
> 		x = create_name(value);
Only in asterisk-1.4.11/utils: ael_main.o
Only in asterisk-1.4.11/utils: aelparse
Only in asterisk-1.4.11/utils: aelparse.c
Only in asterisk-1.4.11/utils: aelparse.o
Only in asterisk-1.4.11/utils: ast_expr2.c
Only in asterisk-1.4.11/utils: ast_expr2f.c
Only in asterisk-1.4.11/utils: ast_expr2f.o
Only in asterisk-1.4.11/utils: ast_expr2.o
Only in asterisk-1.4.11/utils: frame.o
Only in asterisk-1.4.11/utils: muted
Only in asterisk-1.4.11/utils: muted.o
Only in asterisk-1.4.11/utils: pbx_ael.c
Only in asterisk-1.4.11/utils: pbx_ael.o
Only in asterisk-1.4.11/utils: stereorize
Only in asterisk-1.4.11/utils: stereorize.o
Only in asterisk-1.4.11/utils: strcompat.c
Only in asterisk-1.4.11/utils: strcompat.o
Only in asterisk-1.4.11/utils: streamplayer
Only in asterisk-1.4.11/utils: streamplayer.o
diff -r asterisk-1.4.11/.version asterisk-1.4.13/.version
1c1
< 1.4.11
---
> 1.4.13
snaps:~# 
Script done on Wednesday 07 November 2007 08:39:22 PM IST