int status = gdb_recv_packet(client, &packet);
if(status < 0) {
ELOG("cannot recv: %d\n", status);
+#ifdef __MINGW32__
+ win32_close_socket(sock);
+#endif
return 1;
}
int status = gdb_check_for_interrupt(client);
if(status < 0) {
ELOG("cannot check for int: %d\n", status);
+#ifdef __MINGW32__
+ win32_close_socket(sock);
+#endif
return 1;
}
ELOG("cannot send: %d\n", result);
free(reply);
free(packet);
+#ifdef __MINGW32__
+ win32_close_socket(sock);
+#endif
return 1;
}
free(packet);
}
+#ifdef __MINGW32__
+ win32_close_socket(sock);
+#endif
+
return 0;
}
}
return rc;
}
-int win32_close_socket(SOCKET fd) {
- int rc;
- rc = closesocket(fd);
+int win32_close_socket(SOCKET fd)
+{
+ int rc = closesocket(fd);
+ if(rc == SOCKET_ERROR) {
+ set_socket_errno(WSAGetLastError());
+ }
return rc;
}
-
ssize_t win32_write_socket(SOCKET fd, void *buf, int n)
{
int rc = send(fd, buf, n, 0);
int win32_connect(SOCKET, struct sockaddr*, socklen_t);
SOCKET win32_accept(SOCKET, struct sockaddr*, socklen_t *);
int win32_shutdown(SOCKET, int);
+int win32_close_socket(SOCKET fd);
#define strtok_r(x, y, z) win32_strtok_r(x, y, z)
#define strsep(x,y) win32_strsep(x,y)