Initialise networking in daemon before making libevent calls

This commit is contained in:
Mike Gelfand 2015-10-11 16:35:51 +00:00
parent 8beea92859
commit 0420699ad6
6 changed files with 32 additions and 20 deletions

View File

@ -494,12 +494,15 @@ daemon_start (void * raw_arg,
sd_notifyf (0, "MAINPID=%d\n", (int)getpid());
/* should go before libevent calls */
tr_net_init ();
/* setup event state */
ev_base = event_base_new();
ev_base = event_base_new ();
if (ev_base == NULL)
{
char buf[256];
tr_snprintf(buf, sizeof(buf), "Failed to init daemon event state: %s", tr_strerror(errno));
tr_snprintf (buf, sizeof (buf), "Failed to init daemon event state: %s", tr_strerror (errno));
printMessage (logfile, TR_LOG_ERROR, MY_NAME, buf, __FILE__, __LINE__);
return 1;
}

View File

@ -55,21 +55,6 @@
const tr_address tr_in6addr_any = { TR_AF_INET6, { IN6ADDR_ANY_INIT } };
const tr_address tr_inaddr_any = { TR_AF_INET, { { { { INADDR_ANY, 0x00, 0x00, 0x00 } } } } };
void
tr_netInit (void)
{
static bool initialized = false;
if (!initialized)
{
#ifdef _WIN32
WSADATA wsaData;
WSAStartup (MAKEWORD (2, 2), &wsaData);
#endif
initialized = true;
}
}
char *
tr_net_strerror (char * buf, size_t buflen, int err)
{

View File

@ -163,8 +163,6 @@ void tr_netClose (tr_session * session,
void tr_netCloseSocket (tr_socket_t fd);
void tr_netInit (void);
bool tr_net_hasIPv6 (tr_port);

View File

@ -610,7 +610,7 @@ tr_sessionInit (const char * tag,
tr_logSetLevel (i);
/* start the libtransmission thread */
tr_netInit (); /* must go before tr_eventInit */
tr_net_init (); /* must go before tr_eventInit */
tr_eventInit (session);
assert (session->events != NULL);

View File

@ -29,6 +29,7 @@
#include <time.h> /* nanosleep () */
#ifdef _WIN32
#include <ws2tcpip.h> /* WSAStartup () */
#include <windows.h> /* Sleep (), GetSystemTimeAsFileTime (), GetEnvironmentVariable () */
#include <shellapi.h> /* CommandLineToArgv () */
#else
@ -1842,3 +1843,22 @@ char * tr_env_get_string (const char * key,
#endif
}
/***
****
***/
void
tr_net_init (void)
{
static bool initialized = false;
if (!initialized)
{
#ifdef _WIN32
WSADATA wsaData;
WSAStartup (MAKEWORD (2, 2), &wsaData);
#endif
initialized = true;
}
}

View File

@ -504,6 +504,12 @@ char * tr_env_get_string (const char * key,
****
***/
void tr_net_init (void);
/***
****
***/
#ifdef __cplusplus
}
#endif