diff options
author | Damien Miller <djm@mindrot.org> | 2011-06-03 12:10:22 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2011-06-03 12:10:22 +1000 |
commit | ea2c1a4dc6b0568ec1c74f94adee124ad8a60c68 (patch) | |
tree | 1f1f182f236559bebeea7638fafc6e2063bd4a5c /ssh.c | |
parent | c3c7227ccc4443a0b9bf180ee660fef47a064cdf (diff) |
- djm@cvs.openbsd.org 2011/06/03 00:54:38
[ssh.c]
bz#1883 - setproctitle() to identify mux master; patch from Bert.Wesarg
AT googlemail.com; ok dtucker@
NB. includes additional portability code to enable setproctitle emulation
on platforms that don't support it.
Diffstat (limited to 'ssh.c')
-rw-r--r-- | ssh.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh.c,v 1.361 2011/05/24 07:15:47 djm Exp $ */ | 1 | /* $OpenBSD: ssh.c,v 1.362 2011/06/03 00:54:38 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -111,6 +111,11 @@ | |||
111 | 111 | ||
112 | extern char *__progname; | 112 | extern char *__progname; |
113 | 113 | ||
114 | /* Saves a copy of argv for setproctitle emulation */ | ||
115 | #ifndef HAVE_SETPROCTITLE | ||
116 | static char **saved_av; | ||
117 | #endif | ||
118 | |||
114 | /* Flag indicating whether debug mode is on. May be set on the command line. */ | 119 | /* Flag indicating whether debug mode is on. May be set on the command line. */ |
115 | int debug_flag = 0; | 120 | int debug_flag = 0; |
116 | 121 | ||
@@ -240,6 +245,7 @@ main(int ac, char **av) | |||
240 | int dummy, timeout_ms; | 245 | int dummy, timeout_ms; |
241 | extern int optind, optreset; | 246 | extern int optind, optreset; |
242 | extern char *optarg; | 247 | extern char *optarg; |
248 | |||
243 | struct servent *sp; | 249 | struct servent *sp; |
244 | Forward fwd; | 250 | Forward fwd; |
245 | 251 | ||
@@ -248,6 +254,17 @@ main(int ac, char **av) | |||
248 | 254 | ||
249 | __progname = ssh_get_progname(av[0]); | 255 | __progname = ssh_get_progname(av[0]); |
250 | 256 | ||
257 | #ifndef HAVE_SETPROCTITLE | ||
258 | /* Prepare for later setproctitle emulation */ | ||
259 | /* Save argv so it isn't clobbered by setproctitle() emulation */ | ||
260 | saved_av = xcalloc(ac + 1, sizeof(*saved_av)); | ||
261 | for (i = 0; i < ac; i++) | ||
262 | saved_av[i] = xstrdup(av[i]); | ||
263 | saved_av[i] = NULL; | ||
264 | compat_init_setproctitle(ac, av); | ||
265 | av = saved_av; | ||
266 | #endif | ||
267 | |||
251 | /* | 268 | /* |
252 | * Discard other fds that are hanging around. These can cause problem | 269 | * Discard other fds that are hanging around. These can cause problem |
253 | * with backgrounded ssh processes started by ControlPersist. | 270 | * with backgrounded ssh processes started by ControlPersist. |
@@ -977,6 +994,7 @@ control_persist_detach(void) | |||
977 | if (devnull > STDERR_FILENO) | 994 | if (devnull > STDERR_FILENO) |
978 | close(devnull); | 995 | close(devnull); |
979 | } | 996 | } |
997 | setproctitle("%s [mux]", options.control_path); | ||
980 | } | 998 | } |
981 | 999 | ||
982 | /* Do fork() after authentication. Used by "ssh -f" */ | 1000 | /* Do fork() after authentication. Used by "ssh -f" */ |