[asterisk-commits] branch oej/moduletest - r7880 in
/team/oej/moduletest: ./ apps/ channels/ for...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Mon Jan 9 07:44:57 CST 2006
Author: oej
Date: Mon Jan 9 07:44:44 2006
New Revision: 7880
URL: http://svn.digium.com/view/asterisk?rev=7880&view=rev
Log:
Merged revisions 7677,7706,7709,7736,7738,7740,7743,7746,7771,7773,7792,7795,7799-7800,7803,7805,7807,7809,7812,7819,7823,7825,7827,7829,7831,7848,7870-7871 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r7677 | tilghman | 2005-12-30 15:54:19 +0100 (Fri, 30 Dec 2005) | 2 lines
Bug 6091 - Fix race condition around uniqueid
........
r7706 | bweschke | 2006-01-02 03:04:14 +0100 (Mon, 02 Jan 2006) | 3 lines
Fix compiler warnings.
........
r7709 | tilghman | 2006-01-02 08:31:54 +0100 (Mon, 02 Jan 2006) | 2 lines
Bug 6084 - MixMonitor after a 'cli stop monitor' deadlocks
........
r7736 | kpfleming | 2006-01-03 17:34:12 +0100 (Tue, 03 Jan 2006) | 2 lines
don't leak memory for (most) expression evaluations
........
r7738 | kpfleming | 2006-01-03 18:00:01 +0100 (Tue, 03 Jan 2006) | 2 lines
backport rport scanning fix from trunk (bug #6071)
........
r7740 | kpfleming | 2006-01-03 18:24:56 +0100 (Tue, 03 Jan 2006) | 4 lines
revert incorrect fix for bug #6048 from revision 7709
put in correct (simpler) fix
add doxygen docs for channel spy 'state' values
........
r7743 | tilghman | 2006-01-03 19:15:12 +0100 (Tue, 03 Jan 2006) | 2 lines
Bug 6121 - typo in application description
........
r7746 | kpfleming | 2006-01-03 21:22:18 +0100 (Tue, 03 Jan 2006) | 2 lines
remove unused 'old' expression parser
........
r7771 | bweschke | 2006-01-04 06:27:38 +0100 (Wed, 04 Jan 2006) | 3 lines
Fix the 'if' clause to be true under the right conditions. Bug #6126
........
r7773 | russell | 2006-01-04 08:06:50 +0100 (Wed, 04 Jan 2006) | 2 lines
use a more correct way of determining the size of the destination buffer
........
r7792 | oej | 2006-01-04 22:43:14 +0100 (Wed, 04 Jan 2006) | 2 lines
Fixing typo in XML for video updates.
........
r7795 | oej | 2006-01-04 22:46:40 +0100 (Wed, 04 Jan 2006) | 2 lines
Issue #5980: Removing extra CR+LF in manager events - needs port to trunk
........
r7799 | kpfleming | 2006-01-05 00:02:38 +0100 (Thu, 05 Jan 2006) | 2 lines
make monitoring more tolerant of peers that deliver frames in bursts
........
r7800 | kpfleming | 2006-01-05 00:27:57 +0100 (Thu, 05 Jan 2006) | 2 lines
ensure that ulaw/alaw sound files are filled with silence when extended (not zeroes)
........
r7803 | kpfleming | 2006-01-05 00:45:34 +0100 (Thu, 05 Jan 2006) | 2 lines
return properly after extending file
........
r7805 | kpfleming | 2006-01-05 00:51:03 +0100 (Thu, 05 Jan 2006) | 2 lines
use proper fwrite() parameters and return value
........
r7807 | kpfleming | 2006-01-05 01:18:46 +0100 (Thu, 05 Jan 2006) | 2 lines
doh... fseek() has no useful return value
........
r7809 | kpfleming | 2006-01-05 01:58:29 +0100 (Thu, 05 Jan 2006) | 2 lines
send device state updates for auto-logoff of agents as well
........
r7812 | oej | 2006-01-05 10:13:21 +0100 (Thu, 05 Jan 2006) | 2 lines
Fix copyright of changed file
........
r7819 | kpfleming | 2006-01-05 21:52:38 +0100 (Thu, 05 Jan 2006) | 2 lines
ensure that variable is initialized
........
r7823 | tilghman | 2006-01-06 00:07:08 +0100 (Fri, 06 Jan 2006) | 2 lines
Bug 6081 - fix for memory leak, formatting fixes
........
r7825 | kpfleming | 2006-01-06 00:49:50 +0100 (Fri, 06 Jan 2006) | 3 lines
eliminate rounding errors that caused call time limits to be inaccurate (issue #5913)
round 'time left' reported during call limit warnings up to sound more accurate
........
r7827 | tilghman | 2006-01-06 00:53:07 +0100 (Fri, 06 Jan 2006) | 2 lines
Bug 6076 - Fix documentation of ast_trim_blank return value
........
r7829 | kpfleming | 2006-01-06 01:21:00 +0100 (Fri, 06 Jan 2006) | 2 lines
update agent persistence when an agent gets logged off by autologoff
........
r7831 | tilghman | 2006-01-06 01:34:40 +0100 (Fri, 06 Jan 2006) | 2 lines
Dumb error messages - "Context 'context' already included in 'in' context"
........
r7848 | tilghman | 2006-01-07 08:27:18 +0100 (Sat, 07 Jan 2006) | 2 lines
Bug 6156 - catch all threading errors, not just simple failure
........
r7870 | russell | 2006-01-09 05:52:16 +0100 (Mon, 09 Jan 2006) | 2 lines
backport fix for unnecessary unlock (issue #6171)
........
r7871 | russell | 2006-01-09 06:11:44 +0100 (Mon, 09 Jan 2006) | 2 lines
fix seg fault when using greek syntax in VoicemMailMain (issue #6142)
........
Removed:
team/oej/moduletest/ast_expr.y
Modified:
team/oej/moduletest/ (props changed)
team/oej/moduletest/apps/app_chanspy.c
team/oej/moduletest/apps/app_mixmonitor.c
team/oej/moduletest/apps/app_privacy.c
team/oej/moduletest/apps/app_stack.c
team/oej/moduletest/apps/app_voicemail.c
team/oej/moduletest/ast_expr2.fl
team/oej/moduletest/ast_expr2f.c
team/oej/moduletest/channel.c
team/oej/moduletest/channels/chan_agent.c
team/oej/moduletest/channels/chan_iax2.c
team/oej/moduletest/channels/chan_sip.c
team/oej/moduletest/formats/format_pcm.c
team/oej/moduletest/formats/format_pcm_alaw.c
team/oej/moduletest/funcs/func_moh.c
team/oej/moduletest/include/asterisk/chanspy.h
team/oej/moduletest/include/asterisk/strings.h
team/oej/moduletest/manager.c
team/oej/moduletest/pbx/pbx_config.c
team/oej/moduletest/pbx/pbx_spool.c
team/oej/moduletest/res/res_features.c
Propchange: team/oej/moduletest/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Jan 9 07:44:44 2006
@@ -1,1 +1,1 @@
-/branches/1.2:1-7496,7498-7672
+/branches/1.2:1-7496,7498-7879
Modified: team/oej/moduletest/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/apps/app_chanspy.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/apps/app_chanspy.c (original)
+++ team/oej/moduletest/apps/app_chanspy.c Mon Jan 9 07:44:44 2006
@@ -208,9 +208,9 @@
static void stop_spying(struct ast_channel *chan, struct ast_channel_spy *spy)
{
- /* If our status has changed, then the channel we're spying on is gone....
+ /* If our status has changed to DONE, then the channel we're spying on is gone....
DON'T TOUCH IT!!! RUN AWAY!!! */
- if (spy->status != CHANSPY_RUNNING)
+ if (spy->status == CHANSPY_DONE)
return;
if (!chan)
Modified: team/oej/moduletest/apps/app_mixmonitor.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/apps/app_mixmonitor.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/apps/app_mixmonitor.c (original)
+++ team/oej/moduletest/apps/app_mixmonitor.c Mon Jan 9 07:44:44 2006
@@ -112,9 +112,9 @@
static void stopmon(struct ast_channel *chan, struct ast_channel_spy *spy)
{
- /* If our status has changed, then the channel we're spying on is gone....
+ /* If our status has changed to DONE, then the channel we're spying on is gone....
DON'T TOUCH IT!!! RUN AWAY!!! */
- if (spy->status != CHANSPY_RUNNING)
+ if (spy->status == CHANSPY_DONE)
return;
if (!chan)
Modified: team/oej/moduletest/apps/app_privacy.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/apps/app_privacy.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/apps/app_privacy.c (original)
+++ team/oej/moduletest/apps/app_privacy.c Mon Jan 9 07:44:44 2006
@@ -193,7 +193,7 @@
}
/*Got a number, play sounds and send them on their way*/
- if ((retries < maxretries) && res == 1 ) {
+ if ((retries < maxretries) && !res ) {
res = ast_streamfile(chan, "privacy-thankyou", chan->language);
if (!res)
res = ast_waitstream(chan, "");
Modified: team/oej/moduletest/apps/app_stack.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/apps/app_stack.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/apps/app_stack.c (original)
+++ team/oej/moduletest/apps/app_stack.c Mon Jan 9 07:44:44 2006
@@ -52,22 +52,18 @@
static const char *gosub_descrip =
"Gosub([[context|]exten|]priority)\n"
-" Jumps to the label specified, saving the return address.\n"
-" Returns 0 if the label exists or -1 otherwise.\n";
+" Jumps to the label specified, saving the return address.\n";
static const char *gosubif_descrip =
-"Gosub(condition?labeliftrue[:labeliffalse])\n"
+"GosubIf(condition?labeliftrue[:labeliffalse])\n"
" If the condition is true, then jump to labeliftrue. If false, jumps to\n"
"labeliffalse, if specified. In either case, a jump saves the return point\n"
-"in the dialplan, to be returned to with a Return.\n"
-" Returns 0 if the label exists or -1 otherwise.\n";
+"in the dialplan, to be returned to with a Return.\n";
static const char *return_descrip =
"Return()\n"
-" Jumps to the last label in the stack, removing it.\n"
-" Returns 0 if there's a label in the stack or -1 otherwise.\n";
+" Jumps to the last label on the stack, removing it.\n";
static const char *pop_descrip =
"StackPop()\n"
-" Removes last label in the stack, discarding it.\n"
-" Always returns 0, even if the stack is empty.\n";
+" Removes last label on the stack, discarding it.\n";
STANDARD_LOCAL_USER;
Modified: team/oej/moduletest/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/apps/app_voicemail.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/apps/app_voicemail.c (original)
+++ team/oej/moduletest/apps/app_voicemail.c Mon Jan 9 07:44:44 2006
@@ -3919,8 +3919,8 @@
static int vm_play_folder_name_gr(struct ast_channel *chan, char *mbox)
{
int cmd;
- char buf[sizeof(mbox)+1];
-
+ char *buf;
+ buf = alloca(strlen(mbox)+2);
memset(buf, '\0', sizeof(char)*(sizeof(buf)));
strcpy(buf, mbox);
strcat(buf,"s");
Modified: team/oej/moduletest/ast_expr2.fl
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/ast_expr2.fl?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/ast_expr2.fl (original)
+++ team/oej/moduletest/ast_expr2.fl Mon Jan 9 07:44:44 2006
@@ -98,42 +98,42 @@
int ast_expr(char *expr, char *buf, int length)
{
- struct parse_io *io;
+ struct parse_io io;
+ int return_value = 0;
- io = calloc(sizeof(struct parse_io),1);
- io->string = expr; /* to pass to the error routine */
+ memset(&io, 0, sizeof(io));
+ io.string = expr; /* to pass to the error routine */
- ast_yylex_init(&io->scanner);
+ ast_yylex_init(&io.scanner);
- ast_yy_scan_string(expr, io->scanner);
+ ast_yy_scan_string(expr, io.scanner);
- ast_yyparse ((void *) io);
+ ast_yyparse ((void *) &io);
- ast_yylex_destroy(io->scanner);
+ ast_yylex_destroy(io.scanner);
- if (io->val == NULL) {
+ if (!io.val) {
if (length > 1) {
strcpy(buf, "0");
- return 1;
+ return_value = 1;
}
} else {
- if (io->val->type == AST_EXPR_integer) {
+ if (io.val->type == AST_EXPR_integer) {
int res_length;
- res_length = snprintf(buf, length, "%ld", (long int) io->val->u.i);
- return res_length <= length ? res_length : length;
+ res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
+ return_value = (res_length <= length) ? res_length : length;
} else {
#ifdef STANDALONE
- strncpy(buf, io->val->u.s, length - 1);
+ strncpy(buf, io.val->u.s, length - 1);
#else /* !STANDALONE */
- ast_copy_string(buf, io->val->u.s, length);
+ ast_copy_string(buf, io.val->u.s, length);
#endif /* STANDALONE */
- return strlen(buf);
+ return_value = strlen(buf);
}
- free(io->val);
+ free(io.val);
}
- free(io);
- return 0;
+ return return_value;
}
int ast_yyerror (const char *s, yyltype *loc, struct parse_io *parseio )
Modified: team/oej/moduletest/ast_expr2f.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/ast_expr2f.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/ast_expr2f.c (original)
+++ team/oej/moduletest/ast_expr2f.c Mon Jan 9 07:44:44 2006
@@ -2562,42 +2562,42 @@
int ast_expr(char *expr, char *buf, int length)
{
- struct parse_io *io;
+ struct parse_io io;
+ int return_value = 0;
- io = calloc(sizeof(struct parse_io),1);
- io->string = expr; /* to pass to the error routine */
+ memset(&io, 0, sizeof(io));
+ io.string = expr; /* to pass to the error routine */
- ast_yylex_init(&io->scanner);
+ ast_yylex_init(&io.scanner);
- ast_yy_scan_string(expr, io->scanner);
+ ast_yy_scan_string(expr, io.scanner);
- ast_yyparse ((void *) io);
-
- ast_yylex_destroy(io->scanner);
-
- if (io->val == NULL) {
+ ast_yyparse ((void *) &io);
+
+ ast_yylex_destroy(io.scanner);
+
+ if (!io.val) {
if (length > 1) {
strcpy(buf, "0");
- return 1;
+ return_value = 1;
}
} else {
- if (io->val->type == AST_EXPR_integer) {
+ if (io.val->type == AST_EXPR_integer) {
int res_length;
- res_length = snprintf(buf, length, "%ld", (long int) io->val->u.i);
- return res_length <= length ? res_length : length;
+ res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
+ return_value = (res_length <= length) ? res_length : length;
} else {
#ifdef STANDALONE
- strncpy(buf, io->val->u.s, length - 1);
+ strncpy(buf, io.val->u.s, length - 1);
#else /* !STANDALONE */
- ast_copy_string(buf, io->val->u.s, length);
+ ast_copy_string(buf, io.val->u.s, length);
#endif /* STANDALONE */
- return strlen(buf);
+ return_value = strlen(buf);
}
- free(io->val);
+ free(io.val);
}
- free(io);
- return 0;
+ return return_value;
}
int ast_yyerror (const char *s, yyltype *loc, struct parse_io *parseio )
Modified: team/oej/moduletest/channel.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/channel.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/channel.c (original)
+++ team/oej/moduletest/channel.c Mon Jan 9 07:44:44 2006
@@ -94,6 +94,7 @@
*/
static int shutting_down = 0;
+AST_MUTEX_DEFINE_STATIC(uniquelock);
static int uniqueint = 0;
unsigned long global_fin = 0, global_fout = 0;
@@ -583,7 +584,9 @@
tmp->data = NULL;
tmp->fin = global_fin;
tmp->fout = global_fout;
+ ast_mutex_lock(&uniquelock);
snprintf(tmp->uniqueid, sizeof(tmp->uniqueid), "%li.%d", (long) time(NULL), uniqueint++);
+ ast_mutex_unlock(&uniquelock);
headp = &tmp->varshead;
ast_mutex_init(&tmp->lock);
AST_LIST_HEAD_INIT_NOLOCK(headp);
@@ -1021,7 +1024,7 @@
AST_LIST_TRAVERSE(&chan->spies->list, spy, list) {
ast_mutex_lock(&spy->lock);
if ((spy->type == type) && (spy->status == CHANSPY_RUNNING)) {
- spy->status = CHANSPY_DONE;
+ spy->status = CHANSPY_STOP;
if (ast_test_flag(spy, CHANSPY_TRIGGER_MODE) != CHANSPY_TRIGGER_NONE)
ast_cond_signal(&spy->trigger);
}
@@ -1912,11 +1915,11 @@
if (chan->monitor && chan->monitor->read_stream ) {
#ifndef MONITOR_CONSTANT_DELAY
- int jump = chan->outsmpl - chan->insmpl - 2 * f->samples;
+ int jump = chan->outsmpl - chan->insmpl - 4 * f->samples;
if (jump >= 0) {
if (ast_seekstream(chan->monitor->read_stream, jump + f->samples, SEEK_FORCECUR) == -1)
ast_log(LOG_WARNING, "Failed to perform seek in monitoring read stream, synchronization between the files may be broken\n");
- chan->insmpl += jump + 2 * f->samples;
+ chan->insmpl += jump + 4 * f->samples;
} else
chan->insmpl+= f->samples;
#else
@@ -2273,11 +2276,11 @@
if( chan->monitor && chan->monitor->write_stream &&
f && ( f->frametype == AST_FRAME_VOICE ) ) {
#ifndef MONITOR_CONSTANT_DELAY
- int jump = chan->insmpl - chan->outsmpl - 2 * f->samples;
+ int jump = chan->insmpl - chan->outsmpl - 4 * f->samples;
if (jump >= 0) {
if (ast_seekstream(chan->monitor->write_stream, jump + f->samples, SEEK_FORCECUR) == -1)
ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n");
- chan->outsmpl += jump + 2 * f->samples;
+ chan->outsmpl += jump + 4 * f->samples;
} else
chan->outsmpl += f->samples;
#else
@@ -3216,7 +3219,8 @@
}
static enum ast_bridge_result ast_generic_bridge(struct ast_channel *c0, struct ast_channel *c1,
- struct ast_bridge_config *config, struct ast_frame **fo, struct ast_channel **rc, int toms)
+ struct ast_bridge_config *config, struct ast_frame **fo,
+ struct ast_channel **rc, struct timeval bridge_end)
{
/* Copy voice back and forth between the two channels. */
struct ast_channel *cs[3];
@@ -3228,6 +3232,7 @@
int watch_c0_dtmf;
int watch_c1_dtmf;
void *pvt0, *pvt1;
+ int to;
cs[0] = c0;
cs[1] = c1;
@@ -3246,12 +3251,13 @@
res = AST_BRIDGE_RETRY;
break;
}
- who = ast_waitfor_n(cs, 2, &toms);
+ to = ast_tvdiff_ms(bridge_end, ast_tvnow());
+ if (to <= 0) {
+ res = AST_BRIDGE_RETRY;
+ break;
+ }
+ who = ast_waitfor_n(cs, 2, &to);
if (!who) {
- if (!toms) {
- res = AST_BRIDGE_RETRY;
- break;
- }
ast_log(LOG_DEBUG, "Nobody there, continuing...\n");
if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE || c1->_softhangup == AST_SOFTHANGUP_UNBRIDGE) {
if (c0->_softhangup == AST_SOFTHANGUP_UNBRIDGE)
@@ -3420,10 +3426,13 @@
if (!to) {
if (time_left_ms >= 5000) {
+ /* force the time left to round up if appropriate */
if (caller_warning && config->warning_sound && config->play_warning)
- bridge_playfile(c0, c1, config->warning_sound, time_left_ms / 1000);
+ bridge_playfile(c0, c1, config->warning_sound,
+ (time_left_ms + 500) / 1000);
if (callee_warning && config->warning_sound && config->play_warning)
- bridge_playfile(c1, c0, config->warning_sound, time_left_ms / 1000);
+ bridge_playfile(c1, c0, config->warning_sound,
+ (time_left_ms + 500) / 1000);
}
if (config->warning_freq) {
nexteventts = ast_tvadd(nexteventts, ast_samp2tv(config->warning_freq, 1000));
@@ -3524,7 +3533,7 @@
o0nativeformats = c0->nativeformats;
o1nativeformats = c1->nativeformats;
}
- res = ast_generic_bridge(c0, c1, config, fo, rc, to);
+ res = ast_generic_bridge(c0, c1, config, fo, rc, nexteventts);
if (res != AST_BRIDGE_RETRY)
break;
}
Modified: team/oej/moduletest/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/channels/chan_agent.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/channels/chan_agent.c (original)
+++ team/oej/moduletest/channels/chan_agent.c Mon Jan 9 07:44:44 2006
@@ -795,8 +795,11 @@
snprintf(agent, sizeof(agent), "Agent/%s", p->agent);
ast_queue_log("NONE", ast->uniqueid, agent, "AGENTCALLBACKLOGOFF", "%s|%ld|%s", p->loginchan, logintime, "Autologoff");
set_agentbycallerid(p->logincallerid, NULL);
+ ast_device_state_changed("Agent/%s", p->agent);
p->loginchan[0] = '\0';
p->logincallerid[0] = '\0';
+ if (persistent_agents)
+ dump_agents();
}
} else if (p->dead) {
ast_mutex_lock(&p->chan->lock);
Modified: team/oej/moduletest/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/channels/chan_iax2.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/channels/chan_iax2.c (original)
+++ team/oej/moduletest/channels/chan_iax2.c Mon Jan 9 07:44:44 2006
@@ -2599,7 +2599,7 @@
break;
}
} else if (!strcasecmp(tmp->name, "regseconds")) {
- if (sscanf(tmp->value, "%i", (int *)®seconds) != 1)
+ if (sscanf(tmp->value, "%ld", (time_t *)®seconds) != 1)
regseconds = 0;
} else if (!strcasecmp(tmp->name, "ipaddr")) {
inet_aton(tmp->value, &(peer->addr.sin_addr));
Modified: team/oej/moduletest/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/channels/chan_sip.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/channels/chan_sip.c (original)
+++ team/oej/moduletest/channels/chan_sip.c Mon Jan 9 07:44:44 2006
@@ -4241,7 +4241,7 @@
" <media_control>\r\n"
" <vc_primitive>\r\n"
" <to_encoder>\r\n"
- " <picture_fast_update\r\n"
+ " <picture_fast_update>\r\n"
" </picture_fast_update>\r\n"
" </to_encoder>\r\n"
" </vc_primitive>\r\n"
@@ -6797,7 +6797,7 @@
return -1;
}
-/*! \brief check_via: check Via: headers ---*/
+/*! \brief check Via: header for hostname, port and rport request/answer */
static int check_via(struct sip_pvt *p, struct sip_request *req)
{
char via[256];
@@ -6807,9 +6807,16 @@
struct ast_hostent ahp;
ast_copy_string(via, get_header(req, "Via"), sizeof(via));
+
+ /* Check for rport */
+ c = strstr(via, ";rport");
+ if (c && (c[6] != '=')) /* rport query, not answer */
+ ast_set_flag(p, SIP_NAT_ROUTE);
+
c = strchr(via, ';');
if (c)
*c = '\0';
+
c = strchr(via, ' ');
if (c) {
*c = '\0';
@@ -6830,9 +6837,7 @@
p->sa.sin_family = AF_INET;
memcpy(&p->sa.sin_addr, hp->h_addr, sizeof(p->sa.sin_addr));
p->sa.sin_port = htons(pt ? atoi(pt) : DEFAULT_SIP_PORT);
- c = strstr(via, ";rport");
- if (c && (c[6] != '=')) /* rport query, not answer */
- ast_set_flag(p, SIP_NAT_ROUTE);
+
if (sip_debug_test_pvt(p)) {
c = (ast_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) ? "NAT" : "non-NAT";
ast_verbose("Sending to %s : %d (%s)\n", ast_inet_ntoa(iabuf, sizeof(iabuf), p->sa.sin_addr), ntohs(p->sa.sin_port), c);
@@ -12069,7 +12074,7 @@
}
if (realtime && !strcasecmp(v->name, "regseconds")) {
- if (sscanf(v->value, "%i", (int *)®seconds) != 1)
+ if (sscanf(v->value, "%ld", (time_t *)®seconds) != 1)
regseconds = 0;
} else if (realtime && !strcasecmp(v->name, "ipaddr") && !ast_strlen_zero(v->value) ) {
inet_aton(v->value, &(peer->addr.sin_addr));
Modified: team/oej/moduletest/formats/format_pcm.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/formats/format_pcm.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/formats/format_pcm.c (original)
+++ team/oej/moduletest/formats/format_pcm.c Mon Jan 9 07:44:44 2006
@@ -1,7 +1,7 @@
/*
* Asterisk -- An open source telephony toolkit.
*
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
*
* Mark Spencer <markster at digium.com>
*
@@ -44,6 +44,7 @@
#include "asterisk/sched.h"
#include "asterisk/module.h"
#include "asterisk/endian.h"
+#include "asterisk/ulaw.h"
#define BUF_SIZE 160 /* 160 samples */
@@ -66,6 +67,8 @@
static char *name = "pcm";
static char *desc = "Raw uLaw 8khz Audio support (PCM)";
static char *exts = "pcm|ulaw|ul|mu";
+
+static char ulaw_silence[BUF_SIZE];
static struct ast_filestream *pcm_open(FILE *f)
{
@@ -173,24 +176,46 @@
static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
{
- off_t offset=0,min,cur,max;
-
- min = 0;
+ long cur, max, offset = 0;
+
cur = ftell(fs->f);
fseek(fs->f, 0, SEEK_END);
max = ftell(fs->f);
- if (whence == SEEK_SET)
+
+ switch (whence) {
+ case SEEK_SET:
offset = sample_offset;
- else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
- offset = sample_offset + cur;
- else if (whence == SEEK_END)
+ break;
+ case SEEK_END:
offset = max - sample_offset;
- if (whence != SEEK_FORCECUR) {
- offset = (offset > max)?max:offset;
- }
- /* always protect against seeking past begining. */
- offset = (offset < min)?min:offset;
- return fseek(fs->f, offset, SEEK_SET);
+ break;
+ case SEEK_CUR:
+ case SEEK_FORCECUR:
+ offset = cur + sample_offset;
+ break;
+ }
+
+ switch (whence) {
+ case SEEK_FORCECUR:
+ if (offset > max) {
+ size_t left = offset - max;
+ size_t res;
+
+ while (left) {
+ res = fwrite(ulaw_silence, sizeof(ulaw_silence[0]),
+ (left > BUF_SIZE) ? BUF_SIZE : left, fs->f);
+ if (res == -1)
+ return res;
+ left -= res * sizeof(ulaw_silence[0]);
+ }
+ return offset;
+ }
+ /* fall through */
+ default:
+ offset = (offset > max) ? max : offset;
+ offset = (offset < 0) ? 0 : offset;
+ return fseek(fs->f, offset, SEEK_SET);
+ }
}
static int pcm_trunc(struct ast_filestream *fs)
@@ -212,18 +237,21 @@
int load_module()
{
+ int index;
+
+ for (index = 0; index < (sizeof(ulaw_silence) / sizeof(ulaw_silence[0])); index++)
+ ulaw_silence[index] = AST_LIN2MU(0);
+
return ast_format_register(name, exts, AST_FORMAT_ULAW,
- pcm_open,
- pcm_rewrite,
- pcm_write,
- pcm_seek,
- pcm_trunc,
- pcm_tell,
- pcm_read,
- pcm_close,
- pcm_getcomment);
-
-
+ pcm_open,
+ pcm_rewrite,
+ pcm_write,
+ pcm_seek,
+ pcm_trunc,
+ pcm_tell,
+ pcm_read,
+ pcm_close,
+ pcm_getcomment);
}
int unload_module()
Modified: team/oej/moduletest/formats/format_pcm_alaw.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/formats/format_pcm_alaw.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/formats/format_pcm_alaw.c (original)
+++ team/oej/moduletest/formats/format_pcm_alaw.c Mon Jan 9 07:44:44 2006
@@ -1,7 +1,7 @@
/*
* Asterisk -- An open source telephony toolkit.
*
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
*
* Mark Spencer <markster at digium.com>
*
@@ -45,6 +45,7 @@
#include "asterisk/sched.h"
#include "asterisk/module.h"
#include "asterisk/endian.h"
+#include "asterisk/alaw.h"
#define BUF_SIZE 160 /* 160 samples */
@@ -73,6 +74,8 @@
static char *desc = "Raw aLaw 8khz PCM Audio support";
static char *exts = "alaw|al";
+static char alaw_silence[BUF_SIZE];
+
#if 0
/* Returns time in msec since system boot. */
@@ -248,24 +251,46 @@
static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
{
- off_t offset=0,min,cur,max;
-
- min = 0;
+ long cur, max, offset = 0;
+
cur = ftell(fs->f);
fseek(fs->f, 0, SEEK_END);
max = ftell(fs->f);
- if (whence == SEEK_SET)
+
+ switch (whence) {
+ case SEEK_SET:
offset = sample_offset;
- else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
- offset = sample_offset + cur;
- else if (whence == SEEK_END)
+ break;
+ case SEEK_END:
offset = max - sample_offset;
- if (whence != SEEK_FORCECUR) {
- offset = (offset > max)?max:offset;
- }
- /* Always protect against seeking past begining */
- offset = (offset < min)?min:offset;
- return fseek(fs->f, offset, SEEK_SET);
+ break;
+ case SEEK_CUR:
+ case SEEK_FORCECUR:
+ offset = cur + sample_offset;
+ break;
+ }
+
+ switch (whence) {
+ case SEEK_FORCECUR:
+ if (offset > max) {
+ size_t left = offset - max;
+ size_t res;
+
+ while (left) {
+ res = fwrite(alaw_silence, sizeof(alaw_silence[0]),
+ (left > BUF_SIZE) ? BUF_SIZE : left, fs->f);
+ if (res == -1)
+ return res;
+ left -= res * sizeof(alaw_silence[0]);
+ }
+ return offset;
+ }
+ /* fall through */
+ default:
+ offset = (offset > max) ? max : offset;
+ offset = (offset < 0) ? 0 : offset;
+ return fseek(fs->f, offset, SEEK_SET);
+ }
}
static int pcm_trunc(struct ast_filestream *fs)
@@ -288,16 +313,21 @@
int load_module()
{
+ int index;
+
+ for (index = 0; index < (sizeof(alaw_silence) / sizeof(alaw_silence[0])); index++)
+ alaw_silence[index] = AST_LIN2A(0);
+
return ast_format_register(name, exts, AST_FORMAT_ALAW,
- pcm_open,
- pcm_rewrite,
- pcm_write,
- pcm_seek,
- pcm_trunc,
- pcm_tell,
- pcm_read,
- pcm_close,
- pcm_getcomment);
+ pcm_open,
+ pcm_rewrite,
+ pcm_write,
+ pcm_seek,
+ pcm_trunc,
+ pcm_tell,
+ pcm_read,
+ pcm_close,
+ pcm_getcomment);
}
int unload_module()
Modified: team/oej/moduletest/funcs/func_moh.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/funcs/func_moh.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/funcs/func_moh.c (original)
+++ team/oej/moduletest/funcs/func_moh.c Mon Jan 9 07:44:44 2006
@@ -39,7 +39,7 @@
static void function_moh_write(struct ast_channel *chan, char *cmd, char *data, const char *value)
{
- ast_copy_string(chan->musicclass, value, MAX_MUSICCLASS);
+ ast_copy_string(chan->musicclass, value, sizeof(chan->musicclass));
}
#ifndef BUILTIN_FUNC
Modified: team/oej/moduletest/include/asterisk/chanspy.h
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/include/asterisk/chanspy.h?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/include/asterisk/chanspy.h (original)
+++ team/oej/moduletest/include/asterisk/chanspy.h Mon Jan 9 07:44:44 2006
@@ -30,9 +30,10 @@
#include "asterisk/linkedlists.h"
enum chanspy_states {
- CHANSPY_NEW = 0,
- CHANSPY_RUNNING = 1,
- CHANSPY_DONE = 2,
+ CHANSPY_NEW = 0, /*!< spy not yet operating */
+ CHANSPY_RUNNING = 1, /*!< normal operation, spy is still operating */
+ CHANSPY_DONE = 2, /*!< spy is stopped and already removed from channel */
+ CHANSPY_STOP = 3, /*!< spy requested to stop, still attached to channel */
};
enum chanspy_flags {
Modified: team/oej/moduletest/include/asterisk/strings.h
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/include/asterisk/strings.h?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/include/asterisk/strings.h (original)
+++ team/oej/moduletest/include/asterisk/strings.h Mon Jan 9 07:44:44 2006
@@ -54,7 +54,7 @@
\brief Trims trailing whitespace characters from a string.
\param ast_trim_blanks function being used
\param str the input string
- \return a pointer to the NULL following the string
+ \return a pointer to the modified string
*/
AST_INLINE_API(
char *ast_trim_blanks(char *str),
Modified: team/oej/moduletest/manager.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/manager.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/manager.c (original)
+++ team/oej/moduletest/manager.c Mon Jan 9 07:44:44 2006
@@ -1626,7 +1626,6 @@
cur = malloc(sizeof(struct manager_action));
if (!cur) {
ast_log(LOG_WARNING, "Manager: out of memory trying to register action\n");
- ast_mutex_unlock(&actionlock);
return -1;
}
cur->action = action;
Modified: team/oej/moduletest/pbx/pbx_config.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/pbx/pbx_config.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/pbx/pbx_config.c (original)
+++ team/oej/moduletest/pbx/pbx_config.c Mon Jan 9 07:44:44 2006
@@ -712,7 +712,7 @@
if (argc != 5) return RESULT_SHOWUSAGE;
/* third arg must be 'in' ... */
- if (strcmp(argv[3], "in")) return RESULT_SHOWUSAGE;
+ if (strcmp(argv[3], "in") && strcmp(argv[3], "into")) return RESULT_SHOWUSAGE;
if (ast_context_add_include(argv[4], argv[2], registrar)) {
switch (errno) {
@@ -724,7 +724,7 @@
case EEXIST:
ast_cli(fd, "Context '%s' already included in '%s' context\n",
- argv[1], argv[3]); break;
+ argv[2], argv[4]); break;
case ENOENT:
case EINVAL:
@@ -733,14 +733,14 @@
default:
ast_cli(fd, "Failed to include '%s' in '%s' context\n",
- argv[1], argv[3]); break;
+ argv[2], argv[4]); break;
}
return RESULT_FAILURE;
}
/* show some info ... */
ast_cli(fd, "Context '%s' included in '%s' context\n",
- argv[2], argv[3]);
+ argv[2], argv[4]);
return RESULT_SUCCESS;
}
Modified: team/oej/moduletest/pbx/pbx_spool.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/pbx/pbx_spool.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/pbx/pbx_spool.c (original)
+++ team/oej/moduletest/pbx/pbx_spool.c Mon Jan 9 07:44:44 2006
@@ -288,10 +288,11 @@
{
pthread_t t;
pthread_attr_t attr;
+ int ret;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (ast_pthread_create(&t,&attr,attempt_thread, o) == -1) {
- ast_log(LOG_WARNING, "Unable to create thread :(\n");
+ if ((ret = ast_pthread_create(&t,&attr,attempt_thread, o)) != 0) {
+ ast_log(LOG_WARNING, "Unable to create thread :( (returned error: %d)\n", ret);
free_outgoing(o);
}
}
@@ -412,6 +413,7 @@
{
pthread_t thread;
pthread_attr_t attr;
+ int ret;
snprintf(qdir, sizeof(qdir), "%s/%s", ast_config_AST_SPOOL_DIR, "outgoing");
if (mkdir(qdir, 0700) && (errno != EEXIST)) {
ast_log(LOG_WARNING, "Unable to create queue directory %s -- outgoing spool disabled\n", qdir);
@@ -419,8 +421,8 @@
}
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (ast_pthread_create(&thread,&attr,scan_thread, NULL) == -1) {
- ast_log(LOG_WARNING, "Unable to create thread :(\n");
+ if ((ret = ast_pthread_create(&thread,&attr,scan_thread, NULL)) != 0) {
+ ast_log(LOG_WARNING, "Unable to create thread :( (returned error: %d)\n", ret);
return -1;
}
return 0;
Modified: team/oej/moduletest/res/res_features.c
URL: http://svn.digium.com/view/asterisk/team/oej/moduletest/res/res_features.c?rev=7880&r1=7879&r2=7880&view=diff
==============================================================================
--- team/oej/moduletest/res/res_features.c (original)
+++ team/oej/moduletest/res/res_features.c Mon Jan 9 07:44:44 2006
@@ -1,7 +1,7 @@
/*
* Asterisk -- An open source telephony toolkit.
*
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
*
* Mark Spencer <markster at digium.com>
*
@@ -357,7 +357,7 @@
"From: %s\r\n"
"Timeout: %ld\r\n"
"CallerID: %s\r\n"
- "CallerIDName: %s\r\n\r\n"
+ "CallerIDName: %s\r\n"
,pu->parkingnum, pu->chan->name, peer->name
,(long)pu->start.tv_sec + (long)(pu->parkingtime/1000) - (long)time(NULL)
,(pu->chan->cid.cid_num ? pu->chan->cid.cid_num : "<unknown>")
@@ -943,13 +943,15 @@
app = pbx_findapp(feature->app);
if (app) {
- struct ast_channel *work=chan;
- if (ast_test_flag(feature,AST_FEATURE_FLAG_CALLEE)) work=peer;
+ struct ast_channel *work = chan;
+ if (ast_test_flag(feature, AST_FEATURE_FLAG_CALLEE))
+ work = peer;
res = pbx_exec(work, app, feature->app_args, 1);
- if (res<0) return res;
+ if (res < 0)
+ return res;
} else {
ast_log(LOG_WARNING, "Could not find application (%s)\n", feature->app);
- res = -2;
+ return -2;
}
return FEATURE_RETURN_SUCCESS;
@@ -1543,7 +1545,7 @@
"Exten: %d\r\n"
"Channel: %s\r\n"
"CallerID: %s\r\n"
- "CallerIDName: %s\r\n\r\n"
+ "CallerIDName: %s\r\n"
,pu->parkingnum, pu->chan->name
,(pu->chan->cid.cid_num ? pu->chan->cid.cid_num : "<unknown>")
,(pu->chan->cid.cid_name ? pu->chan->cid.cid_name : "<unknown>")
@@ -1582,12 +1584,13 @@
/* See if they need servicing */
f = ast_read(pu->chan);
if (!f || ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP))) {
-
+ if (f)
+ ast_frfree(f);
manager_event(EVENT_FLAG_CALL, "ParkedCallGiveUp",
"Exten: %d\r\n"
"Channel: %s\r\n"
"CallerID: %s\r\n"
- "CallerIDName: %s\r\n\r\n"
+ "CallerIDName: %s\r\n"
,pu->parkingnum, pu->chan->name
,(pu->chan->cid.cid_num ? pu->chan->cid.cid_num : "<unknown>")
,(pu->chan->cid.cid_name ? pu->chan->cid.cid_name : "<unknown>")
@@ -1724,7 +1727,7 @@
"Channel: %s\r\n"
"From: %s\r\n"
"CallerID: %s\r\n"
- "CallerIDName: %s\r\n\r\n"
+ "CallerIDName: %s\r\n"
,pu->parkingnum, pu->chan->name, chan->name
,(pu->chan->cid.cid_num ? pu->chan->cid.cid_num : "<unknown>")
,(pu->chan->cid.cid_name ? pu->chan->cid.cid_name : "<unknown>")
More information about the asterisk-commits
mailing list