diff options
author | Matt Johnston <matt@ucc.asn.au> | 2009-07-29 02:58:33 +0000 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2009-07-29 02:58:33 +0000 |
commit | bacd2a8c795f49822146c1eea0d66c2438c26d7f (patch) | |
tree | 36dd8173372f0ffe1fba1f1bb75facd3066ef1cf /svr-session.c | |
parent | 8a19a049b25f72062cc38a0940d9dc5f928cdb0e (diff) | |
parent | 0dcecfa52612df18dd051f72d31d18e76d7848b7 (diff) |
propagate from branch 'au.asn.ucc.matt.dropbear' (head bbe4e11695a7b22bd89a722600eb4a4020b6fdf3)
to branch 'au.asn.ucc.matt.dropbear.cli-agent' (head 276cf5e82276b6c879d246ba64739ec6868f5150)
--HG--
branch : agent-client
extra : convert_revision : d23b0c21649eb2f0b2d13dbf33c0a9faca25628a
Diffstat (limited to 'svr-session.c')
-rw-r--r-- | svr-session.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/svr-session.c b/svr-session.c index eaccfe5..89b16cb 100644 --- a/svr-session.c +++ b/svr-session.c @@ -85,6 +85,10 @@ void svr_session(int sock, int childpipe, /* Initialise server specific parts of the session */ svr_ses.childpipe = childpipe; svr_ses.addrstring = addrstring; +#ifdef __uClinux__ + svr_ses.server_pid = getpid(); +#endif + svr_ses.addrstring = addrstring; svr_authinitialise(); chaninitialise(svr_chantypes); svr_chansessinitialise(); @@ -144,11 +148,20 @@ void svr_dropbear_exit(int exitcode, const char* format, va_list param) { _dropbear_log(LOG_INFO, fmtbuf, param); - /* free potential public key options */ - svr_pubkey_options_cleanup(); +#ifdef __uClinux__ + /* only the main server process should cleanup - we don't want + * forked children doing that */ + if (svr_ses.server_pid == getpid()) +#else + if (1) +#endif + { + /* free potential public key options */ + svr_pubkey_options_cleanup(); - /* must be after we've done with username etc */ - common_session_cleanup(); + /* must be after we've done with username etc */ + common_session_cleanup(); + } exit(exitcode); |