mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-23 12:36:51 +03:00
Move the removal of the retrieval context to prevent a re-entrancy race causing double-release of llcache handles
svn path=/trunk/netsurf/; revision=10307
This commit is contained in:
parent
8f1dec6f1d
commit
2b8adb0c8a
@ -273,12 +273,17 @@ nserror hlcache_llcache_callback(llcache_handle *handle,
|
||||
case LLCACHE_EVENT_HAD_HEADERS:
|
||||
{
|
||||
content_type type;
|
||||
|
||||
|
||||
/* Unlink the context to prevent recursion */
|
||||
RING_REMOVE(hlcache_retrieval_ctx_ring, ctx);
|
||||
|
||||
if (hlcache_type_is_acceptable(handle,
|
||||
ctx->accepted_types, &type)) {
|
||||
error = hlcache_find_content(ctx);
|
||||
if (error != NSERROR_OK)
|
||||
if (error != NSERROR_OK) {
|
||||
free(ctx);
|
||||
return error;
|
||||
}
|
||||
} else if (type == CONTENT_OTHER &&
|
||||
ctx->flags & HLCACHE_RETRIEVE_MAY_DOWNLOAD) {
|
||||
/* Unknown type, and we can download, so convert */
|
||||
@ -310,7 +315,6 @@ nserror hlcache_llcache_callback(llcache_handle *handle,
|
||||
}
|
||||
|
||||
/* No longer require retrieval context */
|
||||
RING_REMOVE(hlcache_retrieval_ctx_ring, ctx);
|
||||
free(ctx);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user