Loading CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,10 @@ 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) - 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, Loading RELEASE-NOTES +2 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ This release includes the following bugfixes: o rate limiting works better o getting FTP response code errors when using the multi-interface caused libcurl to leak memory o no more SIGPIPE when GnuTLS is used Other curl-related news: Loading @@ -53,6 +54,6 @@ advice from friends like these: James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce, Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest, 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) lib/gtls.c +24 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,23 @@ static void tls_log_func(int level, const char *str) } #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() */ int Curl_gtls_init(void) Loading Loading @@ -285,6 +302,13 @@ Curl_gtls_connect(struct connectdata *conn, gnutls_transport_set_ptr(session, (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 to speed up things */ Loading Loading
CHANGES +4 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,10 @@ 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) - 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, Loading
RELEASE-NOTES +2 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ This release includes the following bugfixes: o rate limiting works better o getting FTP response code errors when using the multi-interface caused libcurl to leak memory o no more SIGPIPE when GnuTLS is used Other curl-related news: Loading @@ -53,6 +54,6 @@ advice from friends like these: James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce, Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest, 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)
lib/gtls.c +24 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,23 @@ static void tls_log_func(int level, const char *str) } #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() */ int Curl_gtls_init(void) Loading Loading @@ -285,6 +302,13 @@ Curl_gtls_connect(struct connectdata *conn, gnutls_transport_set_ptr(session, (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 to speed up things */ Loading