summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2007-01-18 01:26:58 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2007-01-18 01:26:58 +0000
commitf629a4f00fb0ff766cba2194d9a408ddee6699cf (patch)
treef17d56d4917f5ced219697059eed051e459ecc82
parent75526f77b79b04f9595332b1b86e1cde145ffa95 (diff)
downloadnetsurf-f629a4f00fb0ff766cba2194d9a408ddee6699cf.tar.gz
netsurf-f629a4f00fb0ff766cba2194d9a408ddee6699cf.tar.bz2
Revert hack around broken pipe (not caching fetch handles used for SSL
connections). Ignore SIGPIPE completely as nothing other than OpenSSL is expected to generate it. svn path=/trunk/netsurf/; revision=3145
-rw-r--r--content/fetch.c8
-rw-r--r--riscos/gui.c7
2 files changed, 9 insertions, 6 deletions
diff --git a/content/fetch.c b/content/fetch.c
index 0ab8ae843..0842d3cc4 100644
--- a/content/fetch.c
+++ b/content/fetch.c
@@ -755,12 +755,8 @@ void fetch_stop(struct fetch *f)
codem = curl_multi_remove_handle(fetch_curl_multi,
f->curl_handle);
assert(codem == CURLM_OK);
- if (strncasecmp(f->url, "https:", 6)) {
- /* Put this curl handle into the cache if wanted. */
- fetch_cache_handle(f->curl_handle, f->host);
- } else {
- curl_easy_cleanup(f->curl_handle);
- }
+ /* Put this curl handle into the cache if wanted. */
+ fetch_cache_handle(f->curl_handle, f->host);
f->curl_handle = 0;
/* Remove this from the active set of fetches (if it's still there) */
RING_REMOVE(fetch_ring, f);
diff --git a/riscos/gui.c b/riscos/gui.c
index 0190e3703..28eaa8c3e 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -372,6 +372,13 @@ void gui_init(int argc, char** argv)
prev_sigs.sigint = signal(SIGINT, ro_gui_signal);
prev_sigs.sigsegv = signal(SIGSEGV, ro_gui_signal);
prev_sigs.sigterm = signal(SIGTERM, ro_gui_signal);
+ /* Ignore SIGPIPE - this is necessary as OpenSSL can generate these
+ * and the default action is to terminate the app. There's no easy
+ * way of determining the cause of the SIGPIPE (other than using
+ * sigaction() and some mechanism for getting the file descriptor
+ * out of libcurl). However, we expect nothing else to generate a
+ * SIGPIPE, anyway, so may as well just ignore them all. */
+ signal(SIGPIPE, SIG_IGN);
if (prev_sigs.sigabrt == SIG_ERR || prev_sigs.sigfpe == SIG_ERR ||
prev_sigs.sigill == SIG_ERR ||