Added ways to get the addresses of the request's connection.
authorFredrik Tolf <fredrik@dolda2000.com>
Mon, 12 Oct 2009 21:33:06 +0000 (23:33 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Mon, 12 Oct 2009 21:33:06 +0000 (23:33 +0200)
src/dolda/jsvc/Request.java
src/dolda/jsvc/j2ee/J2eeRequest.java
src/dolda/jsvc/test/TestResponder.java

index 4dc9cf6..6c779ac 100644 (file)
@@ -2,6 +2,7 @@ package dolda.jsvc;
 
 import java.io.*;
 import java.net.URL;
+import java.net.SocketAddress;
 import java.util.Map;
 
 public interface Request {
@@ -22,4 +23,6 @@ public interface Request {
     /* Misc. */
     public Map<?, ?> props();
     public ServerContext ctx();
+    public SocketAddress remoteaddr();
+    public SocketAddress localaddr();
 }
index 1e7d789..9811591 100644 (file)
@@ -52,6 +52,26 @@ public class J2eeRequest extends ResponseBuffer {
        return(new J2eeContext(cfg, req, resp));
     }
     
+    public SocketAddress remoteaddr() {
+       try {
+           return(new InetSocketAddress(InetAddress.getByName(req.getRemoteAddr()), req.getRemotePort()));
+       } catch(UnknownHostException e) {
+           /* req.getRemoteAddr should always be a valid IP address,
+            * so this should never happen. */
+           throw(new Error(e));
+       }
+    }
+    
+    public SocketAddress localaddr() {
+       try {
+           return(new InetSocketAddress(InetAddress.getByName(req.getLocalAddr()), req.getLocalPort()));
+       } catch(UnknownHostException e) {
+           /* req.getRemoteAddr should always be a valid IP address,
+            * so this should never happen. */
+           throw(new Error(e));
+       }
+    }
+    
     public URL url() {
        return(url);
     }
index d466156..d7541b4 100644 (file)
@@ -20,6 +20,7 @@ public class TestResponder implements Responder {
        out.println("Bardslen.");
        out.println(req.inheaders());
        out.println(req.ctx().starttime());
+       out.println(req.remoteaddr() + "<->" + req.localaddr());
        out.println("</body>");
        out.println("</html>");
        out.flush();