Package: dhttpd Version: 1.02a-15 Severity: wishlist Tags: patch This patch adds -b option for binding to an alternate address.
-- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing'), (500, 'stable') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.8-12-amd64-k8 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8) Versions of packages dhttpd depends on: ii libc6 2.3.6-13 GNU C Library: Shared libraries ii libgcc1 1:4.1.0-4 GCC support library ii libstdc++6 4.1.0-4 The GNU Standard C++ Library v3 dhttpd recommends no packages. -- no debconf information
diff -ur dhttpd-1.02a.old/debian/default dhttpd-1.02a/debian/default --- dhttpd-1.02a.old/debian/default 2006-06-17 11:21:50.000000000 +0200 +++ dhttpd-1.02a/debian/default 2006-06-17 11:44:10.399171928 +0200 @@ -1,2 +1,2 @@ # Change this value to set options for dhttpd startup -#OPTIONS="-p80" +#OPTIONS="-p80 -b 0.0.0.0" diff -ur dhttpd-1.02a.old/src/config.hh dhttpd-1.02a/src/config.hh --- dhttpd-1.02a.old/src/config.hh 2006-06-17 11:21:50.000000000 +0200 +++ dhttpd-1.02a/src/config.hh 2006-06-17 11:35:45.791883896 +0200 @@ -11,6 +11,9 @@ * root, you must use a value >= 1024, such as 8080. */ #define DEFAULTPORT 80 +/* Set default address to listen to. (0.0.0.0 for any) */ +#define DEFAULTBINDADDR "0.0.0.0" + /* This is the directory where the web pages are located. */ /* Note: buffer overflow problems may exist if WEBDIRPREFIX is * * longer than 150 characters or so. */ diff -ur dhttpd-1.02a.old/src/main.cc dhttpd-1.02a/src/main.cc --- dhttpd-1.02a.old/src/main.cc 2006-06-17 11:21:50.000000000 +0200 +++ dhttpd-1.02a/src/main.cc 2006-06-17 11:41:51.657263904 +0200 @@ -99,11 +99,12 @@ { int o; int portnum = DEFAULTPORT; + char *bind_addr = DEFAULTBINDADDR; bool nofork=false; for( ;; ) { - o = getopt( argc, argv, "p:hdr:" ); + o = getopt( argc, argv, "p:b:hdr:" ); if( o==-1 ) { break; @@ -118,6 +119,7 @@ case 'h': printf( "usage: %s [options]\n", argv[ 0 ] ); printf( " -p (port) Use a different port than the default of %i\n", DEFAULTPORT ); + printf( " -b Bind to this address instead of ", DEFAULTBINDADDR, "\n" ); printf( " -h Help\n" ); printf( " -d Do not fork into Background on startup\n" ); return 0; @@ -125,6 +127,9 @@ case 'p': sscanf( optarg, "%i", &portnum ); break; + case 'b': + bind_addr = optarg; + break; case 'r': if ( strlen(optarg) > ROOT_MAX_LEN ) { @@ -152,7 +157,7 @@ } } - ListenSocket listen_socket( portnum ); + ListenSocket listen_socket( portnum, bind_addr ); pid_t pid; int s; diff -ur dhttpd-1.02a.old/src/socket.cc dhttpd-1.02a/src/socket.cc --- dhttpd-1.02a.old/src/socket.cc 2006-06-17 11:21:50.000000000 +0200 +++ dhttpd-1.02a/src/socket.cc 2006-06-17 11:40:09.404808640 +0200 @@ -29,6 +29,7 @@ #include <sys/socket.h> #include <sys/types.h> #include <sys/wait.h> +#include <arpa/inet.h> /* inet_addr */ #include "socket.hh" @@ -77,7 +78,7 @@ * ListenSocket::ListenSocket(): * Start up the socket listening routines */ -ListenSocket::ListenSocket( int port ) +ListenSocket::ListenSocket( int port, char *bind_addr ) { int status; struct sockaddr_in s_in; @@ -87,7 +88,7 @@ one = 1; memset( &s_in, 0, sizeof( s_in ) ); s_in.sin_family = AF_INET; - s_in.sin_addr.s_addr = htonl( INADDR_ANY ); + s_in.sin_addr.s_addr = inet_addr( bind_addr ); s_in.sin_port = htons( port ); sock = socket( AF_INET, SOCK_STREAM, 0 ); diff -ur dhttpd-1.02a.old/src/socket.hh dhttpd-1.02a/src/socket.hh --- dhttpd-1.02a.old/src/socket.hh 2006-06-17 11:21:50.000000000 +0200 +++ dhttpd-1.02a/src/socket.hh 2006-06-17 11:32:55.627752776 +0200 @@ -43,6 +43,6 @@ int newsock(); int getfd() const { return sock; } - ListenSocket( int port ); + ListenSocket( int port, char *bind_addr ); ~ListenSocket(); };