]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: improve channel read error logging
authorMoises Silva <moy@sangoma.com>
Fri, 25 Jun 2010 16:11:23 +0000 (12:11 -0400)
committerMoises Silva <moy@sangoma.com>
Fri, 25 Jun 2010 16:47:32 +0000 (12:47 -0400)
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c

index dca616e74b950b4a1762ce840828f9eab805fb5e..d813fa5a485e0a79a62fe5dcea872e43b7e1b23f 100644 (file)
@@ -2911,16 +2911,22 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
        
        if (!ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OPEN)) {
                snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "channel not open");
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "cannot read from channel that is not open\n");
                return FTDM_FAIL;
        }
 
        if (!ftdmchan->fio->read) {
                snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "method not implemented");
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "read method not implemented\n");
                return FTDM_FAIL;
        }
 
        status = ftdm_raw_read(ftdmchan, data, datalen);
 
+       if (status != FTDM_SUCCESS) {
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "raw I/O read filed\n");
+       }
+
        if (status == FTDM_SUCCESS) {
                if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_USE_RX_GAIN) 
                        && (ftdmchan->native_codec == FTDM_CODEC_ALAW || ftdmchan->native_codec == FTDM_CODEC_ULAW)) {
@@ -2947,6 +2953,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
                        status = codec_func(data, max, datalen);
                } else {
                        snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "codec error!");
+                       ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "no codec function to perform transcoding from %d to %d\n", ftdmchan->native_codec, ftdmchan->effective_codec);
                        status = FTDM_FAIL;
                }
        }
@@ -2979,6 +2986,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data
                                        *sln++ = alaw_to_linear(*lp++);
                                } else {
                                        snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "codec error!");
+                                       ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "invalid effective codec %d\n", ftdmchan->effective_codec);
                                        return FTDM_FAIL;
                                }
                        }
index 914e53e73033cf62425864fcdf8b641d63abbac4..9a8cab411285d0e0b2b633b698e1873ae9c070da 100644 (file)
@@ -731,19 +731,23 @@ static FIO_COMMAND_FUNCTION(wanpipe_command)
 static FIO_READ_FUNCTION(wanpipe_read)
 {
        int rx_len = 0;
+       int myerrno = 0;
        wp_tdm_api_rx_hdr_t hdrframe;
 
        memset(&hdrframe, 0, sizeof(hdrframe));
 
-       rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen,0);
+       rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen, 0);
        *datalen = rx_len;
 
-       if (rx_len == 0 || rx_len == -17) {
+       if (rx_len == 0) {
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Read 0 bytes\n");
                return FTDM_TIMEOUT;
        }
 
        if (rx_len < 0) {
+               myerrno = errno;
                snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "%s", strerror(errno));
+               ftdm_log_chan(ftdmchan, FTDM_LOG_WARNING, "Failed to read from sangoma device: %s (%d)\n", strerror(errno), rx_len);
                return FTDM_FAIL;
        }