server: add server_preinit which is called before config file is parsed.
This fixes the issue under native win32 of the socket interface not being enabled (via WSAStartup) before init is called from a script. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>__archive__
parent
6b9c14e908
commit
08589462ad
|
@ -62,7 +62,6 @@ COMMAND_HANDLER(handle_version_command)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int log_target_callback_event_handler(struct target *target, enum target_event event, void *priv)
|
static int log_target_callback_event_handler(struct target *target, enum target_event event, void *priv)
|
||||||
{
|
{
|
||||||
switch (event)
|
switch (event)
|
||||||
|
@ -255,13 +254,15 @@ int openocd_main(int argc, char *argv[])
|
||||||
"http://openocd.berlios.de/doc/doxygen/bugs.html"
|
"http://openocd.berlios.de/doc/doxygen/bugs.html"
|
||||||
"\n");
|
"\n");
|
||||||
|
|
||||||
|
|
||||||
command_context_mode(cmd_ctx, COMMAND_CONFIG);
|
command_context_mode(cmd_ctx, COMMAND_CONFIG);
|
||||||
command_set_output_handler(cmd_ctx, configuration_output_handler, NULL);
|
command_set_output_handler(cmd_ctx, configuration_output_handler, NULL);
|
||||||
|
|
||||||
if (parse_cmdline_args(cmd_ctx, argc, argv) != ERROR_OK)
|
if (parse_cmdline_args(cmd_ctx, argc, argv) != ERROR_OK)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
if (server_preinit() != ERROR_OK)
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
ret = parse_config_file(cmd_ctx);
|
ret = parse_config_file(cmd_ctx);
|
||||||
if (ret != ERROR_OK)
|
if (ret != ERROR_OK)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
@ -487,8 +487,12 @@ void sig_handler(int sig) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int server_init(struct command_context *cmd_ctx)
|
int server_preinit(void)
|
||||||
{
|
{
|
||||||
|
/* this currently only calls WSAStartup on native win32 systems
|
||||||
|
* before any socket operations are performed.
|
||||||
|
* This is an issue if you call init in your config script */
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WORD wVersionRequested;
|
WORD wVersionRequested;
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
|
@ -518,6 +522,11 @@ int server_init(struct command_context *cmd_ctx)
|
||||||
signal(SIGABRT, sig_handler);
|
signal(SIGABRT, sig_handler);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return ERROR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int server_init(struct command_context *cmd_ctx)
|
||||||
|
{
|
||||||
int ret = tcl_init(cmd_ctx);
|
int ret = tcl_init(cmd_ctx);
|
||||||
if (ERROR_OK != ret)
|
if (ERROR_OK != ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -74,6 +74,7 @@ int add_service(char *name, enum connection_type type, unsigned short port,
|
||||||
input_handler_t in_handler, connection_closed_handler_t close_handler,
|
input_handler_t in_handler, connection_closed_handler_t close_handler,
|
||||||
void *priv);
|
void *priv);
|
||||||
|
|
||||||
|
int server_preinit(void);
|
||||||
int server_init(struct command_context *cmd_ctx);
|
int server_init(struct command_context *cmd_ctx);
|
||||||
int server_quit(void);
|
int server_quit(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue