aboutsummaryrefslogtreecommitdiff
path: root/libsylph/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsylph/session.c')
-rw-r--r--libsylph/session.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libsylph/session.c b/libsylph/session.c
index 77209c96..c73fe51d 100644
--- a/libsylph/session.c
+++ b/libsylph/session.c
@@ -775,10 +775,19 @@ static gboolean session_read_data_as_file_cb(SockInfo *source,
if (data_begin_p > session->read_buf) {
g_memmove(session->read_buf, data_begin_p,
buf_data_len);
- session->read_buf_p =
- session->read_buf + buf_data_len;
+ data_begin_p = session->read_buf;
+ session->read_buf_p = session->read_buf +
+ session->preread_len;
}
g_print("buffer data (%d) <= PREREAD_SIZE\n", buf_data_len);
+ session->read_buf_p += session->read_buf_len;
+ session->preread_len = buf_data_len;
+ session->read_buf_len = 0;
+ return TRUE;
+ }
+
+ if (READ_BUF_LEFT() >= (SESSION_BUFFSIZE / 2)) {
+ session->read_buf_p += session->read_buf_len;
session->preread_len = buf_data_len;
session->read_buf_len = 0;
return TRUE;