1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
From b8e7d19ec50c30c59fa1038cd9da6d37c2176833 Mon Sep 17 00:00:00 2001
From: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Date: Sat, 21 Jun 2014 17:02:06 +0200
Subject: Workaround a bug in libc on Hurd
The send() function, when asked to send 0 characters, doesn't trigger a corresponding recv(), except on Hurd.
This breaks the communication between clamd and clamdscan.
See: https://bugs.debian.org/752237
---
clamd/scanner.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clamd/scanner.c b/clamd/scanner.c
index cd3d07c4ad3e..d531c4420686 100644
--- a/clamd/scanner.c
+++ b/clamd/scanner.c
@@ -119,6 +119,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea
/* detect disconnected socket,
* this should NOT detect half-shutdown sockets (SHUT_WR) */
+#if !defined(__GNU__)
if (send(scandata->conn->sd, &ret, 0, 0) == -1 && errno != EINTR) {
logg("$Client disconnected while command was active!\n");
thrmgr_group_terminate(scandata->conn->group);
@@ -126,7 +127,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea
free(filename);
return CL_BREAK;
}
-
+#endif
if (thrmgr_group_need_terminate(scandata->conn->group)) {
logg("^Client disconnected while scanjob was active\n");
if (reason == visit_file)
|