diff options
author | Matt Johnston <matt@ucc.asn.au> | 2007-07-19 15:54:18 +0000 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2007-07-19 15:54:18 +0000 |
commit | 6ec5ee0c500f4d32df4be6f84538e19a62b9b32e (patch) | |
tree | 77c19167cd8925321c88cd726a8afe2c31801051 | |
parent | baf1d05697038f4fd37287eb70339fde28f0d096 (diff) | |
download | dropbear-6ec5ee0c500f4d32df4be6f84538e19a62b9b32e.tar.gz |
Patch from Nicolai Ehemann to try binding before going to the background,
so that if it exits early (because something's already listening etc)
then it will return an exitcode of 1.
-rw-r--r-- | svr-main.c | 26 |
1 files changed, 13 insertions, 13 deletions
@@ -130,6 +130,19 @@ void main_noinetd() { hostkeys. */ commonsetup(); + /* sockets to identify pre-authenticated clients */ + for (i = 0; i < MAX_UNAUTH_CLIENTS; i++) { + childpipes[i] = -1; + } + bzero(preauth_addrs, sizeof(preauth_addrs)); + + /* Set up the listening sockets */ + listensockcount = listensockets(listensocks, MAX_LISTEN_ADDR, &maxsock); + if (listensockcount == 0) + { + dropbear_exit("No listening ports available."); + } + /* fork */ if (svr_opts.forkbg) { int closefds = 0; @@ -157,19 +170,6 @@ void main_noinetd() { fclose(pidfile); } - /* sockets to identify pre-authenticated clients */ - for (i = 0; i < MAX_UNAUTH_CLIENTS; i++) { - childpipes[i] = -1; - } - bzero(preauth_addrs, sizeof(preauth_addrs)); - - /* Set up the listening sockets */ - listensockcount = listensockets(listensocks, MAX_LISTEN_ADDR, &maxsock); - if (listensockcount == 0) - { - dropbear_exit("No listening ports available."); - } - /* incoming connection select loop */ for(;;) { |