summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2021-04-03 20:56:50 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2021-04-03 21:27:25 +0100
commit5a8f5d724bbfd81cb2b89540e395359aaedc6c17 (patch)
tree46edf43a3dcbce10e68518fcca9b369a75dd4a28
parent1cf47989a0376c3f7156c214c1d509d372e4262b (diff)
TLS: harden error-detection in TLS proxy process
-rw-r--r--src/src/transports/smtp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index ca589b0be..c6099f960 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -3368,11 +3368,15 @@ for (int fd_bits = 3; fd_bits; )
goto done;
}
+ /* For errors where not readable, bomb out */
+
if (FD_ISSET(tls_out.active.sock, &efds) || FD_ISSET(pfd[0], &efds))
{
DEBUG(D_transport) debug_printf("select: exceptional cond on %s fd\n",
FD_ISSET(pfd[0], &efds) ? "proxy" : "tls");
- goto done;
+ if (!(FD_ISSET(tls_out.active.sock, &rfds) || FD_ISSET(pfd[0], &rfds)))
+ goto done;
+ DEBUG(D_transport) debug_printf("- but also readable; no exit yet\n");
}
}
while (rc < 0 || !(FD_ISSET(tls_out.active.sock, &rfds) || FD_ISSET(pfd[0], &rfds)));