diff options
Diffstat (limited to 'content/fetch.c')
-rw-r--r-- | content/fetch.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/content/fetch.c b/content/fetch.c index 93a0c124d..bbf6b2916 100644 --- a/content/fetch.c +++ b/content/fetch.c @@ -1,5 +1,5 @@ /** - * $Id: fetch.c,v 1.6 2003/04/17 21:35:02 bursa Exp $ + * $Id: fetch.c,v 1.7 2003/04/25 08:03:15 bursa Exp $ * * This module handles fetching of data from any url. * @@ -114,7 +114,9 @@ struct fetch * fetch_start(char *url, char *referer, fetch->referer = xstrdup(referer); fetch->p = p; fetch->headers = 0; - fetch->host = xstrdup(uri->server); + fetch->host = 0; + if (uri->server != 0) + fetch->host = xstrdup(uri->server); fetch->queue = 0; fetch->prev = 0; fetch->next = 0; @@ -122,16 +124,19 @@ struct fetch * fetch_start(char *url, char *referer, xmlFreeURI(uri); /* look for a fetch from the same host */ - for (host_fetch = fetch_list; - host_fetch != 0 && strcasecmp(host_fetch->host, fetch->host) != 0; - host_fetch = host_fetch->next) - ; - if (host_fetch != 0) { - /* fetch from this host in progress: queue the new fetch */ - LOG(("queueing")); - fetch->queue = host_fetch->queue; - host_fetch->queue = fetch; - return fetch; + if (fetch->host != 0) { + for (host_fetch = fetch_list; + host_fetch != 0 && (host_fetch->host == 0 || + strcasecmp(host_fetch->host, fetch->host) != 0); + host_fetch = host_fetch->next) + ; + if (host_fetch != 0) { + /* fetch from this host in progress: queue the new fetch */ + LOG(("queueing")); + fetch->queue = host_fetch->queue; + host_fetch->queue = fetch; + return fetch; + } } fetch->next = fetch_list; |