diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-03-19 01:35:26 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-03-19 01:35:26 +0000 |
commit | 77f310f5db4b9cd5a98adbf198c3eb9d36632cb7 (patch) | |
tree | 2f0a22808dba693dc1cece057d2e03f05e2f751a /contrib/package/uhttpd/src/uhttpd.c | |
parent | 0799c5f9ea70ddc5cc958cea74a6e066fea12f80 (diff) |
uhttpd: make missing certs only fatal if tls sockets were requested
Diffstat (limited to 'contrib/package/uhttpd/src/uhttpd.c')
-rw-r--r-- | contrib/package/uhttpd/src/uhttpd.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/contrib/package/uhttpd/src/uhttpd.c b/contrib/package/uhttpd/src/uhttpd.c index 1f66f785f0..a338d2925f 100644 --- a/contrib/package/uhttpd/src/uhttpd.c +++ b/contrib/package/uhttpd/src/uhttpd.c @@ -104,7 +104,7 @@ static int uh_socket_bind( continue; error: - if( sock > 0 ) + if( sock > 0 ) close(sock); } @@ -363,6 +363,8 @@ int main (int argc, char **argv) /* maximum file descriptor number */ int new_fd, cur_fd, max_fd = 0; + + int tls = 0; int keys = 0; int bound = 0; int nofork = 0; @@ -428,10 +430,13 @@ int main (int argc, char **argv) port = optarg; } + if( opt == 's' ) + tls = 1; + /* bind sockets */ bound += uh_socket_bind( - &serv_fds, &max_fd, bind[0] ? bind : NULL, port, &hints, - (opt == 's') ? 1 : 0, &conf + &serv_fds, &max_fd, bind[0] ? bind : NULL, port, + &hints, tls, &conf ); break; @@ -532,7 +537,7 @@ int main (int argc, char **argv) } #ifdef HAVE_TLS - if( keys < 2 ) + if( (tls == 1) && (keys < 2) ) { fprintf(stderr, "Missing private key or certificate file\n"); exit(1); @@ -621,7 +626,7 @@ int main (int argc, char **argv) { /* is a socket managed by us */ if( FD_ISSET(cur_fd, &read_fds) ) - { + { /* is one of our listen sockets */ if( FD_ISSET(cur_fd, &serv_fds) ) { @@ -638,7 +643,7 @@ int main (int argc, char **argv) /* add client socket to global fdset */ FD_SET(new_fd, &used_fds); - max_fd = max(max_fd, new_fd); + max_fd = max(max_fd, new_fd); } /* insufficient resources */ |