summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsandmann <sandmann>2004-07-11 21:50:51 +0000
committersandmann <sandmann>2004-07-11 21:50:51 +0000
commitbf426687bbded794a682f660c9754796282c0566 (patch)
treefbef2c51fff8ccfdbd347d40267a9b4e131fc07b
parentd3c68076e8d6a878902c8f8c12aa9e320307abad (diff)
some fixes
-rw-r--r--src/lac.h1
-rw-r--r--src/lachttp.c24
-rw-r--r--tests/lacwget.c7
3 files changed, 22 insertions, 10 deletions
diff --git a/src/lac.h b/src/lac.h
index 916f0fc..cdef1e0 100644
--- a/src/lac.h
+++ b/src/lac.h
@@ -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: