uhttpd: make missing certs only fatal if tls sockets were requested
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 19 Mar 2010 01:35:26 +0000 (01:35 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 19 Mar 2010 01:35:26 +0000 (01:35 +0000)
contrib/package/uhttpd/src/Makefile
contrib/package/uhttpd/src/uhttpd.c

index 44bed22d86c7f66ad83382a56aa068b821208bee..a94dff9f8d5f0a2fbef863737b546b17a9b35ee7 100644 (file)
@@ -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
index 1f66f785f05f9efd98705dbac1f825fadae7bda9..a338d2925ff75e2c1bb3fc348704ebb05e8abc66 100644 (file)
@@ -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 */