rendered paste bodyScript 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(>alk_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, ®->addr, NEW_FORCE, 1, defaultsockfd);
---
> reg->callno = find_callno(0, 0, ®->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