diff options
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty/server/Request.java')
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/Request.java | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index fbc42e0708..e358cd64a6 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -161,6 +161,7 @@ public class Request implements HttpServletRequest private final HttpInput _input; private MetaData.Request _metadata; + private String _originalURI; private String _contextPath; private String _servletPath; @@ -937,22 +938,25 @@ public class Request implements HttpServletRequest @Override public String getLocalName() { - if (_channel==null) + if (_channel!=null) { - try - { - String name =InetAddress.getLocalHost().getHostName(); - if (StringUtil.ALL_INTERFACES.equals(name)) - return null; - return name; - } - catch (java.net.UnknownHostException e) - { - LOG.ignore(e); - } + InetSocketAddress local=_channel.getLocalAddress(); + if (local!=null) + return local.getHostString(); } - InetSocketAddress local=_channel.getLocalAddress(); - return local.getHostString(); + + try + { + String name =InetAddress.getLocalHost().getHostName(); + if (StringUtil.ALL_INTERFACES.equals(name)) + return null; + return name; + } + catch (java.net.UnknownHostException e) + { + LOG.ignore(e); + } + return null; } /* ------------------------------------------------------------ */ @@ -965,7 +969,7 @@ public class Request implements HttpServletRequest if (_channel==null) return 0; InetSocketAddress local=_channel.getLocalAddress(); - return local.getPort(); + return local==null?0:local.getPort(); } /* ------------------------------------------------------------ */ @@ -1270,6 +1274,8 @@ public class Request implements HttpServletRequest @Override public RequestDispatcher getRequestDispatcher(String path) { + path = URIUtil.compactPath(path); + if (path == null || _context == null) return null; @@ -1580,6 +1586,14 @@ public class Request implements HttpServletRequest /* ------------------------------------------------------------ */ /** + * @return Returns the original uri passed in metadata before customization/rewrite + */ + public String getOriginalURI() + { + return _originalURI; + } + /* ------------------------------------------------------------ */ + /** * @param uri the URI to set */ public void setHttpURI(HttpURI uri) @@ -1739,7 +1753,6 @@ public class Request implements HttpServletRequest return _savedNewSessions.get(key); } - /* ------------------------------------------------------------ */ /** * @param request the Request metadata @@ -1747,6 +1760,7 @@ public class Request implements HttpServletRequest public void setMetaData(org.eclipse.jetty.http.MetaData.Request request) { _metadata=request; + _originalURI=_metadata.getURIString(); setMethod(request.getMethod()); HttpURI uri = request.getURI(); @@ -1803,6 +1817,7 @@ public class Request implements HttpServletRequest protected void recycle() { _metadata=null; + _originalURI=null; if (_context != null) throw new IllegalStateException("Request in context!"); |