diff options
author | George Kadianakis <desnacked@gmail.com> | 2011-10-07 15:44:44 +0200 |
---|---|---|
committer | George Kadianakis <desnacked@gmail.com> | 2011-10-07 15:44:44 +0200 |
commit | 3be9d76fa2e56a9715e8151d9b6802da5b38512a (patch) | |
tree | f33df39524c9cce45a9f844c3bf37b98071ff648 /src/or/transports.c | |
parent | 105cc42e96ea979b1111f3ba0d410c510cd229f0 (diff) | |
download | tor-3be9d76fa2e56a9715e8151d9b6802da5b38512a.tar.gz tor-3be9d76fa2e56a9715e8151d9b6802da5b38512a.zip |
Make it compile on Windows™.
Diffstat (limited to 'src/or/transports.c')
-rw-r--r-- | src/or/transports.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/or/transports.c b/src/or/transports.c index 465b8e1bc2..c531fe70b4 100644 --- a/src/or/transports.c +++ b/src/or/transports.c @@ -234,7 +234,7 @@ proxy_prepare_for_restart(managed_proxy_t *mp) /* kill the old obfsproxy process */ tor_terminate_process(mp->pid); mp->pid = 0; - fclose(mp->stdout); + fclose(mp->_stdout); /* destroy all its old transports. we no longer use them. */ SMARTLIST_FOREACH_BEGIN(mp->transports, const char *, t_name) { @@ -277,14 +277,22 @@ launch_managed_proxy(managed_proxy_t *mp) free_execve_args(envp); /* Set stdout/stderr pipes to be non-blocking */ - fcntl(stdout_pipe, F_SETFL, O_NONBLOCK); +#ifdef _WIN32 + { + u_long nonblocking = 1; + ioctlsocket(stdout_pipe, FIONBIO, &nonblocking); + } +#else + fcntl(stdout_pipe, F_SETFL, O_NONBLOCK); +#endif + /* Open the buffered IO streams */ stdout_read = fdopen(stdout_pipe, "r"); log_info(LD_CONFIG, "Managed proxy has spawned at PID %d.", pid); mp->conf_state = PT_PROTO_LAUNCHED; - mp->stdout = stdout_read; + mp->_stdout = stdout_read; mp->pid = pid; return 0; @@ -344,7 +352,7 @@ configure_proxy(managed_proxy_t *mp) tor_assert(mp->conf_state != PT_PROTO_INFANT); while (1) { - r = get_string_from_pipe(mp->stdout, stdout_buf, + r = get_string_from_pipe(mp->_stdout, stdout_buf, sizeof(stdout_buf) - 1); if (r == IO_STREAM_OKAY) { /* got a line; handle it! */ @@ -456,8 +464,8 @@ managed_proxy_destroy(managed_proxy_t *mp) smartlist_remove(managed_proxy_list, mp); /* close its stdout stream */ - if (mp->stdout) - fclose(mp->stdout); + if (mp->_stdout) + fclose(mp->_stdout); /* free the argv */ free_execve_args(mp->argv); |