diff options
author | sandmann <sandmann> | 2004-07-11 21:50:51 +0000 |
---|---|---|
committer | sandmann <sandmann> | 2004-07-11 21:50:51 +0000 |
commit | bf426687bbded794a682f660c9754796282c0566 (patch) | |
tree | fbef2c51fff8ccfdbd347d40267a9b4e131fc07b | |
parent | d3c68076e8d6a878902c8f8c12aa9e320307abad (diff) |
some fixes
-rw-r--r-- | src/lac.h | 1 | ||||
-rw-r--r-- | src/lachttp.c | 24 | ||||
-rw-r--r-- | tests/lacwget.c | 7 |
3 files changed, 22 insertions, 10 deletions
@@ -387,6 +387,7 @@ typedef enum { typedef struct { LacHttpEventType type; + const char * hostname; const LacAddress * address; } LacHttpHostFoundEvent; diff --git a/src/lachttp.c b/src/lachttp.c index c68858f..7265f71 100644 --- a/src/lachttp.c +++ b/src/lachttp.c @@ -45,9 +45,14 @@ enum { * choked on the pipeline and retry all * outstanding requests. */ - MAX_LINE = 4096 /* we won't accept headers or status + MAX_LINE = 4096, /* we won't accept headers or status * lines longer than this */ + + CHOKE_RECOVERY = 0 /* number of milliseconds we wait before + * retrying on a server that choked on a + * pipeline + */ }; typedef enum { @@ -161,6 +166,7 @@ static void request_emit_events (LacHttpRequest *re static void request_emit_connecting (LacHttpRequest *request); static void request_emit_sent (LacHttpRequest *request); static void request_emit_host_found (LacHttpRequest *request, + const char *hostname, const LacAddress *addr); static void request_emit_status_line (LacHttpRequest *request, gint major, @@ -1265,12 +1271,14 @@ request_emit_sent (LacHttpRequest *request) } static void -request_emit_host_found (LacHttpRequest *request, - const LacAddress *addr) +request_emit_host_found (LacHttpRequest *request, + const char *hostname, + const LacAddress *addr) { LacHttpEvent *event = g_new (LacHttpEvent, 1); event->type = LAC_HTTP_EVENT_HOST_FOUND; + event->host_found.hostname = hostname; event->host_found.address = lac_address_copy (addr); request_queue_event (request, event); @@ -1503,8 +1511,8 @@ lac_http_request_cancel (LacHttpRequest *request) static void address_callback (const LacAddress *new_addr, - gpointer data, - const GError *err) + gpointer data, + const GError *err) { LacHttpRequest *request = data; @@ -1521,7 +1529,7 @@ address_callback (const LacAddress *new_addr, http_host = http_host_new ( new_addr, request->uri->u.http.port); - request_emit_host_found (request, new_addr); + request_emit_host_found (request, request->uri->u.http.host, new_addr); http_host_add_request (http_host, request); request->host = http_host; @@ -1953,8 +1961,8 @@ answer_timeout (gpointer data) if (transport->did_pipeline && (!g_queue_is_empty (transport->in_progress) || transport->current)) { - g_print ("CHOKED\n"); - server_choked_on_pipeline (transport, 4000); + g_print ("CHOKED (%s)\n"); + server_choked_on_pipeline (transport, CHOKE_RECOVERY); http_host_transport_will_close_notify (transport->host, transport); lac_connection_close (transport->connection); } diff --git a/tests/lacwget.c b/tests/lacwget.c index f1eabbf..c7245ef 100644 --- a/tests/lacwget.c +++ b/tests/lacwget.c @@ -450,8 +450,11 @@ http_callback (LacHttpRequest *request, const LacHttpEvent *event) switch (event->type) { case LAC_HTTP_EVENT_HOST_FOUND: - g_print ("%s: dns lookup complete at %f\n", page_info->main_uri, - g_timer_elapsed (total, NULL)); + g_print ("%s: dns lookup complete at %f (%s: %s)\n", + page_info->main_uri, + g_timer_elapsed (total, NULL), + event->host_found.hostname, + lac_address_to_string (event->host_found.address)); break; case LAC_HTTP_EVENT_SENT: |