From b2f6521de1b2323b4ca02466f816b659cf00b45a Mon Sep 17 00:00:00 2001
From: Slava Fomin
Date: Tue, 13 Jun 2017 12:45:51 +0300
Subject: [PATCH 1/4] Adds custom status to bad request response composer
---
.../proxy/BadGatewayFailureHttpResponseComposer.java | 7 ++++++-
.../BadGatewayFailureHttpResponseComposerTest.java | 12 +++++++++---
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java b/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java
index f115332cb..7fe67f272 100644
--- a/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java
+++ b/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java
@@ -20,8 +20,9 @@ public class BadGatewayFailureHttpResponseComposer implements FailureHttpRespons
@Override
public FullHttpResponse compose(HttpRequest httpRequest, Throwable cause) {
String body = provideCustomMessage(httpRequest, cause);
+ HttpResponseStatus status = provideCustomStatus(httpRequest, cause);
- FullHttpResponse response = ProxyUtils.createFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.BAD_GATEWAY, body);
+ FullHttpResponse response = ProxyUtils.createFullHttpResponse(HttpVersion.HTTP_1_1, status, body);
if (ProxyUtils.isHEAD(httpRequest)) {
// don't allow any body content in response to a HEAD request
@@ -39,4 +40,8 @@ public FullHttpResponse compose(HttpRequest httpRequest, Throwable cause) {
protected String provideCustomMessage(HttpRequest httpRequest, Throwable cause) {
return "Bad Gateway: " + httpRequest.getUri();
}
+
+ protected HttpResponseStatus provideCustomStatus(HttpRequest httpRequest, Throwable cause) {
+ return HttpResponseStatus.BAD_GATEWAY;
+ }
}
diff --git a/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java b/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java
index 8a7333e0c..d21e1cf06 100644
--- a/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java
+++ b/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java
@@ -3,6 +3,7 @@
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpRequest;
+import io.netty.handler.codec.http.HttpResponseStatus;
import org.junit.Test;
import java.io.IOException;
@@ -29,12 +30,17 @@ public void testDefault() throws IOException {
}
@Test
- public void testCustomMessage() throws IOException {
+ public void testCustomMessageAndStatus() throws IOException {
FailureHttpResponseComposer badGatewayResponseComposer = new BadGatewayFailureHttpResponseComposer() {
@Override
protected String provideCustomMessage(HttpRequest httpRequest, Throwable cause) {
return "Invalid certificate: " + httpRequest.getUri();
}
+
+ @Override
+ protected HttpResponseStatus provideCustomStatus(HttpRequest httpRequest, Throwable cause) {
+ return new HttpResponseStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR.code(), "Something is wrong");
+ }
};
HttpRequest initialRequest = mock(HttpRequest.class);
@@ -42,8 +48,8 @@ protected String provideCustomMessage(HttpRequest httpRequest, Throwable cause)
FullHttpResponse response = badGatewayResponseComposer.compose(initialRequest, new RuntimeException());
- assertEquals(502, response.getStatus().code());
- assertEquals("Bad Gateway", response.getStatus().reasonPhrase());
+ assertEquals(500, response.getStatus().code());
+ assertEquals("Something is wrong", response.getStatus().reasonPhrase());
assertEquals("Invalid certificate: " + REQUEST_URI, new String(response.content().array()));
}
From c85ae57b681cbc455bfa80a04d98a0cbac979344 Mon Sep 17 00:00:00 2001
From: Slava Fomin
Date: Tue, 13 Jun 2017 12:47:31 +0300
Subject: [PATCH 2/4] bumps up version
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index e895f4e6c..69eb55325 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
org.littleshoot
littleproxy
jar
- 1.1.3.2-VGS-SNAPSHOT
+ 1.1.3.3-VGS-SNAPSHOT
LittleProxy
LittleProxy is a high performance HTTP proxy written in Java and using the Netty networking framework.
From 96b47c8bee9dc716811b7d1ed180df23cb1f8383 Mon Sep 17 00:00:00 2001
From: Slava Fomin
Date: Wed, 14 Jun 2017 18:30:40 +0300
Subject: [PATCH 3/4] Renames BadGatewayFailureHttpResponseComposer
---
...poser.java => DefaultFailureHttpResponseComposer.java} | 2 +-
.../org/littleshoot/proxy/HttpProxyServerBootstrap.java | 2 +-
.../littleshoot/proxy/impl/ClientToProxyConnection.java | 4 ++--
.../littleshoot/proxy/impl/DefaultHttpProxyServer.java | 4 ++--
...t.java => DefaultFailureHttpResponseComposerTest.java} | 8 ++++----
.../proxy/impl/DefaultHttpProxyServerTest.java | 4 ++--
6 files changed, 12 insertions(+), 12 deletions(-)
rename src/main/java/org/littleshoot/proxy/{BadGatewayFailureHttpResponseComposer.java => DefaultFailureHttpResponseComposer.java} (95%)
rename src/test/java/org/littleshoot/proxy/{BadGatewayFailureHttpResponseComposerTest.java => DefaultFailureHttpResponseComposerTest.java} (93%)
diff --git a/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java b/src/main/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposer.java
similarity index 95%
rename from src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java
rename to src/main/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposer.java
index 7fe67f272..15b8c2572 100644
--- a/src/main/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposer.java
+++ b/src/main/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposer.java
@@ -6,7 +6,7 @@
import io.netty.handler.codec.http.HttpVersion;
import org.littleshoot.proxy.impl.ProxyUtils;
-public class BadGatewayFailureHttpResponseComposer implements FailureHttpResponseComposer {
+public class DefaultFailureHttpResponseComposer implements FailureHttpResponseComposer {
/**
* Tells the client that something went wrong trying to proxy its request. If the Bad Gateway is a response to
diff --git a/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java b/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java
index 118205a5e..7d9570500 100644
--- a/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java
+++ b/src/main/java/org/littleshoot/proxy/HttpProxyServerBootstrap.java
@@ -204,7 +204,7 @@ HttpProxyServerBootstrap withFiltersSource(
*
*
*
- * Default = {@link BadGatewayFailureHttpResponseComposer}
+ * Default = {@link DefaultFailureHttpResponseComposer}
*
*
* @param unrecoverableFailureHttpResponseComposer custom response message composer
diff --git a/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java b/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
index f5e6a908b..23df9e252 100644
--- a/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
+++ b/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
@@ -25,7 +25,7 @@
import io.netty.util.concurrent.GenericFutureListener;
import org.apache.commons.lang3.StringUtils;
import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.BadGatewayFailureHttpResponseComposer;
+import org.littleshoot.proxy.DefaultFailureHttpResponseComposer;
import org.littleshoot.proxy.FailureHttpResponseComposer;
import org.littleshoot.proxy.FlowContext;
import org.littleshoot.proxy.FullFlowContext;
@@ -1208,7 +1208,7 @@ private void stripHopByHopHeaders(HttpHeaders headers) {
* @return true if the connection will be kept open, or false if it will be disconnected
*/
private boolean writeBadGateway(HttpRequest httpRequest) {
- FullHttpResponse badGatewayResponse = new BadGatewayFailureHttpResponseComposer().compose(httpRequest, null);
+ FullHttpResponse badGatewayResponse = new DefaultFailureHttpResponseComposer().compose(httpRequest, null);
return respondWithShortCircuitResponse(badGatewayResponse);
}
diff --git a/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java b/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java
index 64bb78cbe..fabc9dc74 100644
--- a/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java
+++ b/src/main/java/org/littleshoot/proxy/impl/DefaultHttpProxyServer.java
@@ -17,7 +17,7 @@
import io.netty.handler.traffic.GlobalTrafficShapingHandler;
import io.netty.util.concurrent.GlobalEventExecutor;
import org.littleshoot.proxy.ActivityTracker;
-import org.littleshoot.proxy.BadGatewayFailureHttpResponseComposer;
+import org.littleshoot.proxy.DefaultFailureHttpResponseComposer;
import org.littleshoot.proxy.ChainedProxyManager;
import org.littleshoot.proxy.DefaultHostResolver;
import org.littleshoot.proxy.DnsSecServerResolver;
@@ -622,7 +622,7 @@ private static class DefaultHttpProxyServerBootstrap implements HttpProxyServerB
private ChainedProxyManager chainProxyManager = null;
private MitmManagerFactory mitmManagerFactory = null;
private HttpFiltersSource filtersSource = new HttpFiltersSourceAdapter();
- private FailureHttpResponseComposer unrecoverableFailureHttpResponseComposer = new BadGatewayFailureHttpResponseComposer();
+ private FailureHttpResponseComposer unrecoverableFailureHttpResponseComposer = new DefaultFailureHttpResponseComposer();
private boolean transparent = false;
private int idleConnectionTimeout = 70;
private Collection activityTrackers = new ConcurrentLinkedQueue();
diff --git a/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java b/src/test/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposerTest.java
similarity index 93%
rename from src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java
rename to src/test/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposerTest.java
index d21e1cf06..1c8466c14 100644
--- a/src/test/java/org/littleshoot/proxy/BadGatewayFailureHttpResponseComposerTest.java
+++ b/src/test/java/org/littleshoot/proxy/DefaultFailureHttpResponseComposerTest.java
@@ -11,13 +11,13 @@
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
-public class BadGatewayFailureHttpResponseComposerTest {
+public class DefaultFailureHttpResponseComposerTest {
private static final String REQUEST_URI = "https://localhost/hi";
@Test
public void testDefault() throws IOException {
- FailureHttpResponseComposer badGatewayResponseComposer = new BadGatewayFailureHttpResponseComposer();
+ FailureHttpResponseComposer badGatewayResponseComposer = new DefaultFailureHttpResponseComposer();
HttpRequest initialRequest = mock(HttpRequest.class);
when(initialRequest.getUri()).thenReturn(REQUEST_URI);
@@ -31,7 +31,7 @@ public void testDefault() throws IOException {
@Test
public void testCustomMessageAndStatus() throws IOException {
- FailureHttpResponseComposer badGatewayResponseComposer = new BadGatewayFailureHttpResponseComposer() {
+ FailureHttpResponseComposer badGatewayResponseComposer = new DefaultFailureHttpResponseComposer() {
@Override
protected String provideCustomMessage(HttpRequest httpRequest, Throwable cause) {
return "Invalid certificate: " + httpRequest.getUri();
@@ -55,7 +55,7 @@ protected HttpResponseStatus provideCustomStatus(HttpRequest httpRequest, Throwa
@Test
public void testClearedContent() throws IOException {
- FailureHttpResponseComposer badGatewayResponseComposer = new BadGatewayFailureHttpResponseComposer();
+ FailureHttpResponseComposer badGatewayResponseComposer = new DefaultFailureHttpResponseComposer();
HttpRequest initialRequest = mock(HttpRequest.class);
when(initialRequest.getUri()).thenReturn(REQUEST_URI);
diff --git a/src/test/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerTest.java b/src/test/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerTest.java
index eb370fc51..ba3148d26 100644
--- a/src/test/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerTest.java
+++ b/src/test/java/org/littleshoot/proxy/impl/DefaultHttpProxyServerTest.java
@@ -3,7 +3,7 @@
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpRequest;
import org.junit.Test;
-import org.littleshoot.proxy.BadGatewayFailureHttpResponseComposer;
+import org.littleshoot.proxy.DefaultFailureHttpResponseComposer;
import org.littleshoot.proxy.FailureHttpResponseComposer;
import static org.junit.Assert.assertTrue;
@@ -13,7 +13,7 @@ public class DefaultHttpProxyServerTest {
@Test
public void testDefaultUnrecoverableFailureHttpResponseComposer() {
DefaultHttpProxyServer httpProxyServer = (DefaultHttpProxyServer) DefaultHttpProxyServer.bootstrap().start();
- assertTrue(httpProxyServer.getUnrecoverableFailureHttpResponseComposer() instanceof BadGatewayFailureHttpResponseComposer);
+ assertTrue(httpProxyServer.getUnrecoverableFailureHttpResponseComposer() instanceof DefaultFailureHttpResponseComposer);
httpProxyServer.stop();
}
From 048aa33ea430b31d69f645daed1ed95ab476badc Mon Sep 17 00:00:00 2001
From: Slava Fomin
Date: Wed, 21 Jun 2017 22:07:46 +0300
Subject: [PATCH 4/4] Removes unused import
---
.../java/org/littleshoot/proxy/impl/ClientToProxyConnection.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java b/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
index 2329f558a..dca696d4b 100644
--- a/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
+++ b/src/main/java/org/littleshoot/proxy/impl/ClientToProxyConnection.java
@@ -26,7 +26,6 @@
import org.apache.commons.lang3.StringUtils;
import org.littleshoot.proxy.ActivityTracker;
import org.littleshoot.proxy.DefaultFailureHttpResponseComposer;
-import org.littleshoot.proxy.BadGatewayFailureHttpResponseComposer;
import org.littleshoot.proxy.ExceptionHandler;
import org.littleshoot.proxy.FailureHttpResponseComposer;
import org.littleshoot.proxy.FlowContext;