1
0
mirror of https://github.com/moparisthebest/curl synced 2025-03-01 01:41:50 -05:00
This commit is contained in:
Nick Zitzmann 2013-06-22 15:16:05 -06:00
commit 0030fbd382
5 changed files with 72 additions and 8 deletions

View File

@ -155,12 +155,12 @@ while test $# -gt 0; do
;;
--static-libs)
if test "X@ENABLE_STATIC@" != "Xno" ; then
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
else
echo "curl was built with static libraries disabled" >&2
exit 1
fi
if test "X@ENABLE_STATIC@" != "Xno" ; then
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
else
echo "curl was built with static libraries disabled" >&2
exit 1
fi
;;
--configure)

View File

@ -3,6 +3,14 @@ join in and help us correct one or more of these! Also be sure to check the
changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
83. curl is unable to load non-default openssl engines, because openssl isn't
initialized properly. This seems to require OpenSSL_config() or
CONF_modules_load_file() to be used by libcurl but the first seems to not
work and we've gotten not reports from tests with the latter. Possibly we
need to discuss with OpenSSL developers how this is supposed to be done. We
need users with actual external openssl engines for testing to work on this.
http://curl.haxx.se/bug/view.cgi?id=1208
82. When building with the Windows Borland compiler, it fails because the
"tlib" tool doesn't support hyphens (minus signs) in file names and we have
such in the build.

View File

@ -50,6 +50,11 @@
#include <sys/param.h>
#endif
#if defined(HAVE_SIGNAL_H) && defined(HAVE_SIGACTION) && defined(USE_OPENSSL)
#define SIGPIPE_IGNORE 1
#include <signal.h>
#endif
#include "strequal.h"
#include "urldata.h"
#include <curl/curl.h>
@ -81,6 +86,49 @@
/* The last #include file should be: */
#include "memdebug.h"
#ifdef SIGPIPE_IGNORE
#define SIGPIPE_VARIABLE(x) struct sigaction x
/*
* sigpipe_ignore() makes sure we ignore SIGPIPE while running libcurl
* internals, and then sigpipe_restore() will restore the situation when we
* return from libcurl again.
*/
static void sigpipe_ignore(struct SessionHandle *data,
struct sigaction *pipe)
{
if(!data->set.no_signal) {
struct sigaction action;
/* first, extract the existing situation */
sigaction(SIGPIPE, NULL, pipe);
action = *pipe;
/* ignore this signal */
action.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &action, NULL);
}
}
/*
* sigpipe_restore() puts back the outside world's opinion of signal handler
* and SIGPIPE handling. It MUST only be called after a corresponding
* sigpipe_ignore() was used.
*/
static void sigpipe_restore(struct SessionHandle *data,
struct sigaction *pipe)
{
if(!data->set.no_signal) {
/* restore the outside state */
sigaction(SIGPIPE, pipe, NULL);
}
}
#else
/* for systems without sigaction */
#define sigpipe_ignore(x,y)
#define sigpipe_restore(x,y)
#define SIGPIPE_VARIABLE(x)
#endif
/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
of win32_init() */
static void win32_cleanup(void)
@ -423,6 +471,7 @@ CURLcode curl_easy_perform(CURL *easy)
int without_fds = 0; /* count number of consecutive returns from
curl_multi_wait() without any filedescriptors */
struct timeval before;
SIGPIPE_VARIABLE(pipe);
if(!easy)
return CURLE_BAD_FUNCTION_ARGUMENT;
@ -455,6 +504,8 @@ CURLcode curl_easy_perform(CURL *easy)
return CURLE_FAILED_INIT;
}
sigpipe_ignore(data, &pipe);
/* assign this after curl_multi_add_handle() since that function checks for
it and rejects this handle otherwise */
data->multi = multi;
@ -511,6 +562,8 @@ CURLcode curl_easy_perform(CURL *easy)
a failure here, room for future improvement! */
(void)curl_multi_remove_handle(multi, easy);
sigpipe_restore(data, &pipe);
/* The multi handle is kept alive, owned by the easy handle */
return code;
}
@ -522,11 +575,14 @@ CURLcode curl_easy_perform(CURL *easy)
void curl_easy_cleanup(CURL *curl)
{
struct SessionHandle *data = (struct SessionHandle *)curl;
SIGPIPE_VARIABLE(pipe);
if(!data)
return;
sigpipe_ignore(data, &pipe);
Curl_close(data);
sigpipe_restore(data, &pipe);
}
/*

View File

@ -71,7 +71,7 @@ Host: [1234:1234:1234::4ce]:%HTTPPORT
Proxy-Connection: Keep-Alive
GET /wanted/page/1230 HTTP/1.1
Host: [1234:1234:1234::4ce]:8990
Host: [1234:1234:1234::4ce]:%HTTPPORT
Accept: */*
</protocol>

View File

@ -20,7 +20,7 @@ unittest
curl_easy_escape and curl_easy_unescape
</name>
<tool>
unit1310
unit1396
</tool>
</client>