[exim-cvs] FreeBSD: harden against ClamAV connection errors

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Exim Git Commits Mailing List
Datum:  
To: exim-cvs
Betreff: [exim-cvs] FreeBSD: harden against ClamAV connection errors
Gitweb: https://git.exim.org/exim.git/commitdiff/3eb0bcd7a112a70bbdd61bedde4878ceae4e1297
Commit:     3eb0bcd7a112a70bbdd61bedde4878ceae4e1297
Parent:     3bd31c400d7cb546c5583fbee8d998e232eef5c2
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Fri Jan 1 13:25:29 2021 +0000
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Fri Jan 1 13:25:29 2021 +0000


    FreeBSD: harden against ClamAV connection errors
---
 src/src/malware.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)


diff --git a/src/src/malware.c b/src/src/malware.c
index 2883f22..dfa8e2b 100644
--- a/src/src/malware.c
+++ b/src/src/malware.c
@@ -272,8 +272,19 @@ static inline int
 m_tcpsocket(const uschar * hostname, unsigned int port,
     host_item * host, uschar ** errstr, const blob * fastopen_blob)
 {
-return ip_connectedsocket(SOCK_STREAM, hostname, port, port, 5,
+int fd = ip_connectedsocket(SOCK_STREAM, hostname, port, port, 5,
               host, errstr, fastopen_blob);
+#ifdef EXIM_TFO_FREEBSD
+/* Under some fault conditions, FreeBSD 12.2 seen to send a (non-TFO) SYN
+and, getting no response, wait for a long time.  Impose a 5s max. */
+if (fd >= 0)
+  {
+  struct timeval tv = {.tv_sec = 5};
+  fd_set fds;
+  FD_ZERO(fds); FD_SET(fd, &fds); (void) select(fd+1, NULL, &fds, NULL, &tv);
+  }
+#endif
+return fd;
 }
 #endif