Author: jmb
Date: Sun Oct 11 10:16:53 2009
New Revision: 9621
URL:
http://source.netsurf-browser.org?rev=9621&view=rev
Log:
Implement llcache_object_get_header.
A bunch of fixes to error recovery.
Modified:
branches/jmb/new-cache/content/llcache.c
Modified: branches/jmb/new-cache/content/llcache.c
URL:
http://source.netsurf-browser.org/branches/jmb/new-cache/content/llcache....
==============================================================================
--- branches/jmb/new-cache/content/llcache.c (original)
+++ branches/jmb/new-cache/content/llcache.c Sun Oct 11 10:16:53 2009
@@ -321,7 +321,14 @@
const char *llcache_object_get_header(const llcache_object *object,
const char *key)
{
- /** \todo implement */
+ size_t i;
+
+ /* About as trivial as possible */
+ for (i = 0; i < object->num_headers; i++) {
+ if (strcasecmp(key, object->headers[i].name) == 0)
+ return object->headers[i].value;
+ }
+
return NULL;
}
@@ -1022,8 +1029,10 @@
/* Deal with any errors reported by event handlers */
if (error != NSERROR_OK) {
/** \todo Error handling */
- fetch_abort(object->fetch.fetch);
- object->fetch.fetch = NULL;
+ if (object->fetch.fetch != NULL) {
+ fetch_abort(object->fetch.fetch);
+ object->fetch.fetch = NULL;
+ }
return;
}
@@ -1031,8 +1040,10 @@
error = llcache_object_notify_users(object);
if (error != NSERROR_OK) {
/** \todo Error handling */
- fetch_abort(object->fetch.fetch);
- object->fetch.fetch = NULL;
+ if (object->fetch.fetch != NULL) {
+ fetch_abort(object->fetch.fetch);
+ object->fetch.fetch = NULL;
+ }
}
}
@@ -1066,6 +1077,7 @@
result = url_join(target, object->url, &absurl);
if (result != URL_FUNC_OK) {
/** \todo handle error */
+ return NSERROR_NOMEM;
}
/* Ensure target is normalised */
@@ -1076,6 +1088,7 @@
if (result != URL_FUNC_OK) {
/** \todo handle error */
+ return NSERROR_NOMEM;
}
/** \todo Ensure that redirects to file:/// don't happen? */
@@ -1088,6 +1101,8 @@
post = NULL;
} else {
/** \todo 300, 305, 307 */
+ free(url);
+ return NSERROR_OK;
}
/* Attempt to fetch target URL */
@@ -1098,9 +1113,8 @@
/* No longer require url */
free(url);
- if (error != NSERROR_OK) {
- /** \todo handle error */
- }
+ if (error != NSERROR_OK)
+ return error;
/* Move user(s) to replacement object */
for (user = object->users; user != NULL; user = next) {