freetmd: fix mix buffer size

This commit is contained in:
Moises Silva 2010-08-01 04:31:06 -04:00
parent e0b1ea7faa
commit 00fc32ecef

View File

@ -754,8 +754,8 @@ static ftdm_status_t ftdm_pritap_sig_read(ftdm_channel_t *ftdmchan, void *data,
ftdm_status_t status; ftdm_status_t status;
fio_codec_t codec_func; fio_codec_t codec_func;
ftdm_channel_t *peerchan = ftdmchan->call_data; ftdm_channel_t *peerchan = ftdmchan->call_data;
int16_t peerbuf[size];
int16_t chanbuf[size]; int16_t chanbuf[size];
int16_t peerbuf[size];
int16_t mixedbuf[size]; int16_t mixedbuf[size];
int i = 0; int i = 0;
ftdm_size_t sizeread = size; ftdm_size_t sizeread = size;
@ -771,7 +771,7 @@ static ftdm_status_t ftdm_pritap_sig_read(ftdm_channel_t *ftdmchan, void *data,
} }
memcpy(chanbuf, data, size); memcpy(chanbuf, data, size);
status = peerchan->fio->read(ftdmchan->call_data, peerbuf, &sizeread); status = peerchan->fio->read(peerchan, peerbuf, &sizeread);
if (status != FTDM_SUCCESS) { if (status != FTDM_SUCCESS) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "Failed to read from peer channel!\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "Failed to read from peer channel!\n");
return FTDM_FAIL; return FTDM_FAIL;
@ -783,9 +783,10 @@ static ftdm_status_t ftdm_pritap_sig_read(ftdm_channel_t *ftdmchan, void *data,
codec_func = peerchan->native_codec == FTDM_CODEC_ULAW ? fio_ulaw2slin : peerchan->native_codec == FTDM_CODEC_ALAW ? fio_alaw2slin : NULL; codec_func = peerchan->native_codec == FTDM_CODEC_ULAW ? fio_ulaw2slin : peerchan->native_codec == FTDM_CODEC_ALAW ? fio_alaw2slin : NULL;
if (codec_func) { if (codec_func) {
codec_func(peerbuf, sizeof(peerbuf), &sizeread);
sizeread = size; sizeread = size;
codec_func(chanbuf, sizeof(chanbuf), &sizeread); codec_func(chanbuf, sizeof(chanbuf), &sizeread);
sizeread = size;
codec_func(peerbuf, sizeof(peerbuf), &sizeread);
} }
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
@ -794,11 +795,10 @@ static ftdm_status_t ftdm_pritap_sig_read(ftdm_channel_t *ftdmchan, void *data,
codec_func = peerchan->native_codec == FTDM_CODEC_ULAW ? fio_slin2ulaw : peerchan->native_codec == FTDM_CODEC_ALAW ? fio_slin2alaw : NULL; codec_func = peerchan->native_codec == FTDM_CODEC_ULAW ? fio_slin2ulaw : peerchan->native_codec == FTDM_CODEC_ALAW ? fio_slin2alaw : NULL;
if (codec_func) { if (codec_func) {
codec_func(data, size, &size); size = sizeof(mixedbuf);
} else { codec_func(mixedbuf, size, &size);
memcpy(data, mixedbuf, sizeof(mixedbuf));
} }
memcpy(data, mixedbuf, size);
return FTDM_SUCCESS; return FTDM_SUCCESS;
} }