]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix another buffering regression
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 12 Jan 2009 23:14:55 +0000 (23:14 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 12 Jan 2009 23:14:55 +0000 (23:14 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11152 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/formats/mod_local_stream/mod_local_stream.c
src/switch_core_file.c

index a5c82cbb64669f4cb73dfb4e15b4f0837eb14ced..49ca2bafa745c04aa0cf53592f49dd35ffc7583b 100644 (file)
@@ -32,7 +32,7 @@
  */
 #include <switch.h>
 /* for apr_pstrcat */
-#define DEFAULT_PREBUFFER_SIZE 1024 * 32
+#define DEFAULT_PREBUFFER_SIZE 1024 * 64
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_local_stream_load);
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_local_stream_shutdown);
index e810297a2181a831a27540c47ef16b6a07b20a13..bf6bf5166781992506a31fdebfc30e8991bb79e2 100644 (file)
@@ -158,8 +158,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh,
                int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
 
                if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE)) {
-                       if (!switch_buffer_inuse(fh->pre_buffer)) {
-                               rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+                       rlen = asis ? fh->pre_buffer_datalen : fh->pre_buffer_datalen / 2;
+
+                       if (switch_buffer_inuse(fh->pre_buffer) < rlen * 2) {
                                if ((status = fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) != SWITCH_STATUS_SUCCESS || !rlen) {
                                        switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
                                } else {