Loading include/curl/curl.h +3 −0 Original line number Diff line number Diff line Loading @@ -562,6 +562,9 @@ typedef enum { /* Instruct libcurl to use a smaller receive buffer */ CINIT(BUFFERSIZE, LONG, 98), /* Instruct libcurl to do not use any signal/alarm handlers, even with timeouts. */ CINIT(NOSIGNAL, LONG, 99), CURLOPT_LASTENTRY /* the last unusued */ } CURLoption; Loading lib/transfer.c +4 −2 Original line number Diff line number Diff line Loading @@ -1130,6 +1130,7 @@ CURLcode Curl_pretransfer(struct SessionHandle *data) /************************************************************* * Tell signal handler to ignore SIGPIPE *************************************************************/ if(!data->set.no_signal) data->state.prev_signal = signal(SIGPIPE, SIG_IGN); #endif Loading @@ -1143,6 +1144,7 @@ CURLcode Curl_posttransfer(struct SessionHandle *data) { #if defined(HAVE_SIGNAL) && defined(SIGPIPE) /* restore the signal handler for SIGPIPE before we get back */ if(!data->set.no_signal) signal(SIGPIPE, data->state.prev_signal); #endif Loading lib/url.c +10 −2 Original line number Diff line number Diff line Loading @@ -1024,6 +1024,14 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...) break; case CURLOPT_NOSIGNAL: /* * The application asks not to set any signal() or alarm() handlers, * even when using a timeout. */ data->set.no_signal = va_arg(param, long) ? TRUE : FALSE; break; default: /* unknown tag and its companion, just ignore: */ return CURLE_FAILED_INIT; /* correct this */ Loading Loading @@ -2281,7 +2289,7 @@ static CURLcode CreateConnection(struct SessionHandle *data, /************************************************************* * Set timeout if that is being used *************************************************************/ if(data->set.timeout || data->set.connecttimeout) { if((data->set.timeout || data->set.connecttimeout) && !data->set.no_signal) { /************************************************************* * Set signal handler to catch SIGALRM * Store the old value to be able to set it back later! Loading Loading @@ -2358,7 +2366,7 @@ static CURLcode CreateConnection(struct SessionHandle *data, } Curl_pgrsTime(data, TIMER_NAMELOOKUP); #ifdef HAVE_ALARM if(data->set.timeout || data->set.connecttimeout) { if((data->set.timeout || data->set.connecttimeout) && !data->set.no_signal) { #ifdef HAVE_SIGACTION if(keep_copysig) { /* we got a struct as it looked before, now put that one back nice Loading lib/urldata.h +1 −0 Original line number Diff line number Diff line Loading @@ -668,6 +668,7 @@ struct UserDefined { bool reuse_fresh; /* do not re-use an existing connection */ bool expect100header; /* TRUE if we added Expect: 100-continue */ bool ftp_use_epsv; /* if EPSV is to be attempted or not */ bool no_signal; bool global_dns_cache; }; Loading Loading
include/curl/curl.h +3 −0 Original line number Diff line number Diff line Loading @@ -562,6 +562,9 @@ typedef enum { /* Instruct libcurl to use a smaller receive buffer */ CINIT(BUFFERSIZE, LONG, 98), /* Instruct libcurl to do not use any signal/alarm handlers, even with timeouts. */ CINIT(NOSIGNAL, LONG, 99), CURLOPT_LASTENTRY /* the last unusued */ } CURLoption; Loading
lib/transfer.c +4 −2 Original line number Diff line number Diff line Loading @@ -1130,6 +1130,7 @@ CURLcode Curl_pretransfer(struct SessionHandle *data) /************************************************************* * Tell signal handler to ignore SIGPIPE *************************************************************/ if(!data->set.no_signal) data->state.prev_signal = signal(SIGPIPE, SIG_IGN); #endif Loading @@ -1143,6 +1144,7 @@ CURLcode Curl_posttransfer(struct SessionHandle *data) { #if defined(HAVE_SIGNAL) && defined(SIGPIPE) /* restore the signal handler for SIGPIPE before we get back */ if(!data->set.no_signal) signal(SIGPIPE, data->state.prev_signal); #endif Loading
lib/url.c +10 −2 Original line number Diff line number Diff line Loading @@ -1024,6 +1024,14 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...) break; case CURLOPT_NOSIGNAL: /* * The application asks not to set any signal() or alarm() handlers, * even when using a timeout. */ data->set.no_signal = va_arg(param, long) ? TRUE : FALSE; break; default: /* unknown tag and its companion, just ignore: */ return CURLE_FAILED_INIT; /* correct this */ Loading Loading @@ -2281,7 +2289,7 @@ static CURLcode CreateConnection(struct SessionHandle *data, /************************************************************* * Set timeout if that is being used *************************************************************/ if(data->set.timeout || data->set.connecttimeout) { if((data->set.timeout || data->set.connecttimeout) && !data->set.no_signal) { /************************************************************* * Set signal handler to catch SIGALRM * Store the old value to be able to set it back later! Loading Loading @@ -2358,7 +2366,7 @@ static CURLcode CreateConnection(struct SessionHandle *data, } Curl_pgrsTime(data, TIMER_NAMELOOKUP); #ifdef HAVE_ALARM if(data->set.timeout || data->set.connecttimeout) { if((data->set.timeout || data->set.connecttimeout) && !data->set.no_signal) { #ifdef HAVE_SIGACTION if(keep_copysig) { /* we got a struct as it looked before, now put that one back nice Loading
lib/urldata.h +1 −0 Original line number Diff line number Diff line Loading @@ -668,6 +668,7 @@ struct UserDefined { bool reuse_fresh; /* do not re-use an existing connection */ bool expect100header; /* TRUE if we added Expect: 100-continue */ bool ftp_use_epsv; /* if EPSV is to be attempted or not */ bool no_signal; bool global_dns_cache; }; Loading