X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.c;h=2790cf4fdaa259d426c0ec41bb2a442c99db01a1;hp=ff8da54632750287c4dcaecf30d985a9f9b7e84b;hb=45fdd28ad2eb0eb0457ad440b7023243ba9db815;hpb=89d3a5de4769faafa46efb83e1e35db5b40f1309 diff --git a/chan_lcr.c b/chan_lcr.c index ff8da54..2790cf4 100644 --- a/chan_lcr.c +++ b/chan_lcr.c @@ -475,6 +475,14 @@ void apply_opt(struct chan_call *call, char *data) if (call->bchannel) bchannel_pipeline(call->bchannel, call->pipeline); break; + case 'r': + if (opt[1] == '\0') { + CERROR(call, call->ast, "Option 'r' (re-buffer 160 bytes) expects no parameter.\n", opt); + break; + } + CDEBUG(call, call->ast, "Option 'r' (re-buffer 160 bytes)"); + call->rebuffer = 1; + break; #if 0 case 's': if (opt[1] != '\0') { @@ -1935,7 +1943,11 @@ static struct ast_frame *lcr_read(struct ast_channel *ast) return NULL; } if (call->pipe[0] > -1) { - len = read(call->pipe[0], call->read_buff, sizeof(call->read_buff)); + if (call->rebuffer) { + len = read(call->pipe[0], call->read_buff, 160); + } else { + len = read(call->pipe[0], call->read_buff, sizeof(call->read_buff)); + } if (len <= 0) { close(call->pipe[0]); call->pipe[0] = -1;