From: Thadeu Lima de Souza Cascardo <casca...@holoscopio.com> --- src/stream.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/stream.c b/src/stream.c index 6bb316e..e0839a4 100644 --- a/src/stream.c +++ b/src/stream.c @@ -33,6 +33,7 @@ struct stream_data { #ifdef HAVE_GNUTLS gnutls_session sess; gnutls_certificate_credentials cred; + int timeout; #endif }; @@ -55,8 +56,9 @@ tls_pull (iksparser *prs, char *buffer, size_t len) struct stream_data *data = iks_user_data (prs); int ret; - ret = data->trans->recv (data->sock, buffer, len, -1); - if (ret == -1) return (size_t) -1; + ret = data->trans->recv (data->sock, buffer, len, data->timeout); + if (!ret) gnutls_transport_set_errno (data->sess, EAGAIN); + if (ret == -1 || ret == 0) return (size_t) -1; return ret; } @@ -91,6 +93,8 @@ handshake (struct stream_data *data) gnutls_transport_set_pull_function (data->sess, (gnutls_pull_func) tls_pull); gnutls_transport_set_ptr (data->sess, data->prs); + data->timeout = -1; + ret = gnutls_handshake (data->sess); if (ret != 0) { gnutls_deinit (data->sess); @@ -489,6 +493,7 @@ iks_recv (iksparser *prs, int timeout) while (1) { #ifdef HAVE_GNUTLS if (data->flags & SF_SECURE) { + data->timeout = timeout; len = gnutls_record_recv (data->sess, data->buf, NET_IO_BUF_SIZE - 1); } else #endif -- 1.6.0.6 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org