ic->is_url_loading = PR_FALSE;
IL_NetRequestDone(il_container *ic, ilIURL *url, int status){    IL_ImageReq *image_req;    PR_ASSERT(ic);    /* Record the fact that NetLib is done loading. */    if (ic->url == url) {        ic->is_url_loading = PR_FALSE;    }    /* The (ic->url == url) check is for a weird timer issue, see the comment at the       end of this function. */        /*     * It could be that layout aborted image loading by calling IL_DestroyImage     * before the netlib finished transferring data.  If so, really do the     * freeing of the data that was deferred there.     */    if (ic->state == IC_ABORT_PENDING) {        il_delete_container(ic);        NS_RELEASE(url);        return;    }        if (status < 0) {        ILTRACE(2,("il:net done ic=0x%08x, status=%d, ic->state=0x%02x\n",                   ic, status, ic->state));        /* Netlib detected failure before a stream was even created. */        if (ic->state < IC_BAD) {            if (status == MK_OBJECT_NOT_IN_CACHE)                ic->state = IC_NOCACHE;            else if (status == MK_UNABLE_TO_LOCATE_FILE)                ic->state = IC_MISSING;            else {                /* status is probably MK_INTERRUPTED */                ic->state = IC_INCOMPLETE; /* try again on reload */            }            if (!ic->sized) {                if (status == MK_OBJECT_NOT_IN_CACHE) {                    for (image_req = ic->clients; image_req;                         image_req = image_req->next)                        il_icon_notify(image_req, IL_IMAGE_DELAYED,                                       IL_NOT_IN_CACHE);                 }                else if (status == MK_INTERRUPTED) {                    il_container_aborted(ic);                }                else if (status == MK_UNABLE_TO_LOCATE_FILE) {                    for (image_req = ic->clients; image_req;                         image_req = image_req->next)                        il_icon_notify(image_req, IL_IMAGE_NOT_FOUND,                                       IL_ERROR_NO_DATA);                }                else {                    for (image_req = ic->clients; image_req;                         image_req = image_req->next)                        il_icon_notify(image_req, IL_IMAGE_BAD_DATA,                                       IL_ERROR_IMAGE_DATA_ILLEGAL);                }            }        }    }    else {        /* It is possible for NetLib to call the exit routine with a success status,           even though the stream was never created (this can happen when fetching           a mime image part which contains no image data.)  Show a missing image           icon. */         if (ic->state < IC_STREAM) {            ic->state = IC_MISSING;            for (image_req = ic->clients; image_req; image_req = image_req->next)                il_icon_notify(image_req, IL_IMAGE_NOT_FOUND, IL_ERROR_NO_DATA);        }    }    if (ic->url == url) {        NS_RELEASE(url);        ic->url = NULL;    }    /* else there is actually another load going on from a looping gif.      * Weird timer issue.  If ic->url does not equal url, then il_image_complete was     * already called for "url" and a new load started.  ic->url is the url for      * the new load and will be released in its IL_NetRequestDone.  "url" was already     * released by special code in il_image_complete.     */}