summaryrefslogtreecommitdiff
path: root/src/packet.c
diff options
context:
space:
mode:
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2014-01-20 17:16:43 +0000
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2014-01-20 17:16:43 +0000
commit2bd268f2cd19f681ad894c9b1ddd35f0a2e2883c (patch)
treee6994943cfab43bb4e1b98ae8f0ec2da02b6fb88 /src/packet.c
parent6d58ca782efa1f07c17c66d7b870b08b85527030 (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.c19
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