summaryrefslogtreecommitdiffstats
path: root/gatchat/gatserver.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-02-26 16:17:10 -0600
committerDenis Kenzior <denkenz@gmail.com>2010-02-26 16:17:57 -0600
commit7be80ef131d15304752e308ee906e1e6671ced86 (patch)
tree91f18323472c02f510e310b37f07e5125360eda6 /gatchat/gatserver.c
parent988fed59511d99541ec2be87127456105a1a4e2c (diff)
downloadofono-7be80ef131d15304752e308ee906e1e6671ced86.tar.bz2
Fix: Simplify write-again logic
Diffstat (limited to 'gatchat/gatserver.c')
-rw-r--r--gatchat/gatserver.c9
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;