From 05f4367790ea55393c9005602ddb75bd03757ca6 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 14 Jan 2014 10:36:11 +0100 Subject: [PATCH] Improved handling of BEGIN_REQUEST flags. --- .../org/eclipse/jetty/fcgi/generator/ClientGenerator.java | 1 + .../jetty/fcgi/parser/BeginRequestContentParser.java | 8 ++++---- .../java/org/eclipse/jetty/fcgi/parser/ServerParser.java | 4 ++-- .../eclipse/jetty/fcgi/server/ServerFCGIConnection.java | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java index ef30c7ad6d2..ce4e869a924 100644 --- a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java +++ b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java @@ -86,6 +86,7 @@ public class ClientGenerator extends Generator // Generate the FCGI_BEGIN_REQUEST frame beginRequestBuffer.putInt(0x01_01_00_00 + request); beginRequestBuffer.putInt(0x00_08_00_00); + // Hardcode RESPONDER role and KEEP_ALIVE flag beginRequestBuffer.putLong(0x00_01_01_00_00_00_00_00L); beginRequestBuffer.flip(); diff --git a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java index 17e9efea921..210d3fdd0b5 100644 --- a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java +++ b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java @@ -76,7 +76,7 @@ public class BeginRequestContentParser extends ContentParser if (buffer.remaining() >= 5) { buffer.position(buffer.position() + 5); - onStart(getRequest(), role); + onStart(); reset(); return true; } @@ -92,7 +92,7 @@ public class BeginRequestContentParser extends ContentParser buffer.get(); if (++cursor == 5) { - onStart(getRequest(), role); + onStart(); reset(); return true; } @@ -107,9 +107,9 @@ public class BeginRequestContentParser extends ContentParser return false; } - private void onStart(int request, int role) + private void onStart() { - listener.onStart(request, FCGI.Role.from(role)); + listener.onStart(getRequest(), FCGI.Role.from(role), flags); } private void reset() diff --git a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java index 1b049ca122f..124fcf0b61d 100644 --- a/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java +++ b/fcgi-core/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java @@ -41,12 +41,12 @@ public class ServerParser extends Parser public interface Listener extends Parser.Listener { - public void onStart(int request, FCGI.Role role); + public void onStart(int request, FCGI.Role role, int flags); public static class Adapter extends Parser.Listener.Adapter implements Listener { @Override - public void onStart(int request, FCGI.Role role) + public void onStart(int request, FCGI.Role role, int flags) { } } diff --git a/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnection.java b/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnection.java index 4f1bba8ddfd..296de57bda1 100644 --- a/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnection.java +++ b/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnection.java @@ -115,8 +115,9 @@ public class ServerFCGIConnection extends AbstractConnection private class ServerListener implements ServerParser.Listener { @Override - public void onStart(int request, FCGI.Role role) + public void onStart(int request, FCGI.Role role, int flags) { + // TODO: handle flags HttpChannelOverFCGI channel = new HttpChannelOverFCGI(connector, configuration, getEndPoint(), new HttpTransportOverFCGI(connector.getByteBufferPool(), flusher, request), new ByteBufferQueuedHttpInput()); HttpChannelOverFCGI existing = channels.putIfAbsent(request, channel);