]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetmd: fix mix buffer size
authorMoises Silva <moy@sangoma.com>
Sun, 1 Aug 2010 08:31:06 +0000 (04:31 -0400)
committerMoises Silva <moy@sangoma.com>
Sun, 1 Aug 2010 08:31:06 +0000 (04:31 -0400)
libs/freetdm/src/ftmod/ftmod_pritap/ftmod_pritap.c

index 9719a831db65bd1240e408c21be243d829c9e7ba..220a96515b9cf8d6fa852ddc8564bc7e2ddd73aa 100644 (file)
@@ -754,8 +754,8 @@ static ftdm_status_t ftdm_pritap_sig_read(ftdm_channel_t *ftdmchan, void *data,
        ftdm_status_t status;
        fio_codec_t codec_func;
        ftdm_channel_t *peerchan = ftdmchan->call_data;
-       int16_t peerbuf[size];
        int16_t chanbuf[size];
+       int16_t peerbuf[size];
        int16_t mixedbuf[size];
        int i = 0;
        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);
-       status = peerchan->fio->read(ftdmchan->call_data, peerbuf, &sizeread);
+       status = peerchan->fio->read(peerchan, peerbuf, &sizeread);
        if (status != FTDM_SUCCESS) {
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "Failed to read from peer channel!\n");
                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;
        if (codec_func) {
-               codec_func(peerbuf, sizeof(peerbuf), &sizeread);
                sizeread = size;
                codec_func(chanbuf, sizeof(chanbuf), &sizeread);
+               sizeread = size;
+               codec_func(peerbuf, sizeof(peerbuf), &sizeread);
        }
 
        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;
        if (codec_func) {
-               codec_func(data, size, &size);
-       } else {
-               memcpy(data, mixedbuf, sizeof(mixedbuf));
+               size = sizeof(mixedbuf);
+               codec_func(mixedbuf, size, &size);
        }
-
+       memcpy(data, mixedbuf, size);
        return FTDM_SUCCESS;
 }