diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/or/transports.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/or/transports.c b/src/or/transports.c index 1522756a52..e43ec6c480 100644 --- a/src/or/transports.c +++ b/src/or/transports.c @@ -697,7 +697,19 @@ handle_proxy_line(const char *line, managed_proxy_t *mp) return; } else if (!strcmpstart(line, SPAWN_ERROR_MESSAGE)) { - log_warn(LD_GENERAL, "Could not launch managed proxy executable!"); + /* managed proxy launch failed: parse error message to learn why. */ + int retval, child_state, saved_errno; + retval = tor_sscanf(line, SPAWN_ERROR_MESSAGE "%x/%x", + &child_state, &saved_errno); + if (retval == 2) { + log_warn(LD_GENERAL, + "Could not launch managed proxy executable at '%s' ('%s').", + mp->argv[0], strerror(saved_errno)); + } else { /* failed to parse error message */ + log_warn(LD_GENERAL,"Could not launch managed proxy executable at '%s'.", + mp->argv[0]); + } + mp->conf_state = PT_PROTO_FAILED_LAUNCH; return; } |