X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Fscgi%2FDirServer.java;h=0b70e9c3bfe3ad57ebddc0d2258967fd3f47fa09;hb=HEAD;hp=5d827392545a0d84e264661c2b6a201630a627e6;hpb=3299417335913b0886ca80ac0de62d76fc741dbe;p=jsvc.git diff --git a/src/dolda/jsvc/scgi/DirServer.java b/src/dolda/jsvc/scgi/DirServer.java index 5d82739..0b70e9c 100644 --- a/src/dolda/jsvc/scgi/DirServer.java +++ b/src/dolda/jsvc/scgi/DirServer.java @@ -98,17 +98,23 @@ public class DirServer extends Server { } private static void usage(PrintStream out) { - out.println("usage: dolda.jsvc.scgi.DirServer [-h] [-e CHARSET] [-d DATADIR] PORT"); + out.println("usage: dolda.jsvc.scgi.DirServer [-h] [-B BINDADDR] [-e CHARSET] [-d DATADIR] PORT"); } public static void main(String[] args) { - PosixArgs opt = PosixArgs.getopt(args, "h"); + PosixArgs opt = PosixArgs.getopt(args, "he:d:B:"); if(opt == null) { usage(System.err); System.exit(1); } String charset = null; File datroot = null; + InetAddress bindaddr; + try { + bindaddr = InetAddress.getByName(null); + } catch(UnknownHostException e) { + throw(new Error(e)); + } for(char c : opt.parsed()) { switch(c) { case 'e': @@ -121,6 +127,14 @@ public class DirServer extends Server { System.exit(1); } break; + case 'B': + try { + bindaddr = InetAddress.getByName(opt.arg); + } catch(UnknownHostException e) { + System.err.println(opt.arg + ": no such host"); + System.exit(1); + } + break; case 'h': usage(System.out); return; @@ -134,10 +148,12 @@ public class DirServer extends Server { env.initvm(); int port = Integer.parseInt(opt.rest[0]); ServerSocket sk; + SocketAddress saddr = new InetSocketAddress(bindaddr, port); try { - sk = new ServerSocket(port); + sk = new ServerSocket(); + sk.bind(saddr); } catch(IOException e) { - System.err.println("could not bind to port " + port + ": " + e.getMessage()); + System.err.println("could not bind to " + saddr + ": " + e.getMessage()); System.exit(1); return; /* Because javac is stupid. :-/ */ }