Report success when not terminating an already terminated process.

Also, document the actual behavior and return values of
tor_terminate_process.

Fixes bug18686; bugfix on 0.2.3.9-alpha.
This commit is contained in:
Nick Mathewson 2016-05-04 15:10:36 -04:00
parent 34a51d1621
commit c7b9e0b8ed
2 changed files with 13 additions and 3 deletions

5
changes/bug18686 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes (pluggable transports):
- Avoid reporting a spurious error when we decide that we don't
need to terminate a pluggable transport because it has already
exited. Fixes bug 18686; bugfix on 0.2.5.5-alpha.

View File

@ -3626,8 +3626,13 @@ format_helper_exit_status(unsigned char child_state, int saved_errno,
/* Maximum number of file descriptors, if we cannot get it via sysconf() */
#define DEFAULT_MAX_FD 256
/** Terminate the process of <b>process_handle</b>.
* Code borrowed from Python's os.kill. */
/** Terminate the process of <b>process_handle</b>, if that process has not
* already exited.
*
* Return 0 if we succeeded in terminating the process (or if the process
* already exited), and -1 if we tried to kill the process but failed.
*
* Based on code originally borrowed from Python's os.kill. */
int
tor_terminate_process(process_handle_t *process_handle)
{
@ -3647,7 +3652,7 @@ tor_terminate_process(process_handle_t *process_handle)
}
#endif
return -1;
return 0; /* We didn't need to kill the process, so report success */
}
/** Return the Process ID of <b>process_handle</b>. */