diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-02-26 16:17:10 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-02-26 16:17:57 -0600 |
commit | 7be80ef131d15304752e308ee906e1e6671ced86 (patch) | |
tree | 91f18323472c02f510e310b37f07e5125360eda6 /gatchat/gatserver.c | |
parent | 988fed59511d99541ec2be87127456105a1a4e2c (diff) | |
download | ofono-7be80ef131d15304752e308ee906e1e6671ced86.tar.bz2 |
Fix: Simplify write-again logic
Diffstat (limited to 'gatchat/gatserver.c')
-rw-r--r-- | gatchat/gatserver.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index 05392e9a..f19d2677 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -485,7 +485,6 @@ static gboolean can_write_data(GIOChannel *channel, GIOCondition cond, gsize towrite; struct ring_buffer *write_buf; unsigned char *buf; - gboolean write_again = FALSE; #ifdef WRITE_SCHEDULER_DEBUG int limiter; #endif @@ -502,8 +501,6 @@ static gboolean can_write_data(GIOChannel *channel, GIOCondition cond, buf = ring_buffer_read_ptr(write_buf, 0); towrite = ring_buffer_len_no_wrap(write_buf); - if (towrite < (gsize)ring_buffer_len(write_buf)) - write_again = TRUE; #ifdef WRITE_SCHEDULER_DEBUG limiter = towrite; @@ -535,13 +532,13 @@ static gboolean can_write_data(GIOChannel *channel, GIOCondition cond, * unless it's the last buffer in the queue. */ if ((ring_buffer_len(write_buf) == 0) && - (g_queue_get_length(server->write_queue) != 1)) { + (g_queue_get_length(server->write_queue) > 1)) { write_buf = g_queue_pop_head(server->write_queue); ring_buffer_free(write_buf); - return TRUE; + write_buf = g_queue_peek_head(server->write_queue); } - if (bytes_written < towrite || write_again == TRUE) + if (ring_buffer_len(write_buf) > 0) return TRUE; return FALSE; |