summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/net/yacy/cora/protocol/RequestHeader.java30
-rw-r--r--source/net/yacy/http/YaCyHttpServer.java3
-rw-r--r--source/net/yacy/http/servlets/TemplateMissingParameterException.java6
-rw-r--r--source/net/yacy/server/http/ChunkedInputStream.java7
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 {