diff options
4 files changed, 29 insertions, 17 deletions
diff --git a/source/net/yacy/cora/protocol/RequestHeader.java b/source/net/yacy/cora/protocol/RequestHeader.java index 5c578b1c6..202be51da 100644 --- a/source/net/yacy/cora/protocol/RequestHeader.java +++ b/source/net/yacy/cora/protocol/RequestHeader.java @@ -25,9 +25,11 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.security.Principal; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Enumeration; +import java.util.List; import java.util.Locale; import java.util.Map; import javax.servlet.AsyncContext; @@ -48,8 +50,6 @@ import javax.servlet.http.Part; import net.yacy.cora.document.id.DigestURL; import net.yacy.cora.document.id.MultiProtocolURL; import net.yacy.cora.util.NumberTools; -import org.eclipse.jetty.server.CookieCutter; -import org.eclipse.jetty.util.URIUtil; /** * YaCy servlet request header. @@ -235,9 +235,22 @@ public class RequestHeader extends HeaderFramework implements HttpServletRequest } String cstr = super.get(COOKIE); if (cstr != null) { - CookieCutter cc = new CookieCutter(); // reuse jetty cookie parser - cc.addCookieField(cstr); - return cc.getCookies(); + // parse the Cookie request header (RFC 6265: pairs separated by ';') + final List<Cookie> cookies = new ArrayList<Cookie>(); + for (final String pair: cstr.split(";")) { + final int eq = pair.indexOf('='); + if (eq < 0) continue; + final String name = pair.substring(0, eq).trim(); + String value = pair.substring(eq + 1).trim(); + if (value.length() > 1 && value.charAt(0) == '"' && value.endsWith("\"")) value = value.substring(1, value.length() - 1); + if (name.isEmpty() || name.charAt(0) == '$') continue; // skip RFC 2965 attributes + try { + cookies.add(new Cookie(name, value)); + } catch (final IllegalArgumentException e) { + // skip cookie with a name not accepted by the servlet API (reserved token) + } + } + return cookies.isEmpty() ? null : cookies.toArray(new Cookie[cookies.size()]); } return null; } @@ -377,7 +390,12 @@ public class RequestHeader extends HeaderFramework implements HttpServletRequest return _request.getRequestURL(); } StringBuffer sbuf = new StringBuffer(32); - URIUtil.appendSchemeHostPort(sbuf, this.getScheme(), this.getServerName(), this.getServerPort()); + final String scheme = this.getScheme(); + final int port = this.getServerPort(); + sbuf.append(scheme).append("://").append(this.getServerName()); + if (port > 0 && !(("http".equals(scheme) && port == 80) || ("https".equals(scheme) && port == 443))) { + sbuf.append(':').append(port); + } sbuf.append(this.getRequestURI()); return sbuf; } diff --git a/source/net/yacy/http/YaCyHttpServer.java b/source/net/yacy/http/YaCyHttpServer.java index f53eb7f68..b4844eb78 100644 --- a/source/net/yacy/http/YaCyHttpServer.java +++ b/source/net/yacy/http/YaCyHttpServer.java @@ -47,7 +47,6 @@ import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.InetAccessHandler; import org.eclipse.jetty.server.handler.gzip.GzipHandler; import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.ProcessorUtils; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.ssl.SslContextFactory; @@ -75,7 +74,7 @@ public class YaCyHttpServer { this.server = new Server(); - final int cores = ProcessorUtils.availableProcessors(); + final int cores = Runtime.getRuntime().availableProcessors(); final int acceptors = Math.max(1, Math.min(4, cores/2)); // original: Math.max(1, Math.min(4,cores/8)); final HttpConfiguration httpConfig = new HttpConfiguration(); diff --git a/source/net/yacy/http/servlets/TemplateMissingParameterException.java b/source/net/yacy/http/servlets/TemplateMissingParameterException.java index 93db3caf7..2c18f560b 100644 --- a/source/net/yacy/http/servlets/TemplateMissingParameterException.java +++ b/source/net/yacy/http/servlets/TemplateMissingParameterException.java @@ -21,7 +21,7 @@ package net.yacy.http.servlets; -import org.eclipse.jetty.http.HttpStatus; +import javax.servlet.http.HttpServletResponse; /** * Use this to indicates a required parameter is missing for a servlet template, @@ -38,14 +38,14 @@ public class TemplateMissingParameterException extends TemplateProcessingExcepti * Default constructor : use generic message. */ public TemplateMissingParameterException() { - super("Missing required parameters", HttpStatus.BAD_REQUEST_400); + super("Missing required parameters", HttpServletResponse.SC_BAD_REQUEST); } /** * @param message detail message */ public TemplateMissingParameterException(final String message) { - super(message, HttpStatus.BAD_REQUEST_400); + super(message, HttpServletResponse.SC_BAD_REQUEST); } } diff --git a/source/net/yacy/server/http/ChunkedInputStream.java b/source/net/yacy/server/http/ChunkedInputStream.java index eef30c530..dac60cc77 100644 --- a/source/net/yacy/server/http/ChunkedInputStream.java +++ b/source/net/yacy/server/http/ChunkedInputStream.java @@ -39,8 +39,6 @@ import java.io.InputStream; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import org.eclipse.jetty.http.HttpMethod; - /** * <p>Transparently coalesces chunks of a HTTP stream that uses @@ -104,14 +102,11 @@ public class ChunkedInputStream extends InputStream { * is followed by a CRLF. The method returns -1 as soon as a chunksize of 0 * is detected.</p> * - * <p> Trailer headers are read automcatically at the end of the stream and - * can be obtained with the getResponseFooters() method.</p> + * <p> Trailer headers are read automcatically at the end of the stream.</p> * * @return -1 of the end of the stream has been reached or the next data * byte * @throws IOException If an IO problem occurs - * - * @see HttpMethod#getResponseFooters() */ @Override public int read() throws IOException { |
