aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/openocd.c4
-rw-r--r--src/server/server.c17
-rw-r--r--src/server/server.h3
3 files changed, 22 insertions, 2 deletions
diff --git a/src/openocd.c b/src/openocd.c
index 2a9a0b3..8862284 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -345,6 +345,8 @@ int openocd_main(int argc, char *argv[])
command_context_mode(cmd_ctx, COMMAND_CONFIG);
command_set_output_handler(cmd_ctx, configuration_output_handler, NULL);
+ server_host_os_entry();
+
/* Start the executable meat that can evolve into thread in future. */
ret = openocd_thread(argc, argv, cmd_ctx);
@@ -360,6 +362,8 @@ int openocd_main(int argc, char *argv[])
adapter_quit();
+ server_host_os_close();
+
/* Shutdown commandline interface */
command_exit(cmd_ctx);
diff --git a/src/server/server.c b/src/server/server.c
index 07b7ae4..23a15ef 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -631,7 +631,7 @@ static void sigkey_handler(int sig)
#endif
-int server_preinit(void)
+int server_host_os_entry(void)
{
/* this currently only calls WSAStartup on native win32 systems
* before any socket operations are performed.
@@ -647,7 +647,21 @@ int server_preinit(void)
LOG_ERROR("Failed to Open Winsock");
return ERROR_FAIL;
}
+#endif
+ return ERROR_OK;
+}
+int server_host_os_close(void)
+{
+#ifdef _WIN32
+ WSACleanup();
+#endif
+ return ERROR_OK;
+}
+
+int server_preinit(void)
+{
+#ifdef _WIN32
/* register ctrl-c handler */
SetConsoleCtrlHandler(ControlHandler, TRUE);
@@ -688,7 +702,6 @@ int server_quit(void)
target_quit();
#ifdef _WIN32
- WSACleanup();
SetConsoleCtrlHandler(ControlHandler, FALSE);
return ERROR_OK;
diff --git a/src/server/server.h b/src/server/server.h
index ab9b72f..f4cc39d 100644
--- a/src/server/server.h
+++ b/src/server/server.h
@@ -80,6 +80,9 @@ int add_service(char *name, const char *port,
void *priv);
int remove_service(const char *name, const char *port);
+int server_host_os_entry(void);
+int server_host_os_close(void);
+
int server_preinit(void);
int server_init(struct command_context *cmd_ctx);
int server_quit(void);