Commit: 77a1c887e719ce131aef771aa9eb1a4501071f8b
Parent: 04769c72a60b43adb43943236396b705c57e6a05
Author: opask
Date:   Mon,  6 Aug 2018 18:40:45 -0600
remove unused code and style cleanup in sched.c
Diffstat:
| M | sched.c | | | 507 | +++++++++++++++++++++++++++++++++++++++---------------------------------------- | 
1 file changed, 251 insertions(+), 256 deletions(-)
diff --git a/sched.c b/sched.c
@@ -29,11 +29,6 @@ struct list_head keepalive_connections = {&keepalive_connections, &keepalive_con
 static void send_connection_info(struct connection *c);
 static void del_keepalive_socket(struct k_conn *kc);
 static void check_keepalive_connections(void);
-#ifdef DEBUG
-static void check_queue_bugs(void);
-#else
-#define check_queue_bugs()	do { } while (0)
-#endif
 
 unsigned long connect_info(int type)
 {
@@ -41,19 +36,21 @@ unsigned long connect_info(int type)
 	struct connection *ce;
 	struct list_head *lce;
 	switch (type) {
-		case CI_FILES:
-			return list_size(&queue);
-		case CI_CONNECTING:
-			foreach(struct connection, ce, lce, queue) i += ce->state > S_WAIT && ce->state < S_TRANS;
-			return i;
-		case CI_TRANSFER:
-			foreach(struct connection, ce, lce, queue) i += ce->state == S_TRANS;
-			return i;
-		case CI_KEEP:
-			check_keepalive_connections();
-			return list_size(&keepalive_connections);
-		default:
-			internal("connect_info: bad request");
+	case CI_FILES:
+		return list_size(&queue);
+	case CI_CONNECTING:
+		foreach(struct connection, ce, lce, queue)
+			i += ce->state > S_WAIT && ce->state < S_TRANS;
+		return i;
+	case CI_TRANSFER:
+		foreach(struct connection, ce, lce, queue)
+			i += ce->state == S_TRANS;
+		return i;
+	case CI_KEEP:
+		check_keepalive_connections();
+		return list_size(&keepalive_connections);
+	default:
+		internal("connect_info: bad request");
 	}
 	return 0;
 }
@@ -61,7 +58,9 @@ unsigned long connect_info(int type)
 static int getpri(struct connection *c)
 {
 	int i;
-	for (i = 0; i < N_PRI; i++) if (c->pri[i]) return i;
+	for (i = 0; i < N_PRI; i++)
+		if (c->pri[i])
+			return i;
 	internal("connection has no owner");
 	return N_PRI;
 }
@@ -76,14 +75,16 @@ static int connection_disappeared(struct connection *c, tcount count)
 
 static struct h_conn *is_host_on_list(struct connection *c)
 {
-	unsigned char *ho;
+	char *ho = (char *)get_host_name(c->url);
 	struct h_conn *h;
 	struct list_head *lh;
-	if (!(ho = get_host_name(c->url))) return NULL;
-	foreach(struct h_conn, h, lh, h_conns) if (!strcmp(cast_const_char h->host, cast_const_char ho)) {
-		free(ho);
-		return h;
-	}
+	if (!ho)
+		return NULL;
+	foreach(struct h_conn, h, lh, h_conns)
+		if (!strcmp((const char *)h->host, ho)) {
+			free(ho);
+			return h;
+		}
 	free(ho);
 	return NULL;
 }
@@ -98,7 +99,10 @@ static void stat_timer(void *c_)
 	uttime a = now - r->last_time;
 	if (a > SPD_DISP_TIME * 100)
 		a = SPD_DISP_TIME * 100;
-	if (getpri(c) == PRI_CANCEL && (c->est_length > (longlong)memory_cache_size * MAX_CACHED_OBJECT || c->from > (longlong)memory_cache_size * MAX_CACHED_OBJECT)) register_bottom_half(check_queue, NULL);
+	if (getpri(c) == PRI_CANCEL
+	&& (c->est_length > (long)memory_cache_size * MAX_CACHED_OBJECT
+	|| c->from > (long)memory_cache_size * MAX_CACHED_OBJECT))
+		register_bottom_half(check_queue, NULL);
 	if (c->state > S_WAIT) {
 		r->loaded = c->received;
 		if ((r->size = c->est_length) < (r->pos = c->from) && r->size != -1)
@@ -117,17 +121,19 @@ static void stat_timer(void *c_)
 	}
 	r->last_time = now;
 	r->timer = install_timer(SPD_DISP_TIME, stat_timer, c);
-	if (!st_r) send_connection_info(c);
+	if (!st_r)
+		send_connection_info(c);
 }
 
 void setcstate(struct connection *c, int state)
 {
 	struct status *stat;
 	struct list_head *lstat;
-	if (c->state < 0 && state >= 0) c->prev_error = c->state;
+	if (c->state < 0 && state >= 0)
+		c->prev_error = c->state;
 	if ((c->state = state) == S_TRANS) {
 		struct remaining_info *r = &c->prg;
-		if (r->timer == NULL) {
+		if (!r->timer) {
 			tcount count = c->count;
 			if (!r->valid) {
 				memset(r, 0, sizeof(struct remaining_info));
@@ -142,7 +148,7 @@ void setcstate(struct connection *c, int state)
 		}
 	} else {
 		struct remaining_info *r = &c->prg;
-		if (r->timer != NULL) {
+		if (r->timer) {
 			kill_timer(r->timer);
 			r->timer = NULL;
 		}
@@ -151,21 +157,24 @@ void setcstate(struct connection *c, int state)
 		stat->state = state;
 		stat->prev_error = c->prev_error;
 	}
-	if (state >= 0) send_connection_info(c);
+	if (state >= 0)
+		send_connection_info(c);
 }
 
 static struct k_conn *is_host_on_keepalive_list(struct connection *c)
 {
-	unsigned char *ho;
-	int po;
+	char *ho = (char *)get_keepalive_id(c->url);
+	const int po = get_port(c->url);
 	void (*ph)(struct connection *);
 	struct k_conn *h;
 	struct list_head *lh;
-	if ((po = get_port(c->url)) == -1) return NULL;
-	if (!(ph = get_protocol_handle(c->url))) return NULL;
-	if (!(ho = get_keepalive_id(c->url))) return NULL;
+	if (!(ph = get_protocol_handle(c->url)))
+		return NULL;
+	if (!ho || po < 0)
+		return NULL;
 	foreach(struct k_conn, h, lh, keepalive_connections)
-		if (h->protocol == ph && h->port == po && !strcmp(cast_const_char h->host, cast_const_char ho)) {
+		if (h->protocol == ph && h->port == po
+		&& !strcmp((char *)h->host, ho)) {
 			free(ho);
 			return h;
 		}
@@ -177,10 +186,13 @@ int get_keepalive_socket(struct connection *c, int *protocol_data)
 {
 	struct k_conn *k;
 	int cc;
-	if (c->tries > 0 || c->unrestartable) return -1;
-	if (!(k = is_host_on_keepalive_list(c))) return -1;
+	if (c->tries > 0 || c->unrestartable)
+		return -1;
+	if (!(k = is_host_on_keepalive_list(c)))
+		return -1;
 	cc = k->conn;
-	if (protocol_data) *protocol_data = k->protocol_data;
+	if (protocol_data)
+		*protocol_data = k->protocol_data;
 	freeSSL(c->ssl);
 	c->ssl = k->ssl;
 	memcpy(&c->last_lookup_state, &k->last_lookup_state, sizeof(struct lookup_state));
@@ -188,14 +200,16 @@ int get_keepalive_socket(struct connection *c, int *protocol_data)
 	free(k->host);
 	free(k);
 	c->sock1 = cc;
-	if (max_tries == 1) c->tries = -1;
+	if (max_tries == 1)
+		c->tries = -1;
 	return 0;
 }
 
 void abort_all_keepalive_connections(void)
 {
 	while (!list_empty(keepalive_connections))
-		del_keepalive_socket(list_struct(keepalive_connections.next, struct k_conn));
+		del_keepalive_socket(list_struct(keepalive_connections.next,
+						struct k_conn));
 	check_keepalive_connections();
 }
 
@@ -203,7 +217,8 @@ static void free_connection_data(struct connection *c)
 {
 	struct h_conn *h;
 	int rs;
-	if (c->sock1 != -1) set_handlers(c->sock1, NULL, NULL, NULL);
+	if (c->sock1 != -1)
+		set_handlers(c->sock1, NULL, NULL, NULL);
 	close_socket(&c->sock2);
 	if (c->pid) {
 		EINTRLOOP(rs, kill(c->pid, SIGINT));
@@ -211,11 +226,11 @@ static void free_connection_data(struct connection *c)
 		EINTRLOOP(rs, kill(c->pid, SIGKILL));
 		c->pid = 0;
 	}
-	if (!c->running) {
+	if (!c->running)
 		internal("connection already suspended");
-	}
 	c->running = 0;
-	if (c->dnsquery) kill_dns_request(&c->dnsquery);
+	if (c->dnsquery)
+		kill_dns_request(&c->dnsquery);
 	free(c->buffer);
 	free(c->newconn);
 	free(c->info);
@@ -234,32 +249,15 @@ static void free_connection_data(struct connection *c)
 				free(h->host);
 				free(h);
 			}
-		} else internal("suspending connection that is not on the list (state %d)", c->state);
+		} else
+			internal("suspending connection that is not on the list (state %d)", c->state);
 	}
 }
 
 static void send_connection_info(struct connection *c)
 {
-#if 0
-	int st = c->state;
-	tcount count = c->count;
-	struct status *stat;
-	struct list_head *lstat;
-	/*debug("reporting conn info %s", c->url);*/
-	foreach(struct status, stat, lstat, c->statuss) {
-		/*debug("status list &%p %p %p, status %p %p %p", &c->statuss, c->statuss.next, c->statuss.prev, lstat, lstat->next, lstat->prev);*/
-		stat->ce = c->cache;
-		verify_list_entry(lstat);
-		lstat = lstat->next;
-		if (stat->end) stat->end(stat, stat->data);
-		if (st >= 0 && connection_disappeared(c, count)) return;
-		verify_list_entry(lstat);
-		lstat = lstat->prev;
-	}
-	/*debug("end report %s", c->url);*/
-#else
 	if (!list_empty(c->statuss)) {
-		int st = c->state;
+		const int st = c->state;
 		tcount count = c->count;
 		struct list_head *lstat = c->statuss.next;
 		while (1) {
@@ -268,27 +266,28 @@ static void send_connection_info(struct connection *c)
 			xstat->ce = c->cache;
 			lstat = lstat->next;
 			e = lstat == &c->statuss;
-			if (xstat->end) xstat->end(xstat, xstat->data);
-			if (e) return;
-			if (st >= 0 && connection_disappeared(c, count)) return;
+			if (xstat->end)
+				xstat->end(xstat, xstat->data);
+			if (e || (st >= 0 && connection_disappeared(c, count)))
+				return;
 		}
 	}
-#endif
 }
 
 static void del_connection(struct connection *c)
 {
 	struct cache_entry *ce = c->cache;
-	if (ce) ce->refcount++;
+	if (ce)
+		ce->refcount++;
 	del_from_list(c);
 	send_connection_info(c);
-	if (ce) ce->refcount--;
+	if (ce)
+		ce->refcount--;
 	if (c->detached) {
 		if (ce && !ce->url[0] && !is_entry_used(ce) && !ce->refcount)
 			delete_cache_entry(ce);
-	} else
-		if (ce)
-			trim_cache_entry(ce);
+	} else if (ce)
+		trim_cache_entry(ce);
 	free(c->url);
 	free(c->prev_url);
 	free(c);
@@ -304,11 +303,11 @@ void add_keepalive_socket(struct connection *c, uttime timeout, int protocol_dat
 		goto del;
 	}
 	k = xmalloc(sizeof(struct k_conn));
-	if (c->netcfg_stamp != netcfg_stamp ||
-	    ssl_not_reusable(c->ssl) ||
-	    (k->port = get_port(c->url)) == -1 ||
-	    !(k->protocol = get_protocol_handle(c->url)) ||
-	    !(k->host = get_keepalive_id(c->url))) {
+	if (c->netcfg_stamp != netcfg_stamp
+	|| ssl_not_reusable(c->ssl)
+	|| (k->port = get_port(c->url)) == -1
+	|| !(k->protocol = get_protocol_handle(c->url))
+	|| !(k->host = get_keepalive_id(c->url))) {
 		free(k);
 		del_connection(c);
 		goto clos;
@@ -320,14 +319,12 @@ void add_keepalive_socket(struct connection *c, uttime timeout, int protocol_dat
 	k->ssl = c->ssl;
 	memcpy(&k->last_lookup_state, &c->last_lookup_state, sizeof(struct lookup_state));
 	add_to_list(keepalive_connections, k);
-	del:
+del:
 	del_connection(c);
-	check_queue_bugs();
 	register_bottom_half(check_queue, NULL);
 	return;
-	clos:
+clos:
 	EINTRLOOP(rs, close(c->sock1));
-	check_queue_bugs();
 	register_bottom_half(check_queue, NULL);
 }
 
@@ -355,7 +352,7 @@ static void check_keepalive_connections(void)
 	struct list_head *lkc;
 	uttime ct = get_absolute_time();
 	int p = 0;
-	if (keepalive_timeout != NULL) {
+	if (keepalive_timeout) {
 		kill_timer(keepalive_timeout);
 		keepalive_timeout = NULL;
 	}
@@ -391,14 +388,16 @@ static void sort_queue(void)
 	int swp;
 	do {
 		swp = 0;
-		foreach(struct connection, c, lc, queue) if (c->list_entry.next != &queue) {
-			n = list_struct(c->list_entry.next, struct connection);
-			if (getpri(n) < getpri(c)) {
-				del_from_list(c);
-				add_after_pos(n, c);
-				swp = 1;
+		foreach(struct connection, c, lc, queue)
+			if (c->list_entry.next != &queue) {
+				n = list_struct(c->list_entry.next,
+					struct connection);
+				if (getpri(n) < getpri(c)) {
+					del_from_list(c);
+					add_after_pos(n, c);
+					swp = 1;
+				}
 			}
-		}
 	} while (swp);
 }
 
@@ -422,13 +421,17 @@ static int try_to_suspend_connection(struct connection *c, unsigned char *ho)
 	struct connection *d;
 	struct list_head *ld;
 	foreachback(struct connection, d, ld, queue) {
-		if (getpri(d) <= pri) return -1;
-		if (d->state == S_WAIT) continue;
-		if (d->unrestartable == 2 && getpri(d) < PRI_CANCEL) continue;
+		if (getpri(d) <= pri)
+			return -1;
+		if (d->state == S_WAIT)
+			continue;
+		if (d->unrestartable == 2 && getpri(d) < PRI_CANCEL)
+			continue;
 		if (ho) {
 			unsigned char *h;
-			if (!(h = get_host_name(d->url))) continue;
-			if (strcmp(cast_const_char h, cast_const_char ho)) {
+			if (!(h = get_host_name(d->url)))
+				continue;
+			if (strcmp((const char *)h, (const char *)ho)) {
 				free(h);
 				continue;
 			}
@@ -481,11 +484,15 @@ static void run_connection(struct connection *c)
 		c->socks_proxy[0] = 0;
 		c->dns_append[0] = 0;
 	} else {
-		safe_strncpy(c->socks_proxy, proxies.socks_proxy, sizeof c->socks_proxy);
-		safe_strncpy(c->dns_append, proxies.dns_append, sizeof c->dns_append);
+		safe_strncpy(c->socks_proxy, proxies.socks_proxy,
+			sizeof(c->socks_proxy));
+		safe_strncpy(c->dns_append, proxies.dns_append,
+			sizeof(c->dns_append));
 	}
 
-	if (proxies.only_proxies && !is_proxy_url(c->url) && casecmp(c->url, cast_uchar "data:", 5) && (!*c->socks_proxy || url_bypasses_socks(c->url))) {
+	if (proxies.only_proxies && !is_proxy_url(c->url)
+	&& casecmp(c->url, cast_uchar "data:", 5)
+	&& (!*c->socks_proxy || url_bypasses_socks(c->url))) {
 		setcstate(c, S_NO_PROXY);
 		del_connection(c);
 		return;
@@ -493,8 +500,10 @@ static void run_connection(struct connection *c)
 
 	if (!(func = get_protocol_handle(c->url))) {
 		s_bad_url:
-		if (is_proxy_url(c->url)) setcstate(c, S_BAD_PROXY);
-		else setcstate(c, S_BAD_URL);
+		if (is_proxy_url(c->url))
+			setcstate(c, S_BAD_PROXY);
+		else
+			setcstate(c, S_BAD_URL);
 		del_connection(c);
 		return;
 	}
@@ -516,9 +525,9 @@ static void run_connection(struct connection *c)
 static int is_connection_seekable(struct connection *c)
 {
 	unsigned char *protocol = get_protocol_name(c->url);
-	if (!casestrcmp(protocol, cast_uchar "http") ||
-	    !casestrcmp(protocol, cast_uchar "https") ||
-	    !casestrcmp(protocol, cast_uchar "proxy")) {
+	if (!casestrcmp(protocol, cast_uchar "http")
+	|| !casestrcmp(protocol, cast_uchar "https")
+	|| !casestrcmp(protocol, cast_uchar "proxy")) {
 		unsigned char *d;
 		free(protocol);
 		if (!c->cache || !c->cache->head)
@@ -557,7 +566,6 @@ void retry_connection(struct connection *c)
 	interrupt_connection(c);
 	if (!is_connection_restartable(c)) {
 		del_connection(c);
-		check_queue_bugs();
 		register_bottom_half(check_queue, NULL);
 	} else {
 		c->tries++;
@@ -568,9 +576,9 @@ void retry_connection(struct connection *c)
 
 void abort_connection(struct connection *c)
 {
-	if (c->running) interrupt_connection(c);
+	if (c->running)
+		interrupt_connection(c);
 	del_connection(c);
-	check_queue_bugs();
 	register_bottom_half(check_queue, NULL);
 }
 
@@ -579,65 +587,32 @@ static int try_connection(struct connection *c)
 	struct h_conn *hc = NULL;
 	if ((hc = is_host_on_list(c))) {
 		if (hc->conn >= max_connections_to_host) {
-			if (try_to_suspend_connection(c, hc->host)) return 0;
-			else return -1;
+			if (try_to_suspend_connection(c, hc->host))
+				return 0;
+			else
+				return -1;
 		}
 	}
 	if (active_connections >= max_connections) {
-		if (try_to_suspend_connection(c, NULL)) return 0;
-		else return -1;
+		if (try_to_suspend_connection(c, NULL))
+			return 0;
+		else
+			return -1;
 	}
 	run_connection(c);
 	return 1;
 }
 
-#ifdef DEBUG
-static void check_queue_bugs(void)
-{
-	struct connection *d;
-	struct list_head *ld;
-	int p = 0, ps = 0;
-	int cc;
-	again:
-	cc = 0;
-	foreach(struct connection, d, ld, queue) {
-		int q = getpri(d);
-		cc += d->running;
-		if (q < p) {
-			if (!ps) {
-				internal("queue is not sorted");
-				sort_queue();
-				ps = 1;
-				goto again;
-			} else {
-				internal("queue is not sorted even after sort_queue!");
-				break;
-			}
-		} else p = q;
-		if (d->state < 0) {
-			internal("interrupted connection on queue (conn %s, state %d)", d->url, d->state);
-			ld = ld->prev;
-			abort_connection(d);
-		}
-	}
-	if (cc != active_connections) {
-		internal("bad number of active connections (counted %d, stored %d)", cc, active_connections);
-		active_connections = cc;
-	}
-}
-#endif
-
 void check_queue(void *dummy)
 {
 	struct connection *c;
 	struct list_head *lc;
-	again:
-	check_queue_bugs();
+again:
 	check_keepalive_connections();
 	foreach(struct connection, c, lc, queue) {
 		struct connection *d;
 		struct list_head *ld;
-		int cp = getpri(c);
+		const int cp = getpri(c);
 		foreachfrom(struct connection, d, ld, queue, &c->list_entry) {
 			if (getpri(d) != cp)
 				break;
@@ -654,29 +629,33 @@ void check_queue(void *dummy)
 		}
 		lc = ld->prev;
 	}
-	again2:
+again2:
 	foreachback(struct connection, c, lc, queue) {
-		if (getpri(c) < PRI_CANCEL) break;
+		if (getpri(c) < PRI_CANCEL)
+			break;
 		if (c->state == S_WAIT) {
 			setcstate(c, S_INTERRUPTED);
 			del_connection(c);
 			goto again2;
-		} else if (c->est_length > (longlong)memory_cache_size * MAX_CACHED_OBJECT || c->from > (longlong)memory_cache_size * MAX_CACHED_OBJECT) {
+		} else if (c->est_length > (long)memory_cache_size * MAX_CACHED_OBJECT
+		|| c->from > (long)memory_cache_size * MAX_CACHED_OBJECT) {
 			setcstate(c, S_INTERRUPTED);
 			abort_connection(c);
 			goto again2;
 		}
 	}
-	check_queue_bugs();
 }
 
 unsigned char *get_proxy_string(unsigned char *url)
 {
 	if (is_noproxy_url(url))
 		return NULL;
-	if (*proxies.http_proxy && !casecmp(url, cast_uchar "http://", 7)) return proxies.http_proxy;
-	if (*proxies.ftp_proxy && !casecmp(url, cast_uchar "ftp://", 6)) return proxies.ftp_proxy;
-	if (*proxies.https_proxy && !casecmp(url, cast_uchar "https://", 8)) return proxies.https_proxy;
+	if (*proxies.http_proxy && !casecmp(url, cast_uchar "http://", 7))
+		return proxies.http_proxy;
+	if (*proxies.ftp_proxy && !casecmp(url, cast_uchar "ftp://", 6))
+		return proxies.ftp_proxy;
+	if (*proxies.https_proxy && !casecmp(url, cast_uchar "https://", 8))
+		return proxies.https_proxy;
 	return NULL;
 }
 
@@ -717,25 +696,26 @@ int get_allow_flags(unsigned char *url)
 
 int disallow_url(unsigned char *url, int allow_flags)
 {
-	if (!casecmp(url, cast_uchar "smb://", 6) && !(allow_flags & ALLOW_SMB) && !smb_options.allow_hyperlinks_to_smb) {
+	if (!casecmp(url, cast_uchar "smb://", 6) && !(allow_flags & ALLOW_SMB)
+	&& !smb_options.allow_hyperlinks_to_smb)
 		return S_SMB_NOT_ALLOWED;
-	}
-	if (!casecmp(url, cast_uchar "file://", 7) && !(allow_flags & ALLOW_FILE)) {
+	if (!casecmp(url, cast_uchar "file://", 7)
+	&& !(allow_flags & ALLOW_FILE))
 		return S_FILE_NOT_ALLOWED;
-	}
 	return 0;
 }
 
 /* prev_url is a pointer to previous url or NULL */
 /* prev_url will NOT be deallocated */
-void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, int pri, int no_cache, int no_compress, int allow_flags, off_t position)
+void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat,
+	int pri, int no_cache, int no_compress, int allow_flags, off_t position)
 {
 	struct cache_entry *e = NULL;
 	struct connection *c;
 	struct list_head *lc;
 	unsigned char *u;
 	int must_detach = 0;
-	int err;
+	const int err = disallow_url(url, allow_flags);
 
 	if (stat) {
 		stat->c = NULL;
@@ -744,28 +724,14 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, 
 		stat->prev_error = 0;
 		stat->pri = pri;
 	}
-#ifdef DEBUG
-	foreach(struct connection, c, lc, queue) {
-		struct status *st;
-		struct list_head *lst;
-		foreach(struct status, st, lst, c->statuss) {
-			if (st == stat) {
-				internal("status already assigned to '%s'", c->url);
-				stat->state = S_INTERNAL;
-				if (stat->end) stat->end(stat, stat->data);
-				goto ret;
-			}
-		}
-	}
-#endif
 	if (is_url_blocked(url)) {
 		if (stat) {
 			stat->state = S_BLOCKED_URL;
-			if (stat->end) stat->end(stat, stat->data);
+			if (stat->end)
+				stat->end(stat, stat->data);
 		}
 		goto ret;
 	}
-	err = disallow_url(url, allow_flags);
 	if (err) {
 		if (stat) {
 			stat->state = err;
@@ -780,14 +746,16 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, 
 		}
 		if (!aggressive_cache && no_cache > NC_ALWAYS_CACHE) {
 			if (e->expire_time && e->expire_time < time(NULL)) {
-				if (no_cache < NC_IF_MOD) no_cache = NC_IF_MOD;
+				if (no_cache < NC_IF_MOD)
+					no_cache = NC_IF_MOD;
 				e->refcount--;
 				goto skip_cache;
 			}
 		}
 		if (no_compress) {
 			unsigned char *enc;
-			enc = parse_http_header(e->head, cast_uchar "Content-Encoding", NULL);
+			enc = parse_http_header(e->head,
+					cast_uchar "Content-Encoding", NULL);
 			if (enc) {
 				free(enc);
 				e->refcount--;
@@ -798,63 +766,70 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, 
 		if (stat) {
 			stat->ce = e;
 			stat->state = S__OK;
-			if (stat->end) stat->end(stat, stat->data);
+			if (stat->end)
+				stat->end(stat, stat->data);
 		}
 		e->refcount--;
 		goto ret;
 	}
-	skip_cache:
+skip_cache:
 	if (is_proxy_url(url)) {
 		if (stat) {
 			stat->state = S_BAD_URL;
-			if (stat->end) stat->end(stat, stat->data);
+			if (stat->end)
+				stat->end(stat, stat->data);
 		}
 		goto ret;
 	}
 	u = get_proxy(url);
-	foreach(struct connection, c, lc, queue) if (!c->detached && !strcmp(cast_const_char c->url, cast_const_char u)) {
-		if (c->from < position) continue;
-		if (no_compress && !c->no_compress) {
-			unsigned char *enc;
-			if ((c->state >= S_WAIT && c->state < S_TRANS) || !c->cache) {
-				must_detach = 1;
-				break;
+	foreach(struct connection, c, lc, queue)
+		if (!c->detached && !strcmp((const char *)c->url, (const char *)u)) {
+			if (c->from < position)
+				continue;
+			if (no_compress && !c->no_compress) {
+				unsigned char *enc;
+				if ((c->state >= S_WAIT && c->state < S_TRANS)
+				|| !c->cache) {
+					must_detach = 1;
+					break;
+				}
+				enc = parse_http_header(c->cache->head,
+						cast_uchar "Content-Encoding",
+						NULL);
+				if (enc) {
+					free(enc);
+					must_detach = 1;
+					break;
+				}
 			}
-			enc = parse_http_header(c->cache->head, cast_uchar "Content-Encoding", NULL);
-			if (enc) {
-				free(enc);
-				must_detach = 1;
-				break;
+			free(u);
+			if (getpri(c) > pri) {
+				del_from_list(c);
+				c->pri[pri]++;
+				add_to_queue(c);
+				register_bottom_half(check_queue, NULL);
+			} else
+				c->pri[pri]++;
+			if (stat) {
+				stat->prg = &c->prg;
+				stat->c = c;
+				stat->ce = c->cache;
+				add_to_list(c->statuss, stat);
+				setcstate(c, c->state);
 			}
+			goto ret;
 		}
-		free(u);
-		if (getpri(c) > pri) {
-			del_from_list(c);
-			c->pri[pri]++;
-			add_to_queue(c);
-			register_bottom_half(check_queue, NULL);
-		} else c->pri[pri]++;
-		if (stat) {
-			stat->prg = &c->prg;
-			stat->c = c;
-			stat->ce = c->cache;
-			add_to_list(c->statuss, stat);
-			setcstate(c, c->state);
-		}
-		check_queue_bugs();
-		goto ret;
-	}
 	c = mem_calloc(sizeof(struct connection));
 	c->count = connection_count++;
 	c->url = u;
 	c->prev_url = stracpy(prev_url);
 	c->running = 0;
 	c->prev_error = 0;
-	if (position || must_detach) {
+	if (position || must_detach)
 		c->from = position;
-	} else if (no_cache >= NC_IF_MOD || !e) {
+	else if (no_cache >= NC_IF_MOD || !e)
 		c->from = 0;
-	} else {
+	else {
 		struct fragment *frag;
 		struct list_head *lfrag;
 		c->from = 0;
@@ -888,7 +863,8 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, 
 			free(c);
 			if (stat) {
 				stat->state = S_OUT_OF_MEM;
-				if (stat->end) stat->end(stat, stat->data);
+				if (stat->end)
+					stat->end(stat, stat->data);
 			}
 			goto ret;
 		}
@@ -904,7 +880,6 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, 
 	}
 	add_to_queue(c);
 	setcstate(c, S_WAIT);
-	check_queue_bugs();
 	register_bottom_half(check_queue, NULL);
 
 ret:
@@ -914,21 +889,22 @@ ret:
 void change_connection(struct status *oldstat, struct status *newstat, int newpri)
 {
 	struct connection *c;
-	int oldpri;
-	oldpri = oldstat->pri;
+	const int oldpri = oldstat->pri;
 	if (oldstat->state < 0) {
 		if (newstat) {
 			struct cache_entry *ce = oldstat->ce;
-			if (ce) ce->refcount++;
+			if (ce)
+				ce->refcount++;
 			newstat->ce = oldstat->ce;
 			newstat->state = oldstat->state;
 			newstat->prev_error = oldstat->prev_error;
-			if (newstat->end) newstat->end(newstat, newstat->data);
-			if (ce) ce->refcount--;
+			if (newstat->end)
+				newstat->end(newstat, newstat->data);
+			if (ce)
+				ce->refcount--;
 		}
 		return;
 	}
-	check_queue_bugs();
 	c = oldstat->c;
 	if (--c->pri[oldpri] < 0) {
 		internal("priority counter underflow");
@@ -951,7 +927,6 @@ void change_connection(struct status *oldstat, struct status *newstat, int newpr
 		abort_connection(c);
 	}
 	sort_queue();
-	check_queue_bugs();
 	register_bottom_half(check_queue, NULL);
 }
 
@@ -960,31 +935,44 @@ void detach_connection(struct status *stat, off_t pos, int want_to_restart, int 
 	struct connection *c;
 	int i, n_users;
 	off_t l;
-	if (stat->state < 0) return;
+	if (stat->state < 0)
+		return;
 	c = stat->c;
-	if (c->no_compress && want_to_restart) return;
-	if (!c->cache || (!dont_check_refcount && c->cache->refcount)) return;
+	if (c->no_compress && want_to_restart)
+		return;
+	if (!c->cache || (!dont_check_refcount && c->cache->refcount))
+		return;
 	want_to_restart |= pos > c->from && is_connection_seekable(c);
-	if (c->detached) goto detach_done;
-	if (c->est_length == -1) l = c->from;
-	else l = c->est_length;
-	if (!dont_check_refcount && l < (longlong)memory_cache_size * MAX_CACHED_OBJECT && !want_to_restart) return;
+	if (c->detached)
+		goto detach_done;
+	if (c->est_length == -1)
+		l = c->from;
+	else
+		l = c->est_length;
+	if (!dont_check_refcount
+	&& l < (long)memory_cache_size * MAX_CACHED_OBJECT && !want_to_restart)
+		return;
 	n_users = 0;
-	for (i = 0; i < PRI_CANCEL; i++) n_users += c->pri[i];
-	if (!n_users) internal("detaching free connection");
-	if (n_users != 1) return;
+	for (i = 0; i < PRI_CANCEL; i++)
+		n_users += c->pri[i];
+	if (!n_users)
+		internal("detaching free connection");
+	if (n_users != 1)
+		return;
 	shrink_memory(SH_CHECK_QUOTA);
 	detach_cache_entry(c->cache);
 	c->detached = 1;
-	detach_done:
+detach_done:
 	free_entry_to(c->cache, pos);
 
 	if (c->detached < 2 && want_to_restart) {
 		int running = c->running;
 		c->no_compress = 1;
-		if (running) interrupt_connection(c);
+		if (running)
+			interrupt_connection(c);
 		c->from = pos;
-		if (running) run_connection(c);
+		if (running)
+			run_connection(c);
 		c->detached = 2;
 	}
 }
@@ -1022,7 +1010,7 @@ static void connection_timeout_1(void *c_)
 
 void clear_connection_timeout(struct connection *c)
 {
-	if (c->timer != NULL) {
+	if (c->timer) {
 		kill_timer(c->timer);
 		c->timer = NULL;
 	}
@@ -1063,7 +1051,9 @@ int is_entry_used(struct cache_entry *e)
 {
 	struct connection *c;
 	struct list_head *lc;
-	foreach(struct connection, c, lc, queue) if (c->cache == e) return 1;
+	foreach(struct connection, c, lc, queue)
+		if (c->cache == e)
+			return 1;
 	return 0;
 }
 
@@ -1081,15 +1071,17 @@ void add_blacklist_entry(unsigned char *host, int flags)
 	struct blacklist_entry *b;
 	struct list_head *lb;
 	size_t sl;
-	foreach(struct blacklist_entry, b, lb, blacklist) if (!casestrcmp(host, b->host)) {
-		b->flags |= flags;
-		return;
-	}
-	sl = strlen(cast_const_char host);
-	if (sl > MAXINT - sizeof(struct blacklist_entry)) overalloc();
+	foreach(struct blacklist_entry, b, lb, blacklist)
+		if (!casestrcmp(host, b->host)) {
+			b->flags |= flags;
+			return;
+		}
+	sl = strlen((const char *)host);
+	if (sl > MAXINT - sizeof(struct blacklist_entry))
+		overalloc();
 	b = xmalloc(sizeof(struct blacklist_entry) + sl);
 	b->flags = flags;
-	strcpy(cast_char b->host, cast_const_char host);
+	strcpy((char *)b->host, (const char *)host);
 	add_to_list(blacklist, b);
 }
 
@@ -1097,21 +1089,24 @@ void del_blacklist_entry(unsigned char *host, int flags)
 {
 	struct blacklist_entry *b;
 	struct list_head *lb;
-	foreach(struct blacklist_entry, b, lb, blacklist) if (!casestrcmp(host, b->host)) {
-		b->flags &= ~flags;
-		if (!b->flags) {
-			del_from_list(b);
-			free(b);
+	foreach(struct blacklist_entry, b, lb, blacklist)
+		if (!casestrcmp(host, b->host)) {
+			b->flags &= ~flags;
+			if (!b->flags) {
+				del_from_list(b);
+				free(b);
+			}
+			return;
 		}
-		return;
-	}
 }
 
 int get_blacklist_flags(unsigned char *host)
 {
 	struct blacklist_entry *b;
 	struct list_head *lb;
-	foreach(struct blacklist_entry, b, lb, blacklist) if (!casestrcmp(host, b->host)) return b->flags;
+	foreach(struct blacklist_entry, b, lb, blacklist)
+		if (!casestrcmp(host, b->host))
+			return b->flags;
 	return 0;
 }