uhttpd: make missing certs only fatal if tls sockets were requested

This commit is contained in:
Jo-Philipp Wich 2010-03-19 01:35:26 +00:00
parent 0799c5f9ea
commit 77f310f5db
2 changed files with 18 additions and 10 deletions

View file

@ -1,10 +1,13 @@
CGI_SUPPORT:=1 CGI_SUPPORT ?= 1
LUA_SUPPORT:=1 LUA_SUPPORT ?= 1
TLS_SUPPORT:=0 TLS_SUPPORT ?= 1
LDFLAGS ?= -L./lua-5.1.4/src -L./cyassl-1.4.0/src/.libs -lm 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 ?= -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 OBJ = uhttpd.o uhttpd-file.o uhttpd-utils.o
ifeq ($(CGI_SUPPORT),1) ifeq ($(CGI_SUPPORT),1)
@ -21,7 +24,7 @@ endif
ifeq ($(TLS_SUPPORT),1) ifeq ($(TLS_SUPPORT),1)
OBJ += uhttpd-tls.o OBJ += uhttpd-tls.o
CFLAGS += -DHAVE_TLS CFLAGS += -DHAVE_TLS
LDFLAGS += -lcyassl LDFLAGS += -lpthread -lz -lcyassl
endif endif
%.o: %.c %.o: %.c

View file

@ -104,7 +104,7 @@ static int uh_socket_bind(
continue; continue;
error: error:
if( sock > 0 ) if( sock > 0 )
close(sock); close(sock);
} }
@ -363,6 +363,8 @@ int main (int argc, char **argv)
/* maximum file descriptor number */ /* maximum file descriptor number */
int new_fd, cur_fd, max_fd = 0; int new_fd, cur_fd, max_fd = 0;
int tls = 0;
int keys = 0; int keys = 0;
int bound = 0; int bound = 0;
int nofork = 0; int nofork = 0;
@ -428,10 +430,13 @@ int main (int argc, char **argv)
port = optarg; port = optarg;
} }
if( opt == 's' )
tls = 1;
/* bind sockets */ /* bind sockets */
bound += uh_socket_bind( bound += uh_socket_bind(
&serv_fds, &max_fd, bind[0] ? bind : NULL, port, &hints, &serv_fds, &max_fd, bind[0] ? bind : NULL, port,
(opt == 's') ? 1 : 0, &conf &hints, tls, &conf
); );
break; break;
@ -532,7 +537,7 @@ int main (int argc, char **argv)
} }
#ifdef HAVE_TLS #ifdef HAVE_TLS
if( keys < 2 ) if( (tls == 1) && (keys < 2) )
{ {
fprintf(stderr, "Missing private key or certificate file\n"); fprintf(stderr, "Missing private key or certificate file\n");
exit(1); exit(1);
@ -621,7 +626,7 @@ int main (int argc, char **argv)
{ {
/* is a socket managed by us */ /* is a socket managed by us */
if( FD_ISSET(cur_fd, &read_fds) ) if( FD_ISSET(cur_fd, &read_fds) )
{ {
/* is one of our listen sockets */ /* is one of our listen sockets */
if( FD_ISSET(cur_fd, &serv_fds) ) if( FD_ISSET(cur_fd, &serv_fds) )
{ {
@ -638,7 +643,7 @@ int main (int argc, char **argv)
/* add client socket to global fdset */ /* add client socket to global fdset */
FD_SET(new_fd, &used_fds); FD_SET(new_fd, &used_fds);
max_fd = max(max_fd, new_fd); max_fd = max(max_fd, new_fd);
} }
/* insufficient resources */ /* insufficient resources */