mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
during certain conditions when GnuTLS is used.
This commit is contained in:
parent
72bd027537
commit
fcccf9aa0d
4
CHANGES
4
CHANGES
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel (16 December 2006)
|
||||||
|
- Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
|
||||||
|
during certain conditions when GnuTLS is used.
|
||||||
|
|
||||||
Daniel (11 December 2006)
|
Daniel (11 December 2006)
|
||||||
- Alexey Simak found out that when doing FTP with the multi interface and
|
- Alexey Simak found out that when doing FTP with the multi interface and
|
||||||
something went wrong like it got a bad response code back from the server,
|
something went wrong like it got a bad response code back from the server,
|
||||||
|
@ -35,6 +35,7 @@ This release includes the following bugfixes:
|
|||||||
o rate limiting works better
|
o rate limiting works better
|
||||||
o getting FTP response code errors when using the multi-interface caused
|
o getting FTP response code errors when using the multi-interface caused
|
||||||
libcurl to leak memory
|
libcurl to leak memory
|
||||||
|
o no more SIGPIPE when GnuTLS is used
|
||||||
|
|
||||||
Other curl-related news:
|
Other curl-related news:
|
||||||
|
|
||||||
@ -53,6 +54,6 @@ advice from friends like these:
|
|||||||
James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce,
|
James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce,
|
||||||
Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest,
|
Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest,
|
||||||
Matt Witherspoon, Alexey Simak, Martin Skinner, Sh Diao, Jared Lundell,
|
Matt Witherspoon, Alexey Simak, Martin Skinner, Sh Diao, Jared Lundell,
|
||||||
Stefan Krause, Sebastien Willemijns, Alexey Simak
|
Stefan Krause, Sebastien Willemijns, Alexey Simak, Brendan Jurd
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
24
lib/gtls.c
24
lib/gtls.c
@ -67,6 +67,23 @@ static void tls_log_func(int level, const char *str)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Custom push and pull callback functions used by GNU TLS to read and write
|
||||||
|
* to the socket. These functions are simple wrappers to send() and recv()
|
||||||
|
* (although here using the sread/swrite macros as defined by setup_once.h).
|
||||||
|
* We use custom functions rather than the GNU TLS defaults because it allows
|
||||||
|
* us to get specific about the fourth "flags" argument, and to use arbitrary
|
||||||
|
* private data with gnutls_transport_set_ptr if we wish.
|
||||||
|
*/
|
||||||
|
static ssize_t Curl_gtls_push(void *s, const void *buf, size_t len)
|
||||||
|
{
|
||||||
|
return swrite(s, buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ssize_t Curl_gtls_pull(void *s, void *buf, size_t len)
|
||||||
|
{
|
||||||
|
return sread(s, buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
/* Global GnuTLS init, called from Curl_ssl_init() */
|
/* Global GnuTLS init, called from Curl_ssl_init() */
|
||||||
int Curl_gtls_init(void)
|
int Curl_gtls_init(void)
|
||||||
@ -285,6 +302,13 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
gnutls_transport_set_ptr(session,
|
gnutls_transport_set_ptr(session,
|
||||||
(gnutls_transport_ptr)conn->sock[sockindex]);
|
(gnutls_transport_ptr)conn->sock[sockindex]);
|
||||||
|
|
||||||
|
/* register callback functions to send and receive data. */
|
||||||
|
gnutls_transport_set_push_function(session, Curl_gtls_push);
|
||||||
|
gnutls_transport_set_pull_function(session, Curl_gtls_pull);
|
||||||
|
|
||||||
|
/* lowat must be set to zero when using custom push and pull functions. */
|
||||||
|
gnutls_transport_set_lowat(session, 0);
|
||||||
|
|
||||||
/* This might be a reconnect, so we check for a session ID in the cache
|
/* This might be a reconnect, so we check for a session ID in the cache
|
||||||
to speed up things */
|
to speed up things */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user