From 59c6f7d3f5b4d62be569c5bddc6a9306cba0627d Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Mon, 23 Aug 2010 22:46:48 +0200 Subject: Handle multiple commands in the command service. --- command_service.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'command_service.c') diff --git a/command_service.c b/command_service.c index 562c7f4..5d357da 100644 --- a/command_service.c +++ b/command_service.c @@ -25,17 +25,16 @@ static gboolean service_incoming(GSocketService *service, g_debug("size == %ld", size); g_debug(buffer); - gchar *pos = g_strstr_len(buffer, size, "\r"); - if(pos == NULL) { - pos = g_strstr_len(buffer, size, "\n"); - } - if(pos == NULL) { - g_warning("EOL not found"); - return FALSE; - } - *pos = '\0'; + gchar *pos, *eol; + pos = buffer; + while((eol = g_strstr_len(pos, size, "\n")) != NULL || (eol = g_strstr_len(pos, size, "\r")) != NULL) { + *eol = '\0'; - commands_handle(connection, buffer); + commands_handle(connection, pos); + + size -= eol - pos + 1; + pos = eol + 1; + } } return FALSE; -- cgit v1.2.3