... | ... |
@@ -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; |