From: Jo-Philipp Wich Date: Fri, 19 Mar 2010 01:35:26 +0000 (+0000) Subject: uhttpd: make missing certs only fatal if tls sockets were requested X-Git-Tag: 0.10.0~812 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=77f310f5db4b9cd5a98adbf198c3eb9d36632cb7 uhttpd: make missing certs only fatal if tls sockets were requested --- diff --git a/contrib/package/uhttpd/src/Makefile b/contrib/package/uhttpd/src/Makefile index 44bed22d8..a94dff9f8 100644 --- a/contrib/package/uhttpd/src/Makefile +++ b/contrib/package/uhttpd/src/Makefile @@ -1,10 +1,13 @@ -CGI_SUPPORT:=1 -LUA_SUPPORT:=1 -TLS_SUPPORT:=0 +CGI_SUPPORT ?= 1 +LUA_SUPPORT ?= 1 +TLS_SUPPORT ?= 1 LDFLAGS ?= -L./lua-5.1.4/src -L./cyassl-1.4.0/src/.libs -lm CFLAGS ?= -Wall -I./lua-5.1.4/src -I./cyassl-1.4.0/include -O0 -ggdb3 +CFLAGS += --std=c99 -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=500 +LDFLAGS += -lm -lcrypt + OBJ = uhttpd.o uhttpd-file.o uhttpd-utils.o ifeq ($(CGI_SUPPORT),1) @@ -21,7 +24,7 @@ endif ifeq ($(TLS_SUPPORT),1) OBJ += uhttpd-tls.o CFLAGS += -DHAVE_TLS - LDFLAGS += -lcyassl + LDFLAGS += -lpthread -lz -lcyassl endif %.o: %.c diff --git a/contrib/package/uhttpd/src/uhttpd.c b/contrib/package/uhttpd/src/uhttpd.c index 1f66f785f..a338d2925 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 */