From fb9dcf2b3b108464f74a2ce4d8ea4a72edbde9a4 Mon Sep 17 00:00:00 2001
From: Constantin Papizh <p.const@bk.ru>
Date: Sat, 14 Mar 2020 15:25:13 +0300
Subject: [PATCH] Winsock issues

---
 dap_chain_node_cli.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/dap_chain_node_cli.c b/dap_chain_node_cli.c
index 046d6a26a4..194b0e1fdd 100755
--- a/dap_chain_node_cli.c
+++ b/dap_chain_node_cli.c
@@ -776,6 +776,15 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
         return 0;
     }
 
+#ifdef __WIN32
+    WSADATA wsaData;
+    int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
+    if (ret != 0) {
+        log_it(L_CRITICAL, "Couldn't init Winsock DLL, error: %d", ret);
+        return 2;
+    }
+#endif
+
     dap_chain_node_cli_cmd_item_create("global_db", com_global_db, "Work with global database",
             "global_db cells add -cell <cell id> \n"
             "global_db flush \n\n"
@@ -930,13 +939,16 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
 
         // create socket
         if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET ) {
-            log_it( L_ERROR, "Console Server: can't create socket, err %X", errno );
+#ifdef __WIN32
+            _set_errno(WSAGetLastError());
+#endif
+            log_it( L_ERROR, "Console Server: can't create socket, err %d", errno );
             return -3;
         }
 
         // connecting the address with a socket
         if ( bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr)) == SOCKET_ERROR ) {
-            log_it( L_ERROR, "Console Server: can't bind socket, err %X", errno );
+            log_it( L_ERROR, "Console Server: can't bind socket, err %d", errno );
             closesocket( sockfd );
             return -4;
         }
@@ -969,7 +981,9 @@ void dap_chain_node_cli_delete(void)
 {
     if(server_sockfd >= 0)
         closesocket(server_sockfd);
-
+#ifdef __WIN32
+    WSACleanup();
+#endif
     // deinit client for handshake
     dap_chain_node_client_deinit();
 }
-- 
GitLab