Browse code

clamd: avoid closing bad socket if already exiting-on-error, cid #11004

David Raynor authored on 2013/08/13 02:17:10
Showing 1 changed files
... ...
@@ -1298,9 +1298,14 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi
1298 1298
 		}
1299 1299
 		thrmgr_group_terminate(buf->group);
1300 1300
 		if (thrmgr_group_finished(buf->group, EXIT_ERROR)) {
1301
-		    logg("$Shutting down socket after error (FD %d)\n", buf->fd);
1302
-		    shutdown(buf->fd, 2);
1303
-		    closesocket(buf->fd);
1301
+		    if (buf->fd < 0) {
1302
+			logg("$Skipping shutdown of bad socket after error (FD %d)\n", buf->fd);
1303
+		    }
1304
+		    else {
1305
+			logg("$Shutting down socket after error (FD %d)\n", buf->fd);
1306
+			shutdown(buf->fd, 2);
1307
+			closesocket(buf->fd);
1308
+		    }
1304 1309
 		} else
1305 1310
 		    logg("$Socket not shut down due to active tasks\n");
1306 1311
 		buf->fd = -1;