diff options
author | sandmann <sandmann> | 2007-01-16 06:48:53 +0000 |
---|---|---|
committer | sandmann <sandmann> | 2007-01-16 06:48:53 +0000 |
commit | a737ebdf4e09a0f9b420b9598a6c55bc4762ca29 (patch) | |
tree | 6b9fbec17cbb0fa7a449ccd8033171cb2fea9dfb | |
parent | 9bd1d808e6677a0a4781a3b59816955fa1eedaa4 (diff) |
Some more bytequeue
-rw-r--r-- | src/lacdns-config.c | 2 | ||||
-rw-r--r-- | src/lacdns-nameserver.c | 6 | ||||
-rw-r--r-- | src/lachttp.c | 69 |
3 files changed, 35 insertions, 42 deletions
diff --git a/src/lacdns-config.c b/src/lacdns-config.c index d7e66aa..0f6f231 100644 --- a/src/lacdns-config.c +++ b/src/lacdns-config.c @@ -38,7 +38,7 @@ static void read_etc_resolv_conf (void); enum { DEFAULT_N_DOTS = 1, - DEFAULT_TIMEOUT = 1000, + DEFAULT_TIMEOUT = 2000, DEFAULT_ATTEMPTS = 10, DEFAULT_ROTATE = FALSE, }; diff --git a/src/lacdns-nameserver.c b/src/lacdns-nameserver.c index f9a795f..6662859 100644 --- a/src/lacdns-nameserver.c +++ b/src/lacdns-nameserver.c @@ -32,9 +32,9 @@ enum { QUERY_TIMEOUT = 900000, /* after this long, we consider any * replies spurious */ - MAX_UDP_QUERIES = 64 /* maximum number of outstanding - * UDP queries - */ + MAX_UDP_QUERIES = 8 /* maximum number of outstanding + * UDP queries + */ }; /* diff --git a/src/lachttp.c b/src/lachttp.c index 4175bba..a4603b8 100644 --- a/src/lachttp.c +++ b/src/lachttp.c @@ -179,8 +179,8 @@ static void request_emit_header (LacHttpRequest *re static void request_emit_begin_content (LacHttpRequest *request, gint length); static void request_emit_content (LacHttpRequest *request, - gint length, - const gchar *data); + gsize n_bytes, + LacByteQueue *queue); static void request_emit_end_content (LacHttpRequest *request); static void request_emit_no_content (LacHttpRequest *request); static void request_emit_error (LacHttpRequest *request, @@ -926,10 +926,10 @@ request_parse_chunk_data (LacHttpRequest *request) unparsed[request->current_chunk_size + 1] == LF) { request_emit_content ( - request, request->current_chunk_size, unparsed); + request, request->current_chunk_size, request->unparsed); - lac_byte_queue_delete_head ( - request->unparsed, request->current_chunk_size + 2); + /* Delete the CRLF */ + lac_byte_queue_delete_head (request->unparsed, 2); request->parser_state = EXPECT_CHUNK_HEADER; return OK; @@ -951,9 +951,7 @@ request_parse_chunk_data (LacHttpRequest *request) if (!request->sent_begin_content) request_emit_begin_content (request, -1); - request_emit_content (request, n_bytes, unparsed); - - lac_byte_queue_delete_head (request->unparsed, n_bytes); + request_emit_content (request, n_bytes, request->unparsed); } return NEED_MORE_DATA; @@ -987,8 +985,8 @@ request_parse_chunk_trailer (LacHttpRequest *request) static ParseResult request_parse_length_delimited_body (LacHttpRequest *request) { - gsize emit_size, n_bytes; - const gchar *unparsed = lac_byte_queue_peek (request->unparsed, &n_bytes); + gsize emit_size; + gsize n_bytes = lac_byte_queue_get_length (request->unparsed); g_assert (request->content_length > request->n_content_bytes); @@ -998,9 +996,7 @@ request_parse_length_delimited_body (LacHttpRequest *request) emit_size = MIN ( n_bytes, request->content_length - request->n_content_bytes); - request_emit_content (request, emit_size, unparsed); - - lac_byte_queue_delete_head (request->unparsed, emit_size); + request_emit_content (request, emit_size, request->unparsed); g_assert (request->n_content_bytes <= request->content_length); @@ -1021,11 +1017,9 @@ request_parse_length_delimited_body (LacHttpRequest *request) static ParseResult request_parse_close_delimited_body (LacHttpRequest *request) { - gsize n_bytes; - const gchar *unparsed = lac_byte_queue_peek (request->unparsed, &n_bytes); - - request_emit_content (request, n_bytes, unparsed); - lac_byte_queue_delete_head (request->unparsed, n_bytes); + request_emit_content ( + request, lac_byte_queue_get_length (request->unparsed), + request->unparsed); return NEED_MORE_DATA; } @@ -1131,15 +1125,11 @@ request_parse_end_of_file (LacHttpRequest *request) if (request->parser_state == EXPECT_CLOSE_DELIMITED_BODY) { - gsize n_bytes; - const gchar *unparsed = - lac_byte_queue_peek (request->unparsed, &n_bytes); + gsize n_bytes = lac_byte_queue_get_length (request->unparsed); if (n_bytes > 0) - { - request_emit_content (request, n_bytes, unparsed); - lac_byte_queue_delete_head (request->unparsed, n_bytes); - } + request_emit_content (request, n_bytes, request->unparsed); + request_emit_end_content (request); request->parser_state = DONE; } @@ -1399,12 +1389,13 @@ request_emit_begin_content (LacHttpRequest *request, * to avoid copying the data, if possible */ static void -request_emit_content (LacHttpRequest *request, - gint length, - const gchar *data) +request_emit_content (LacHttpRequest *request, + gsize length, + LacByteQueue *queue) { - LacHttpEvent *event = g_new (LacHttpEvent, 1); gint bytes_to_emit; + LacHttpEvent *event = g_new (LacHttpEvent, 1); + const gchar *data = lac_byte_queue_peek (queue, NULL); if (!request->sent_begin_content) request_emit_begin_content (request, -1); @@ -1419,16 +1410,18 @@ request_emit_content (LacHttpRequest *request, request->n_content_bytes += length; - if (bytes_to_emit <= 0) - return; - - data = data + (length - bytes_to_emit); - - event->type = LAC_HTTP_EVENT_CONTENT; - event->content.length = bytes_to_emit; - event->content.data = g_memdup (data, bytes_to_emit); + if (bytes_to_emit > 0) + { + data = data + (length - bytes_to_emit); + + event->type = LAC_HTTP_EVENT_CONTENT; + event->content.length = bytes_to_emit; + event->content.data = g_memdup (data, bytes_to_emit); + + request_queue_event (request, event); + } - request_queue_event (request, event); + lac_byte_queue_delete_head (queue, length); } static void |