diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2011-09-02 16:50:03 -0300 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2011-09-02 16:50:03 -0300 |
commit | 5f13e27cd63be637586cf3dd1b6fdf5c98e93328 (patch) | |
tree | 96029ac8a17e41ffc2abaaaebe5ccf72ddf96e86 /src | |
parent | b182219ab37e1ed7256b547351c905d28ad90b1a (diff) |
Cancel the expected URL after offering a download, part 2 (BUG#982)
There was a convoluted way of using an already freed bw:
first, one bw asks for a page, and that becomes conn->bw,
and then another bw starts also asking for the page, and
the first bw closes, invalidating the conn->bw, and then
the second bw closes and the cancel expect code tries to
use the old bw.
Fixed now.
Diffstat (limited to 'src')
-rw-r--r-- | src/cache.c | 2 | ||||
-rw-r--r-- | src/capi.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/cache.c b/src/cache.c index 5ea45511..3804ac7e 100644 --- a/src/cache.c +++ b/src/cache.c @@ -1176,6 +1176,8 @@ static CacheEntry_t *Cache_process_queue(CacheEntry_t *entry) } } if (AbortEntry) { + if (ClientWeb->flags & WEB_RootUrl) + a_Nav_cancel_expect_if_eq(Client_bw, Client->Url); a_Bw_remove_client(Client_bw, Client->Key); Cache_client_dequeue(Client, NULLKey); --i; /* Keep the index value in the next iteration */ @@ -767,7 +767,6 @@ void a_Capi_ccc(int Op, int Branch, int Dir, ChainLink *Info, a_Chain_bcb(OpAbort, Info, NULL, NULL); /* remove the cache entry for this URL */ a_Cache_entry_remove_by_url(conn->url); - a_Nav_cancel_expect_if_eq(conn->bw, conn->url); Capi_conn_unref(conn); dFree(Info); break; |