From 28fd9ea80befe049ee786a9e4c7454181a576e9a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 19 Jun 2005 07:19:42 +0000 Subject: r7745: better handling of recv errors in tls library (This used to be commit 42d8a1a222430bd64962da7cc4ac0193b5c003f7) --- source4/lib/tls/tls.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'source4') diff --git a/source4/lib/tls/tls.c b/source4/lib/tls/tls.c index 3b166b27a0..8f443c67d7 100644 --- a/source4/lib/tls/tls.c +++ b/source4/lib/tls/tls.c @@ -69,9 +69,19 @@ static ssize_t tls_pull(gnutls_transport_ptr ptr, void *buf, size_t size) } status = socket_recv(tls->socket, buf, size, &nread, 0); + if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) { + return 0; + } + if (NT_STATUS_IS_ERR(status)) { + EVENT_FD_NOT_READABLE(tls->fde); + EVENT_FD_NOT_WRITEABLE(tls->fde); + errno = EBADF; + return -1; + } if (!NT_STATUS_IS_OK(status)) { EVENT_FD_READABLE(tls->fde); EVENT_FD_NOT_WRITEABLE(tls->fde); + errno = EAGAIN; return -1; } if (tls->output_pending) { @@ -185,7 +195,6 @@ NTSTATUS tls_socket_recv(struct tls_context *tls, void *buf, size_t wantlen, return STATUS_MORE_ENTRIES; } if (ret < 0) { - DEBUG(0,("gnutls_record_recv failed - %s\n", gnutls_strerror(ret))); return NT_STATUS_UNEXPECTED_NETWORK_ERROR; } *nread = ret; -- cgit