diff options
author | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2014-01-20 17:16:43 +0000 |
---|---|---|
committer | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2014-01-20 17:16:43 +0000 |
commit | 2bd268f2cd19f681ad894c9b1ddd35f0a2e2883c (patch) | |
tree | e6994943cfab43bb4e1b98ae8f0ec2da02b6fb88 /src/packet.c | |
parent | 6d58ca782efa1f07c17c66d7b870b08b85527030 (diff) |
- Use the i/o subsystem to execute scheduled writes. Patch provided by Adam.
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2882 82007160-df01-0410-b94d-b575c5fd34c7
Diffstat (limited to 'src/packet.c')
-rw-r--r-- | src/packet.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/packet.c b/src/packet.c index 0d23553..82c0a17 100644 --- a/src/packet.c +++ b/src/packet.c @@ -294,23 +294,20 @@ read_packet(fde_t *fd, void *data) /* translate openssl error codes, sigh */ if (length < 0) switch (SSL_get_error(fd->ssl, length)) - { + { case SSL_ERROR_WANT_WRITE: - fd->flags.pending_read = 1; - SetSendqBlocked(client_p); - comm_setselect(fd, COMM_SELECT_WRITE, (PF *) sendq_unblocked, - client_p, 0); - return; - case SSL_ERROR_WANT_READ: - errno = EWOULDBLOCK; + comm_setselect(fd, COMM_SELECT_WRITE, (PF *)sendq_unblocked, client_p, 0); + return; + case SSL_ERROR_WANT_READ: + errno = EWOULDBLOCK; case SSL_ERROR_SYSCALL: - break; + break; case SSL_ERROR_SSL: if (errno == EAGAIN) break; default: - length = errno = 0; - } + length = errno = 0; + } } else #endif |