[asterisk-commits] qwell: branch qwell/gtalk_jingle-merge r56004 -
in /team/qwell/gtalk_jingle-m...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Feb 21 14:41:06 MST 2007
Author: qwell
Date: Wed Feb 21 15:41:05 2007
New Revision: 56004
URL: http://svn.digium.com/view/asterisk?view=rev&rev=56004
Log:
Merged revisions 55495,55514,55534,55554,55556,55591,55635,55671,55697,55716,55718,55748,55762-55763,55805,55835,55870,55915,55948,55950,55952-55953,55955,55958 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r55495 | qwell | 2007-02-19 17:27:09 -0600 (Mon, 19 Feb 2007) | 2 lines
We need to bump the cleancount when we make API changes...
................
r55514 | oej | 2007-02-20 01:48:12 -0600 (Tue, 20 Feb 2007) | 11 lines
Merged revisions 55483 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55483 | oej | 2007-02-19 22:12:55 +0100 (Mon, 19 Feb 2007) | 3 lines
- Not sending arguments to an application is not "out of memory"
- Making error messages a bit more clear
........
................
r55534 | file | 2007-02-20 09:19:23 -0600 (Tue, 20 Feb 2007) | 2 lines
I like it when trunk builds, so let's make res_jabber compile again!
................
r55554 | russell | 2007-02-20 10:42:33 -0600 (Tue, 20 Feb 2007) | 11 lines
Merged revisions 55553 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55553 | russell | 2007-02-20 10:41:57 -0600 (Tue, 20 Feb 2007) | 3 lines
Change the formatting of sla.conf.sample to make it more readable.
(issue #9112, blitzrage)
........
................
r55556 | qwell | 2007-02-20 10:56:58 -0600 (Tue, 20 Feb 2007) | 12 lines
Merged revisions 55555 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55555 | qwell | 2007-02-20 10:53:45 -0600 (Tue, 20 Feb 2007) | 4 lines
No need to cast nor free with strdupa (thanks file)
55555!
........
................
r55591 | russell | 2007-02-20 13:58:07 -0600 (Tue, 20 Feb 2007) | 10 lines
Merged revisions 55590 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55590 | russell | 2007-02-20 13:57:07 -0600 (Tue, 20 Feb 2007) | 2 lines
Increase the maximum number of manager headers to 128, at the request of Pari.
........
................
r55635 | russell | 2007-02-20 14:32:13 -0600 (Tue, 20 Feb 2007) | 11 lines
Merged revisions 55634 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55634 | russell | 2007-02-20 14:26:06 -0600 (Tue, 20 Feb 2007) | 3 lines
Add the Asterisk version information to the Server header in HTTP
responses. (requested by Pari)
........
................
r55671 | file | 2007-02-20 16:49:53 -0600 (Tue, 20 Feb 2007) | 18 lines
Merged revisions 55670 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r55670 | file | 2007-02-20 17:47:00 -0500 (Tue, 20 Feb 2007) | 10 lines
Merged revisions 55669 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r55669 | file | 2007-02-20 17:39:14 -0500 (Tue, 20 Feb 2007) | 2 lines
Defer clearing callback information if channels are up until they are hung up. This ensures the hangup process goes smoothly and no channels get hung in limbo. (issue #8088 reported by kebl0155)
........
................
................
r55697 | file | 2007-02-20 17:12:55 -0600 (Tue, 20 Feb 2007) | 10 lines
Merged revisions 55688 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55688 | file | 2007-02-20 18:08:45 -0500 (Tue, 20 Feb 2007) | 2 lines
Don't test our own address against the localnet settings. At least one person has had issues as a result of this from #7051 so I'm reversing it. (issue #8821 reported by kokoskarokoska)
........
................
r55716 | file | 2007-02-20 17:26:00 -0600 (Tue, 20 Feb 2007) | 2 lines
Flush out the file pointer. (issue #9115 reported by guthrie)
................
r55718 | file | 2007-02-20 18:00:11 -0600 (Tue, 20 Feb 2007) | 10 lines
Merged revisions 55717 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55717 | file | 2007-02-20 18:57:03 -0500 (Tue, 20 Feb 2007) | 2 lines
Return behavior I removed. I did not remember that you could just add a localnet entry to make it work.
........
................
r55748 | file | 2007-02-20 18:14:07 -0600 (Tue, 20 Feb 2007) | 10 lines
Merged revisions 55741 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55741 | file | 2007-02-20 19:11:20 -0500 (Tue, 20 Feb 2007) | 2 lines
Better handle dropped IMAP connections. (issue #9054 reported by bsmithurst)
........
................
r55762 | russell | 2007-02-20 19:05:00 -0600 (Tue, 20 Feb 2007) | 12 lines
Merged revisions 55758 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55758 | russell | 2007-02-20 19:03:25 -0600 (Tue, 20 Feb 2007) | 4 lines
Improve the reference counting to fix bugs where people report seeing
conferences listed that have no members.
(issue #9073)
........
................
r55763 | file | 2007-02-20 19:05:26 -0600 (Tue, 20 Feb 2007) | 2 lines
Return trunk to a state where it compiles under Darwin. The byte order stuff is ugly, if anyone wants to clean it up... by all means do so.
................
r55805 | qwell | 2007-02-20 20:04:10 -0600 (Tue, 20 Feb 2007) | 12 lines
Merged revisions 55799 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55799 | qwell | 2007-02-20 20:01:36 -0600 (Tue, 20 Feb 2007) | 4 lines
Fix segfault when buddy couldn't be found.
Issue 7764, patch by sailer
........
................
r55835 | oej | 2007-02-21 02:39:15 -0600 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55834 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55834 | oej | 2007-02-21 09:32:34 +0100 (Wed, 21 Feb 2007) | 2 lines
Issue #8848 - Turn off lamp more quickly after transfer (decrement inuse early on transferer's call leg)
........
................
r55870 | kpfleming | 2007-02-21 08:07:43 -0600 (Wed, 21 Feb 2007) | 18 lines
Merged revisions 55869 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r55869 | kpfleming | 2007-02-21 08:06:47 -0600 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55868 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r55868 | kpfleming | 2007-02-21 08:03:11 -0600 (Wed, 21 Feb 2007) | 2 lines
use new tag version script
........
................
................
r55915 | file | 2007-02-21 11:23:42 -0600 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55914 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55914 | file | 2007-02-21 12:18:19 -0500 (Wed, 21 Feb 2007) | 2 lines
Add a flag that indicates whether a SIP dialog is an outgoing call or not. SIP_OUTGOING originally did it but it was repurposed to the direction of the last transaction, which can cause update_call_counter to falsely decrease the wrong counters. (please don't hurt me oej) (issue #8943 reported by mdu113)
........
................
r55948 | file | 2007-02-21 14:05:15 -0600 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55947 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55947 | file | 2007-02-21 15:03:38 -0500 (Wed, 21 Feb 2007) | 2 lines
Only start playing the next file if we have not been quieted.
........
................
r55950 | file | 2007-02-21 14:18:16 -0600 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55949 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55949 | file | 2007-02-21 15:16:34 -0500 (Wed, 21 Feb 2007) | 2 lines
Only dispose of the conference if one was created.
........
................
r55952 | russell | 2007-02-21 14:23:03 -0600 (Wed, 21 Feb 2007) | 11 lines
Merged revisions 55951 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55951 | russell | 2007-02-21 14:22:33 -0600 (Wed, 21 Feb 2007) | 3 lines
Simplify the last change to app_meetme, and move the call to dispose_conf()
up into the block where we know a conf exists.
........
................
r55953 | file | 2007-02-21 14:26:43 -0600 (Wed, 21 Feb 2007) | 2 lines
Clarify in the doxygen docs abou RFC2833 compensation flag.
................
r55955 | qwell | 2007-02-21 14:30:54 -0600 (Wed, 21 Feb 2007) | 12 lines
Merged revisions 55954 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r55954 | qwell | 2007-02-21 14:27:08 -0600 (Wed, 21 Feb 2007) | 4 lines
Fix locking issue, and accept "transport-accept" as a valid accept message.
This should solve issues 8970 and 8503.
........
................
r55958 | file | 2007-02-21 14:41:53 -0600 (Wed, 21 Feb 2007) | 18 lines
Merged revisions 55957 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
................
r55957 | file | 2007-02-21 15:35:40 -0500 (Wed, 21 Feb 2007) | 10 lines
Merged revisions 55956 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r55956 | file | 2007-02-21 15:32:16 -0500 (Wed, 21 Feb 2007) | 2 lines
Change naughty warning message to provide useful information. If a write now fails on a channel in meetme it will tell you the channel name instead of spitting out the wrong error message.
........
................
................
Modified:
team/qwell/gtalk_jingle-merge/ (props changed)
team/qwell/gtalk_jingle-merge/.cleancount
team/qwell/gtalk_jingle-merge/apps/app_meetme.c
team/qwell/gtalk_jingle-merge/apps/app_speech_utils.c
team/qwell/gtalk_jingle-merge/apps/app_voicemail.c
team/qwell/gtalk_jingle-merge/build_tools/make_version
team/qwell/gtalk_jingle-merge/channels/chan_agent.c
team/qwell/gtalk_jingle-merge/channels/chan_gtalk.c
team/qwell/gtalk_jingle-merge/channels/chan_jingle.c
team/qwell/gtalk_jingle-merge/channels/chan_sip.c
team/qwell/gtalk_jingle-merge/configs/sla.conf.sample
team/qwell/gtalk_jingle-merge/include/asterisk/manager.h
team/qwell/gtalk_jingle-merge/main/dns.c
team/qwell/gtalk_jingle-merge/main/http.c
team/qwell/gtalk_jingle-merge/main/logger.c
team/qwell/gtalk_jingle-merge/res/res_jabber.c
Propchange: team/qwell/gtalk_jingle-merge/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/qwell/gtalk_jingle-merge/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Feb 21 15:41:05 2007
@@ -1,1 +1,1 @@
-/trunk:1-55478
+/trunk:1-56003
Modified: team/qwell/gtalk_jingle-merge/.cleancount
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/.cleancount?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/.cleancount (original)
+++ team/qwell/gtalk_jingle-merge/.cleancount Wed Feb 21 15:41:05 2007
@@ -1,1 +1,1 @@
-28
+29
Modified: team/qwell/gtalk_jingle-merge/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/apps/app_meetme.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/apps/app_meetme.c (original)
+++ team/qwell/gtalk_jingle-merge/apps/app_meetme.c Wed Feb 21 15:41:05 2007
@@ -634,7 +634,7 @@
static struct ast_conference *build_conf(char *confno, char *pin, char *pinadmin, int make, int dynamic, int refcount)
{
struct ast_conference *cnf;
- struct zt_confinfo ztc;
+ struct zt_confinfo ztc = { 0, };
AST_LIST_LOCK(&confs);
@@ -655,8 +655,6 @@
ast_copy_string(cnf->confno, confno, sizeof(cnf->confno));
ast_copy_string(cnf->pin, pin, sizeof(cnf->pin));
ast_copy_string(cnf->pinadmin, pinadmin, sizeof(cnf->pinadmin));
- cnf->refcount = 0;
- cnf->markedusers = 0;
cnf->chan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL);
if (cnf->chan) {
ast_set_read_format(cnf->chan, AST_FORMAT_SLINEAR);
@@ -672,9 +670,8 @@
goto cnfout;
}
}
- memset(&ztc, 0, sizeof(ztc));
+
/* Setup a new zap conference */
- ztc.chan = 0;
ztc.confno = -1;
ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
if (ioctl(cnf->fd, ZT_SETCONF, &ztc)) {
@@ -709,7 +706,7 @@
cnfout:
if (cnf)
- cnf->refcount += refcount;
+ ast_atomic_fetchadd_int(&cnf->refcount, refcount);
AST_LIST_UNLOCK(&confs);
@@ -1060,6 +1057,7 @@
conf->recording = MEETME_RECORD_TERMINATE;
AST_LIST_UNLOCK(&confs);
while (1) {
+ usleep(1);
AST_LIST_LOCK(&confs);
if (conf->recording == MEETME_RECORD_OFF)
break;
@@ -1145,6 +1143,22 @@
ast_cond_signal(&sla.cond);
ast_mutex_unlock(&sla.lock);
}
+
+/* Decrement reference counts, as incremented by find_conf() */
+static int dispose_conf(struct ast_conference *conf)
+{
+ int res = 0;
+
+ AST_LIST_LOCK(&confs);
+ if (ast_atomic_dec_and_test(&conf->refcount)) {
+ conf_free(conf);
+ res = 1;
+ }
+ AST_LIST_UNLOCK(&confs);
+
+ return res;
+}
+
static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int confflags, char *optargs[])
{
@@ -1188,15 +1202,8 @@
char __buf[CONF_SIZE + AST_FRIENDLY_OFFSET];
char *buf = __buf + AST_FRIENDLY_OFFSET;
- if (!(user = ast_calloc(1, sizeof(*user)))) {
- AST_LIST_LOCK(&confs);
- conf->refcount--;
- if (!conf->refcount){
- conf_free(conf);
- }
- AST_LIST_UNLOCK(&confs);
+ if (!(user = ast_calloc(1, sizeof(*user))))
return ret;
- }
/* Possible timeout waiting for marked user */
if ((confflags & CONFFLAG_WAITMARKED) &&
@@ -1980,7 +1987,7 @@
if (conf->transframe[index]) {
if (conf->transframe[index]->frametype != AST_FRAME_NULL) {
if (ast_write(chan, conf->transframe[index]))
- ast_log(LOG_WARNING, "Unable to write frame to channel: %s\n", strerror(errno));
+ ast_log(LOG_WARNING, "Unable to write frame to channel %s\n", chan->name);
}
} else {
ast_mutex_unlock(&conf->listenlock);
@@ -1992,7 +1999,7 @@
if (user->listen.actual)
ast_frame_adjust_volume(&fr, user->listen.actual);
if (ast_write(chan, &fr) < 0) {
- ast_log(LOG_WARNING, "Unable to write frame to channel: %s\n", strerror(errno));
+ ast_log(LOG_WARNING, "Unable to write frame to channel %s\n", chan->name);
}
}
} else
@@ -2065,7 +2072,6 @@
}
conf->users--;
- conf->refcount--;
/* Update table */
snprintf(members, sizeof(members), "%d", conf->users);
ast_update_realtime("meetme", "confno", conf->confno, "members", members, NULL);
@@ -2077,12 +2083,7 @@
/* Change any states */
if (!conf->users)
ast_device_state_changed("meetme:%s", conf->confno);
-
- if (AST_LIST_EMPTY(&conf->userlist)) {
- /* close this one when no more users and no references*/
- if (!conf->refcount)
- conf_free(conf);
- }
+
/* Return the number of seconds the user was in the conf */
snprintf(meetmesecs, sizeof(meetmesecs), "%d", (int) (time(NULL) - user->jointime));
pbx_builtin_setvar_helper(chan, "MEETMESECS", meetmesecs);
@@ -2272,11 +2273,13 @@
AST_STANDARD_APP_ARGS(args, localdata);
- conf = find_conf(chan, args.confno, 0, 0, NULL, 0, 0, NULL);
-
- if (conf)
+ conf = find_conf(chan, args.confno, 0, 0, NULL, 0, 1, NULL);
+
+ if (conf) {
count = conf->users;
- else
+ dispose_conf(conf);
+ conf = NULL;
+ } else
count = 0;
if (!ast_strlen_zero(args.varname)){
@@ -2301,7 +2304,7 @@
char confno[MAX_CONFNUM] = "";
int allowretry = 0;
int retrycnt = 0;
- struct ast_conference *cnf;
+ struct ast_conference *cnf = NULL;
struct ast_flags confflags = {0};
int dynamic = 0;
int empty = 0, empty_no_pin = 0;
@@ -2514,15 +2517,8 @@
ast_log(LOG_WARNING, "Couldn't play invalid pin msg!\n");
break;
}
- if (res < 0) {
- AST_LIST_LOCK(&confs);
- cnf->refcount--;
- if (!cnf->refcount){
- conf_free(cnf);
- }
- AST_LIST_UNLOCK(&confs);
+ if (res < 0)
break;
- }
pin[0] = res;
pin[1] = '\0';
res = -1;
@@ -2534,12 +2530,6 @@
res = -1;
allowretry = 0;
/* see if we need to get rid of the conference */
- AST_LIST_LOCK(&confs);
- cnf->refcount--;
- if (!cnf->refcount) {
- conf_free(cnf);
- }
- AST_LIST_UNLOCK(&confs);
break;
}
@@ -2555,10 +2545,15 @@
/* Run the conference */
res = conf_run(chan, cnf, confflags.flags, optargs);
}
+ dispose_conf(cnf);
+ cnf = NULL;
}
}
} while (allowretry);
-
+
+ if (cnf)
+ dispose_conf(cnf);
+
ast_module_user_remove(u);
return res;
@@ -2621,6 +2616,8 @@
ast_module_user_remove(u);
return 0;
}
+
+ ast_atomic_fetchadd_int(&cnf->refcount, 1);
if (args.user)
user = find_user(cnf, args.user);
@@ -2725,6 +2722,8 @@
AST_LIST_UNLOCK(&confs);
+ dispose_conf(cnf);
+
ast_module_user_remove(u);
return 0;
@@ -3018,8 +3017,11 @@
CONFFLAG_QUIET | CONFFLAG_MARKEDEXIT | CONFFLAG_PASS_DTMF | CONFFLAG_SLA_STATION);
ast_answer(trunk_ref->chan);
conf = build_conf(conf_name, "", "", 0, 0, 1);
- if (conf)
+ if (conf) {
conf_run(trunk_ref->chan, conf, conf_flags.flags, NULL);
+ dispose_conf(conf);
+ conf = NULL;
+ }
trunk_ref->chan = NULL;
if (ast_atomic_dec_and_test((int *) &trunk_ref->trunk->active_stations)) {
strncat(conf_name, "|K", sizeof(conf_name) - strlen(conf_name) - 1);
@@ -3334,8 +3336,11 @@
ast_cond_signal(args->cond);
ast_mutex_unlock(args->cond_lock);
- if (conf)
+ if (conf) {
conf_run(trunk->chan, conf, conf_flags.flags, NULL);
+ dispose_conf(conf);
+ conf = NULL;
+ }
trunk->chan = NULL;
@@ -3440,8 +3445,11 @@
trunk_ref->chan = chan;
ast_answer(chan);
conf = build_conf(conf_name, "", "", 0, 0, 1);
- if (conf)
+ if (conf) {
conf_run(chan, conf, conf_flags.flags, NULL);
+ dispose_conf(conf);
+ conf = NULL;
+ }
trunk_ref->chan = NULL;
res = ast_atomic_fetchadd_int((int *) &trunk_ref->trunk->active_stations, -1);
if (res == 1) {
@@ -3517,6 +3525,8 @@
CONFFLAG_QUIET | CONFFLAG_MARKEDEXIT | CONFFLAG_MARKEDUSER | CONFFLAG_PASS_DTMF);
ast_indicate(chan, AST_CONTROL_RINGING);
conf_run(chan, conf, conf_flags.flags, NULL);
+ dispose_conf(conf);
+ conf = NULL;
trunk->chan = NULL;
pbx_builtin_setvar_helper(chan, "SLATRUNK_STATUS", "SUCCESS");
Modified: team/qwell/gtalk_jingle-merge/apps/app_speech_utils.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/apps/app_speech_utils.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/apps/app_speech_utils.c (original)
+++ team/qwell/gtalk_jingle-merge/apps/app_speech_utils.c Wed Feb 21 15:41:05 2007
@@ -560,7 +560,7 @@
/* Okay it's streaming so go into a loop grabbing frames! */
while (done == 0) {
/* If the filename is null and stream is not running, start up a new sound file */
- if ((chan->streamid == -1 && chan->timingfunc == NULL) && (filename = strsep(&filename_tmp, "&"))) {
+ if (!quieted && (chan->streamid == -1 && chan->timingfunc == NULL) && (filename = strsep(&filename_tmp, "&"))) {
/* Discard old stream information */
ast_stopstream(chan);
/* Start new stream */
Modified: team/qwell/gtalk_jingle-merge/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/apps/app_voicemail.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/apps/app_voicemail.c (original)
+++ team/qwell/gtalk_jingle-merge/apps/app_voicemail.c Wed Feb 21 15:41:05 2007
@@ -2468,6 +2468,7 @@
fread(buf, len, 1, p);
((char *)buf)[len] = '\0';
INIT(&str, mail_string, buf, len);
+ init_mailstream(vms, 0);
imap_mailbox_name(mailbox, vms, 0, 1);
if(!mail_append(vms->mailstream, mailbox, &str))
ast_log(LOG_ERROR, "Error while sending the message to %s\n", mailbox);
@@ -2578,12 +2579,10 @@
}
/* If no mailstream exists yet and even after attempting to initialize it fails, bail out */
- if (!vms_p->mailstream) {
- ret = init_mailstream(vms_p, 0);
- if (!vms_p->mailstream) {
- ast_log (LOG_ERROR,"Houston we have a problem - IMAP mailstream is NULL\n");
- return -1;
- }
+ ret = init_mailstream(vms_p, 0);
+ if (!vms_p->mailstream) {
+ ast_log (LOG_ERROR,"Houston we have a problem - IMAP mailstream is NULL\n");
+ return -1;
}
if (!ret && vms_p->updated == 1) {
Modified: team/qwell/gtalk_jingle-merge/build_tools/make_version
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/build_tools/make_version?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/build_tools/make_version (original)
+++ team/qwell/gtalk_jingle-merge/build_tools/make_version Wed Feb 21 15:41:05 2007
@@ -2,12 +2,11 @@
if [ -f ${1}/.version ]; then
cat ${1}/.version
-elif [ -f ${1}/.svnrevision ]; then
- echo SVN-`cat ${1}/.svnbranch`-r`cat ${1}/.svnrevision`
elif [ -d .svn ]; then
PARTS=`LANG=C svn info ${1} | grep URL | awk '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'`
BRANCH=0
TEAM=0
+ TAG=0
REV=`svnversion -c ${1} | cut -d: -f2`
@@ -19,6 +18,12 @@
for PART in $PARTS
do
+ if [ ${TAG} != 0 ]
+ then
+ RESULT="${PART}"
+ break
+ fi
+
if [ ${BRANCH} != 0 ]
then
RESULT="${RESULT}-${PART}"
@@ -40,8 +45,7 @@
if [ "${PART}" = "tags" ]
then
- BRANCH=1
- RESULT="tag"
+ TAG=1
continue
fi
@@ -52,5 +56,10 @@
fi
done
- echo SVN-${RESULT##-}-r${REV}
+ if [ ${TAG} != 0 ]
+ then
+ echo ${RESULT}
+ else
+ echo SVN-${RESULT##-}-r${REV}
+ fi
fi
Modified: team/qwell/gtalk_jingle-merge/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/channels/chan_agent.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/channels/chan_agent.c (original)
+++ team/qwell/gtalk_jingle-merge/channels/chan_agent.c Wed Feb 21 15:41:05 2007
@@ -169,6 +169,7 @@
int abouttograb; /*!< About to grab */
int autologoff; /*!< Auto timeout time */
int ackcall; /*!< ackcall */
+ int deferlogoff; /*!< Defer logoff to hangup */
time_t loginstart; /*!< When agent first logged in (0 when logged off) */
time_t start; /*!< When call started */
struct timeval lastdisc; /*!< When last disconnected */
@@ -765,10 +766,12 @@
}
if (option_debug)
ast_log(LOG_DEBUG, "Hungup, howlong is %d, autologoff is %d\n", howlong, p->autologoff);
- if (howlong && p->autologoff && (howlong > p->autologoff)) {
+ if ((p->deferlogoff) || (howlong && p->autologoff && (howlong > p->autologoff))) {
long logintime = time(NULL) - p->loginstart;
p->loginstart = 0;
- ast_log(LOG_NOTICE, "Agent '%s' didn't answer/confirm within %d seconds (waited %d)\n", p->name, p->autologoff, howlong);
+ if (!p->deferlogoff)
+ ast_log(LOG_NOTICE, "Agent '%s' didn't answer/confirm within %d seconds (waited %d)\n", p->name, p->autologoff, howlong);
+ p->deferlogoff = 0;
agent_logoff_maintenance(p, p->loginchan, logintime, ast->uniqueid, "Autologoff");
}
} else if (p->dead) {
@@ -1507,16 +1510,20 @@
AST_LIST_TRAVERSE(&agents, p, list) {
if (!strcasecmp(p->agent, agent)) {
- if (!soft) {
- if (p->owner)
- ast_softhangup(p->owner, AST_SOFTHANGUP_EXPLICIT);
- if (p->chan)
- ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);
+ ret = 0;
+ if (p->owner || p->chan) {
+ p->deferlogoff = 1;
+ if (!soft) {
+ if (p->owner)
+ ast_softhangup(p->owner, AST_SOFTHANGUP_EXPLICIT);
+ if (p->chan)
+ ast_softhangup(p->chan, AST_SOFTHANGUP_EXPLICIT);
+ }
+ } else {
+ logintime = time(NULL) - p->loginstart;
+ p->loginstart = 0;
+ agent_logoff_maintenance(p, p->loginchan, logintime, NULL, "CommandLogoff");
}
- ret = 0; /* found an agent => return 0 */
- logintime = time(NULL) - p->loginstart;
- p->loginstart = 0;
- agent_logoff_maintenance(p, p->loginchan, logintime, NULL, "CommandLogoff");
break;
}
}
Modified: team/qwell/gtalk_jingle-merge/channels/chan_gtalk.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/channels/chan_gtalk.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/channels/chan_gtalk.c (original)
+++ team/qwell/gtalk_jingle-merge/channels/chan_gtalk.c Wed Feb 21 15:41:05 2007
@@ -257,11 +257,11 @@
{
struct gtalk *gtalk = NULL;
char *domain = NULL , *s = NULL;
+
if(strchr(connection, '@')) {
- s = ast_strdupa((char *) connection);
+ s = ast_strdupa(connection);
domain = strsep(&s, "@");
ast_verbose("OOOOH domain = %s\n", domain);
- free(s);
}
gtalk = ASTOBJ_CONTAINER_FIND(>alk_list, name);
if (!gtalk && strchr(name, '@'))
@@ -269,20 +269,20 @@
if (!gtalk) { /* guest call */
ASTOBJ_CONTAINER_TRAVERSE(>alk_list, 1, {
- ASTOBJ_WRLOCK(iterator);
+ ASTOBJ_RDLOCK(iterator);
if (!strcasecmp(iterator->name, "guest")) {
if (!strcasecmp(iterator->connection->jid->partial, connection)) {
gtalk = iterator;
- break;
} else if (!strcasecmp(iterator->connection->name, connection)) {
gtalk = iterator;
- break;
} else if (iterator->connection->component && !strcasecmp(iterator->connection->user,domain)) {
gtalk = iterator;
- break;
}
}
ASTOBJ_UNLOCK(iterator);
+
+ if (gtalk)
+ break;
});
}
@@ -839,7 +839,7 @@
buddy = ASTOBJ_CONTAINER_FIND(&client->connection->buddies, them);
if (buddy)
resources = buddy->resources;
- } else
+ } else if (client->buddy)
resources = client->buddy->resources;
while (resources) {
if (resources->cap->jingle) {
@@ -876,13 +876,11 @@
}
if(strchr(tmp->us, '/')) {
- data = ast_strdupa((char *) tmp->us);
+ data = ast_strdupa(tmp->us);
exten = strsep(&data, "/");
} else
exten = tmp->us;
ast_copy_string(tmp->exten, exten, sizeof(tmp->exten));
- if(data)
- free(data);
ast_mutex_init(&tmp->lock);
ast_mutex_lock(>alklock);
tmp->next = client->p;
@@ -1480,15 +1478,13 @@
struct ast_channel *chan = NULL;
if (data) {
- s = ast_strdupa((char *) data);
+ s = ast_strdupa(data);
if (s) {
sender = strsep(&s, "/");
if (sender && (sender[0] != '\0'))
to = strsep(&s, "/");
if (!to) {
ast_log(LOG_ERROR, "Bad arguments in Gtalk Dialstring: %s\n", (char*) data);
- if (s)
- free(s);
return NULL;
}
}
@@ -1496,14 +1492,14 @@
client = find_gtalk(to, sender);
if (!client) {
ast_log(LOG_WARNING, "Could not find recipient.\n");
- if (s)
- free(s);
return NULL;
}
+ ASTOBJ_WRLOCK(client);
p = gtalk_alloc(client, strchr(sender, '@') ? sender : client->connection->jid->full, strchr(to, '@') ? to : client->user, NULL);
if (p)
chan = gtalk_new(client, p, AST_STATE_DOWN, to);
+ ASTOBJ_UNLOCK(client);
return chan;
}
@@ -1533,13 +1529,13 @@
if (iks_find_with_attrib(pak->x, "session", "type", "initiate")) {
/* New call */
gtalk_newcall(client, pak);
- } else if (iks_find_with_attrib(pak->x, "session", "type", "candidates") || iks_find_with_attrib(pak->x, "session", "type", "transport-info") ) {
+ } else if (iks_find_with_attrib(pak->x, "session", "type", "candidates") || iks_find_with_attrib(pak->x, "session", "type", "transport-info")) {
if (option_debug > 2)
ast_log(LOG_DEBUG, "About to add candidate!\n");
gtalk_add_candidate(client, pak);
if (option_debug > 2)
ast_log(LOG_DEBUG, "Candidate Added!\n");
- } else if (iks_find_with_attrib(pak->x, "session", "type", "accept")) {
+ } else if (iks_find_with_attrib(pak->x, "session", "type", "accept") || iks_find_with_attrib(pak->x, "session", "type", "transport-accept")) {
gtalk_is_answered(client, pak);
} else if (iks_find_with_attrib(pak->x, "session", "type", "content-info")) {
gtalk_handle_dtmf(client, pak);
Modified: team/qwell/gtalk_jingle-merge/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/channels/chan_jingle.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/channels/chan_jingle.c (original)
+++ team/qwell/gtalk_jingle-merge/channels/chan_jingle.c Wed Feb 21 15:41:05 2007
@@ -242,17 +242,18 @@
if (!jingle) { /* guest call */
ASTOBJ_CONTAINER_TRAVERSE(&jingles, 1, {
- ASTOBJ_WRLOCK(iterator);
+ ASTOBJ_RDLOCK(iterator);
if (!strcasecmp(iterator->name, "guest")) {
if (!strcasecmp(iterator->connection->jid->partial, connection)) {
jingle = iterator;
- break;
} else if (!strcasecmp(iterator->connection->name, connection)) {
jingle = iterator;
- break;
}
}
ASTOBJ_UNLOCK(iterator);
+
+ if (jingle)
+ break;
});
}
@@ -707,7 +708,7 @@
buddy = ASTOBJ_CONTAINER_FIND(&client->connection->buddies, from);
if (buddy)
resources = buddy->resources;
- } else
+ } else if (client->buddy)
resources = client->buddy->resources;
while (resources) {
if (resources->cap->jingle) {
@@ -1360,15 +1361,13 @@
struct ast_channel *chan = NULL;
if (data) {
- s = ast_strdupa((char *) data);
+ s = ast_strdupa(data);
if (s) {
sender = strsep(&s, "/");
if (sender && (sender[0] != '\0'))
to = strsep(&s, "/");
if (!to) {
ast_log(LOG_ERROR, "Bad arguments in Jingle Dialstring: %s\n", (char*) data);
- if (s)
- free(s);
return NULL;
}
}
@@ -1376,13 +1375,13 @@
client = find_jingle(to, sender);
if (!client) {
ast_log(LOG_WARNING, "Could not find recipient.\n");
- if (s)
- free(s);
return NULL;
}
+ ASTOBJ_WRLOCK(client);
p = jingle_alloc(client, to, NULL);
if (p)
chan = jingle_new(client, p, AST_STATE_DOWN, to);
+ ASTOBJ_UNLOCK(client);
return chan;
}
Modified: team/qwell/gtalk_jingle-merge/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/channels/chan_sip.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/channels/chan_sip.c (original)
+++ team/qwell/gtalk_jingle-merge/channels/chan_sip.c Wed Feb 21 15:41:05 2007
@@ -794,11 +794,12 @@
#define SIP_PAGE2_CALL_ONHOLD (3 << 23) /*!< Call states */
#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (1 << 23) /*!< 23: One directional hold */
#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (1 << 24) /*!< 24: Inactive */
-#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: ???? */
+#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: Compensate for buggy RFC2833 implementations */
#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< 26: Buggy CISCO MWI fix */
-#define SIP_PAGE2_NOTEXT (1 << 27) /*!< 26: Text not supported */
-#define SIP_PAGE2_TEXTSUPPORT (1 << 28) /*!< 27: Global text enable */
-#define SIP_PAGE2_DEBUG_TEXT (1 << 29) /*!< 28: Global text debug */
+#define SIP_PAGE2_NOTEXT (1 << 27) /*!< 27: Text not supported */
+#define SIP_PAGE2_TEXTSUPPORT (1 << 28) /*!< 28: Global text enable */
+#define SIP_PAGE2_DEBUG_TEXT (1 << 29) /*!< 29: Global text debug */
+#define SIP_PAGE2_OUTGOING_CALL (1 << 30) /*!< 30: Is this an outgoing call? */
#define SIP_PAGE2_FLAGS_TO_COPY \
(SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_VIDEOSUPPORT | \
@@ -1933,8 +1934,8 @@
ours.sin_addr = *us;
if (localaddr && externip.sin_addr.s_addr &&
- ast_apply_ha(localaddr, &theirs) &&
- !ast_apply_ha(localaddr, &ours)) {
+ (ast_apply_ha(localaddr, &theirs)) &&
+ (!ast_apply_ha(localaddr, &ours))) {
if (externexpire && time(NULL) >= externexpire) {
struct ast_hostent ahp;
struct hostent *hp;
@@ -3296,7 +3297,7 @@
{
char name[256];
int *inuse = NULL, *call_limit = NULL, *inringing = NULL;
- int outgoing = ast_test_flag(&fup->flags[0], SIP_OUTGOING);
+ int outgoing = ast_test_flag(&fup->flags[1], SIP_PAGE2_OUTGOING_CALL);
struct sip_user *u = NULL;
struct sip_peer *p = NULL;
@@ -3578,6 +3579,11 @@
}
if (ast_test_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER)) {
+ if (ast_test_flag(&p->flags[0], SIP_INC_COUNT)) {
+ if (option_debug && sipdebug)
+ ast_log(LOG_DEBUG, "update_call_counter(%s) - decrement call limit counter on hangup\n", p->username);
+ update_call_counter(p, DEC_CALL_LIMIT);
+ }
if (option_debug >3)
ast_log(LOG_DEBUG, "SIP Transfer: Not hanging up right now... Rescheduling hangup for %s.\n", p->callid);
if (p->autokillid > -1)
@@ -3601,9 +3607,11 @@
ast_log(LOG_DEBUG, "Hanging up zombie call. Be scared.\n");
sip_pvt_lock(p);
- if (option_debug && sipdebug)
- ast_log(LOG_DEBUG, "update_call_counter(%s) - decrement call limit counter on hangup\n", p->username);
- update_call_counter(p, DEC_CALL_LIMIT);
+ if (ast_test_flag(&p->flags[0], SIP_INC_COUNT)) {
+ if (option_debug && sipdebug)
+ ast_log(LOG_DEBUG, "update_call_counter(%s) - decrement call limit counter on hangup\n", p->username);
+ update_call_counter(p, DEC_CALL_LIMIT);
+ }
/* Determine how to disconnect */
if (p->owner != ast) {
@@ -15955,6 +15963,8 @@
return NULL;
}
+ ast_set_flag(&p->flags[1], SIP_PAGE2_OUTGOING_CALL);
+
if (!(p->options = ast_calloc(1, sizeof(*p->options)))) {
sip_destroy(p);
ast_log(LOG_ERROR, "Unable to build option SIP data structure - Out of memory\n");
Modified: team/qwell/gtalk_jingle-merge/configs/sla.conf.sample
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/configs/sla.conf.sample?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/configs/sla.conf.sample (original)
+++ team/qwell/gtalk_jingle-merge/configs/sla.conf.sample Wed Feb 21 15:41:05 2007
@@ -10,73 +10,69 @@
; ---- Trunk Declarations -------------
+;
+;[line1] ; Provide a name for this trunk.
+;type=trunk ; This line is what marks this entry as a trunk.
+;
+;device=Zap/3 ; Map this trunk declaration to a specific device.
+ ; NOTE: At this point, this *must* be a zap channel!
-; Provide a name for this trunk.
-[line1]
-; This line is what marks this entry as a trunk.
-type=trunk
-; Map this trunk declaration to a specific device.
-; NOTE: At this point, this *must* be a zap channel!
-device=Zap/3
-; This supports automatic generation of the dialplan entries if the autocontext
-; option is used. Each trunk should have a unique context name. Then, in
-; zapata.conf, this device should be configured to have incoming calls go to
-; this context.
-autocontext=line1
+;autocontext=line1 ; This supports automatic generation of the dialplan entries
+ ; if the autocontext option is used. Each trunk should have
+ ; a unique context name. Then, in zapata.conf, this device
+ ; should be configured to have incoming calls go to this context.
-[line2]
-type=trunk
-device=Zap/4
-autocontext=line2
+;[line2]
+;type=trunk
+;device=Zap/4
+;autocontext=line2
-[line3]
-type=trunk
-device=Zap/3
-autocontext=line3
+;[line3]
+;type=trunk
+;device=Zap/3
+;autocontext=line3
-[line4]
-type=trunk
-device=Zap/4
-autocontext=line4
+;[line4]
+;type=trunk
+;device=Zap/4
+;autocontext=line4
; --------------------------------------
; ---- Station Declarations ------------
-; In this example, all stations have the same trunks, so this configuration
-; template is used to simplify the declaration of each station.
-[station](!)
-; This line indicates that this entry is a station.
-type=station
-; This supports automatic generation of the dialplan entries if the autocontext
-; option is used. All stations can use the same context without conflict. The
-; device for this station should have its context configured to the same one
-; listed here.
-autocontext=sla_stations
-; Individually list all of the trunks that will appear on this station. This
-; order is significant. It should be the same order as they appear on the
-; phone. The order here defines the order of preference that the trunks will
-; be used.
-trunk=line1
-trunk=line2
-trunk=line3
-trunk=line4
+;[station](!) ; In this example, all stations have the same trunks, so this
+ ; configuration template is used to simplify the declaration
+ ; of each station.
-; Define a station that uses the configuration from the template "station".
-[station1](station)
-; Each station must be mapped to a device.
-device=SIP/station1
+;type=station ; This line indicates that this entry is a station.
-[station2](station)
-device=SIP/station2
+;autocontext=sla_stations ; This supports automatic generation of the dialplan entries if
+ ; the autocontext option is used. All stations can use the same
+ ; context without conflict. The device for this station should
+ ; have its context configured to the same one listed here.
-[station3](station)
-device=SIP/station3
+;trunk=line1 ; Individually list all of the trunks that will appear on this station. This
+ ; order is significant. It should be the same order as they appear on the
+ ; phone. The order here defines the order of preference that the trunks will
+ ; be used.
+;trunk=line2
+;trunk=line3
+;trunk=line4
-[station4](station)
-device=SIP/station4
-
-[station5](station)
-device=SIP/station5
+;[station1](station) ; Define a station that uses the configuration from the template "station".
+;device=SIP/station1 ; Each station must be mapped to a device.
+;
+;[station2](station)
+;device=SIP/station2
+;
+;[station3](station)
+;device=SIP/station3
+;
+;[station4](station)
+;device=SIP/station4
+;
+;[station5](station)
+;device=SIP/station5
; --------------------------------------
Modified: team/qwell/gtalk_jingle-merge/include/asterisk/manager.h
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/include/asterisk/manager.h?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/include/asterisk/manager.h (original)
+++ team/qwell/gtalk_jingle-merge/include/asterisk/manager.h Wed Feb 21 15:41:05 2007
@@ -57,7 +57,7 @@
#define EVENT_FLAG_CONFIG (1 << 7) /* Ability to modify configurations */
/* Export manager structures */
-#define AST_MAX_MANHEADERS 80
+#define AST_MAX_MANHEADERS 128
/* Manager Helper Function */
typedef int (*manager_hook_t)(int, const char *, char *);
Modified: team/qwell/gtalk_jingle-merge/main/dns.c
URL: http://svn.digium.com/view/asterisk/team/qwell/gtalk_jingle-merge/main/dns.c?view=diff&rev=56004&r1=56003&r2=56004
==============================================================================
--- team/qwell/gtalk_jingle-merge/main/dns.c (original)
[... 228 lines stripped ...]
More information about the asterisk-commits
mailing list