diff --git a/src/main/java/com/threerings/nio/conman/ServerSocketChannelAcceptor.java b/src/main/java/com/threerings/nio/conman/ServerSocketChannelAcceptor.java index 3536edafc..d25989137 100644 --- a/src/main/java/com/threerings/nio/conman/ServerSocketChannelAcceptor.java +++ b/src/main/java/com/threerings/nio/conman/ServerSocketChannelAcceptor.java @@ -99,7 +99,7 @@ public class ServerSocketChannelAcceptor { // create a listening socket final ServerSocketChannel ssocket = ServerSocketChannel.open(); - ssocket.configureBlocking(false); + configureSocket(ssocket); InetSocketAddress isa = AddressUtil.getAddress(_bindHostname, port); ssocket.socket().bind(isa); @@ -125,6 +125,16 @@ public class ServerSocketChannelAcceptor log.info("Server listening on " + isa + "."); } + /** + * Override to perform any desired additional socket configuration before binding. Be sure to + * call the superclass implementation. + */ + protected void configureSocket (ServerSocketChannel ssocket) + throws IOException + { + ssocket.configureBlocking(false); + } + protected final int[] _ports; protected final String _bindHostname; protected final ConnectionManager _conMan; diff --git a/src/main/java/com/threerings/presents/server/PresentsServer.java b/src/main/java/com/threerings/presents/server/PresentsServer.java index 0b4aa300a..1a9831d41 100644 --- a/src/main/java/com/threerings/presents/server/PresentsServer.java +++ b/src/main/java/com/threerings/presents/server/PresentsServer.java @@ -191,9 +191,7 @@ public class PresentsServer _clmgr.setInjector(injector); // Create our socket opening objects now that we know what ports we're using. - _socketAcceptor = - new ServerSocketChannelAcceptor(getBindHostname(), getListenPorts(), _conmgr); - _lifecycle.addComponent(_socketAcceptor); + _lifecycle.addComponent(_socketAcceptor = createSocketAcceptor()); _datagramReader = new DatagramChannelReader(getDatagramHostname(), getDatagramPorts(), _conmgr); _lifecycle.addComponent(_datagramReader); @@ -220,6 +218,11 @@ public class PresentsServer } } + protected ServerSocketChannelAcceptor createSocketAcceptor () + { + return new ServerSocketChannelAcceptor(getBindHostname(), getListenPorts(), _conmgr); + } + /** * Starts up all of the server services and enters the main server event loop. */