]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweaks on earlier changes
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 13 Jan 2012 18:02:32 +0000 (12:02 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 13 Jan 2012 18:02:36 +0000 (12:02 -0600)
src/switch_core_media_bug.c
src/switch_ivr_async.c

index ce6f01ada821b4649f5fdf15c9a265846e0a83dd..8727fa896cb03814cb2af734a0e8283a1cc63488 100644 (file)
@@ -213,10 +213,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b
                return SWITCH_STATUS_FALSE;
        }
 
-       if (!((bug->last_read_ts && bug->last_write_ts) || (do_read && do_write))) {
-               return SWITCH_STATUS_FALSE;
-       }
-       
        if (fill) {
                fill_read = !do_read;
                fill_write = !do_write;
@@ -232,13 +228,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b
        
        if (do_read) {
                switch_mutex_lock(bug->read_mutex);
-               switch_buffer_read(bug->raw_read_buffer, &rh, sizeof(rh));
-               bug->last_read_ts = rh.ts;
-               frame->datalen = (uint32_t) switch_buffer_read(bug->raw_read_buffer, frame->data, rh.len);
-               if (frame->datalen != rh.len) {
-                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Reading!\n");
-                       switch_core_media_bug_flush(bug);
-                       return SWITCH_STATUS_FALSE;
+               if (switch_buffer_read(bug->raw_read_buffer, &rh, sizeof(rh))) {
+                       bug->last_read_ts = rh.ts;
+                       frame->datalen = (uint32_t) switch_buffer_read(bug->raw_read_buffer, frame->data, rh.len);
+                       if (frame->datalen != rh.len) {
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Reading!\n");
+                               switch_core_media_bug_flush(bug);
+                               switch_mutex_unlock(bug->read_mutex);
+                               return SWITCH_STATUS_FALSE;
+                       }
+               } else {
+                       do_read = 0;
                }
                
                switch_mutex_unlock(bug->read_mutex);
@@ -250,13 +250,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b
        if (do_write) {
                switch_assert(bug->raw_write_buffer);
                switch_mutex_lock(bug->write_mutex);
-               switch_buffer_read(bug->raw_write_buffer, &wh, sizeof(wh));
-               bug->last_write_ts = wh.ts;
-               datalen = (uint32_t) switch_buffer_read(bug->raw_write_buffer, bug->data, wh.len);
-               if (datalen != wh.len) {
-                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Writing!\n");
-                       switch_core_media_bug_flush(bug);
-                       return SWITCH_STATUS_FALSE;
+               if ((switch_buffer_read(bug->raw_write_buffer, &wh, sizeof(wh)))) {
+                       bug->last_write_ts = wh.ts;
+                       datalen = (uint32_t) switch_buffer_read(bug->raw_write_buffer, bug->data, wh.len);
+                       if (datalen != wh.len) {
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "Framing Error Writing!\n");
+                               switch_core_media_bug_flush(bug);
+                               switch_mutex_unlock(bug->write_mutex);
+                               return SWITCH_STATUS_FALSE;
+                       }
+               } else {
+                       do_write = 0;
                }
                switch_mutex_unlock(bug->write_mutex);
        } else if (fill_write) {
index 3de9e8df896b58f0f39e455780fa57b82a0ce028..3f59ff778aa3e26681b045f932a01f087fb7f288 100644 (file)
@@ -1028,7 +1028,7 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
                                frame.data = data;
                                frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE;
 
-                               while (switch_core_media_bug_read(bug, &frame, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS && !switch_test_flag((&frame), SFF_CNG)) {
+                               while (switch_core_media_bug_read(bug, &frame, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) {
                                        len = (switch_size_t) frame.datalen / 2;
 
                                        if (len && switch_core_file_write(rh->fh, data, &len) != SWITCH_STATUS_SUCCESS && rh->hangup_on_error) {
@@ -1171,7 +1171,7 @@ static switch_bool_t eavesdrop_callback(switch_media_bug_t *bug, void *user_data
                break;
        case SWITCH_ABC_TYPE_READ_PING:
                if (ep->buffer) {
-                       if (switch_core_media_bug_read(bug, &frame, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
+                       if (switch_core_media_bug_read(bug, &frame, SWITCH_FALSE) != SWITCH_STATUS_FALSE) {
                                switch_buffer_lock(ep->buffer);
                                switch_buffer_zwrite(ep->buffer, frame.data, frame.datalen);
                                switch_buffer_unlock(ep->buffer);
@@ -3473,7 +3473,7 @@ static switch_bool_t speech_callback(switch_media_bug_t *bug, void *user_data, s
                break;
        case SWITCH_ABC_TYPE_READ:
                if (sth->ah) {
-                       if (switch_core_media_bug_read(bug, &frame, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
+                       if (switch_core_media_bug_read(bug, &frame, SWITCH_FALSE) != SWITCH_STATUS_FALSE) {
                                if (switch_core_asr_feed(sth->ah, frame.data, frame.datalen, &flags) != SWITCH_STATUS_SUCCESS) {
                                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_DEBUG, "Error Feeding Data\n");
                                        return SWITCH_FALSE;