diff --git a/apps/app_while.c b/apps/app_while.c index 736038ecd8..1cd7834694 100644 --- a/apps/app_while.c +++ b/apps/app_while.c @@ -275,8 +275,8 @@ static int _while_exec(struct ast_channel *chan, void *data, int end) pbx_builtin_setvar_helper(chan, my_name, NULL); snprintf(end_varname,VAR_SIZE,"END_%s",varname); if ((goto_str=pbx_builtin_getvar_helper(chan, end_varname))) { - pbx_builtin_setvar_helper(chan, end_varname, NULL); ast_parseable_goto(chan, goto_str); + pbx_builtin_setvar_helper(chan, end_varname, NULL); } else { int pri = find_matching_endwhile(chan); if (pri > 0) { diff --git a/channel.c b/channel.c index 4779bf8d90..2a22bed3ca 100644 --- a/channel.c +++ b/channel.c @@ -1958,9 +1958,10 @@ struct ast_frame *ast_read(struct ast_channel *chan) #ifndef MONITOR_CONSTANT_DELAY 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) + jump = chan->outsmpl - chan->insmpl; + if (ast_seekstream(chan->monitor->read_stream, jump, 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 + 4 * f->samples; + chan->insmpl += jump + f->samples; } else chan->insmpl+= f->samples; #else @@ -2313,9 +2314,10 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr) #ifndef MONITOR_CONSTANT_DELAY 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) + jump = chan->insmpl - chan->outsmpl; + if (ast_seekstream(chan->monitor->write_stream, jump, 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 + 4 * f->samples; + chan->outsmpl += jump + f->samples; } else chan->outsmpl += f->samples; #else