+extern int io_error;
+extern int keep_partial;
+extern int log_got_error;
+
+/**
+ * Close all open sockets and files, allowing a (somewhat) graceful
+ * shutdown() of socket connections. This eliminates the abortive
+ * TCP RST sent by a Winsock-based system when the close() occurs.
+ **/
+void close_all(void)
+{
+#ifdef SHUTDOWN_ALL_SOCKETS
+ int max_fd;
+ int fd;
+ int ret;
+ struct stat st;
+
+ max_fd = sysconf(_SC_OPEN_MAX) - 1;
+ for (fd = max_fd; fd >= 0; fd--) {
+ ret = fstat(fd,&st);
+ if (fstat(fd,&st) == 0) {
+ if (is_a_socket(fd)) {
+ ret = shutdown(fd, 2);
+ }
+ ret = close(fd);
+ }
+ }
+#endif
+}
+