int emul_vm_base_socket;
static bool sdb_daemon_is_initialized = false;
-#ifdef _WIN32
-#include "qemu/main-loop.h"
-
-static void socket_close_handler( void* _fd )
-{
- int fd = (int)(uintptr_t)_fd;
- int ret;
- char buff[BUF_SIZE];
-
- /* we want to drain the read side of the socket before closing it */
- do {
- ret = recv( fd, buff, sizeof(buff), 0 );
- } while (ret < 0 && WSAGetLastError() == WSAEINTR);
-
- if (ret < 0 && WSAGetLastError() == EWOULDBLOCK)
- return;
-
- qemu_set_fd_handler( fd, NULL, NULL, NULL );
- closesocket( fd );
-}
-
-void socket_close( int fd )
-{
- int old_errno = errno;
-
- shutdown( fd, SD_BOTH );
- /* we want to drain the socket before closing it */
- qemu_set_fd_handler( fd, socket_close_handler, NULL, (void*)(uintptr_t)fd );
-
- errno = old_errno;
-}
-
-#else /* !_WIN32 */
-
-#include <unistd.h>
-
-void socket_close( int fd )
-{
- int old_errno = errno;
-
- shutdown( fd, SHUT_RDWR );
- close( fd );
-
- errno = old_errno;
-}
-
-#endif /* !_WIN32 */
int inet_strtoip(const char* str, uint32_t *ip)
{
int serial_len = 0;
char buf[BUF_SIZE];
- if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1){
+ if ((s = qemu_socket(AF_INET, SOCK_STREAM, 0)) == -1){
LOG_INFO("socket creation error! %d\n", errno);
return;
}
if (connect(s, (struct sockaddr*)&sock_addr, slen) == -1) {
LOG_INFO("connect error! remove this client.\n");
remove_sdb_client(client);
- close(s);
+ closesocket(s);
return;
}
remove_sdb_client(client);
}
- close(s);
+ closesocket(s);
}
void notify_all_sdb_clients(int state)
struct sockaddr_in server_addr;
int opt = 1;
- if ((server->server_fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
+ if ((server->server_fd = qemu_socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
LOG_INFO("create listen socket error:%d\n", errno);
return -1;
}