diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java
index a04ffe7af..1fe7c28fe 100644
--- a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java
+++ b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxy.java
@@ -598,6 +598,12 @@ public interface BrowserMobProxy {
*/
void addResponseFilter(ResponseFilter filter);
+ /**
+ * Adds a new ResponseFilter that can be used to examine and manipulate the response before sending it to the client.
+ *
+ * @param filter filter instance
+ */
+ void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int size);
/**
* Adds a new RequestFilter that can be used to examine and manipulate the request before sending it to the server.
*
diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java
index d4ddc5543..250c76adc 100644
--- a/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java
+++ b/browsermob-core/src/main/java/net/lightbody/bmp/BrowserMobProxyServer.java
@@ -937,6 +937,16 @@ public void addResponseFilter(ResponseFilter filter) {
addLastHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter));
}
+ /**
+ * Note: The current implementation of this method forces a maximum response size of 2 MiB. To adjust the maximum response size, or
+ * to disable aggregation (which disallows access to the {@link net.lightbody.bmp.util.HttpMessageContents}), you may add the filter source
+ * directly: addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, bufferSizeInBytes));
+ */
+ @Override
+ public void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int bufferSize) {
+ addLastHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, bufferSize));
+ }
+
/**
* Note: The current implementation of this method forces a maximum request size of 2 MiB. To adjust the maximum request size, or
* to disable aggregation (which disallows access to the {@link net.lightbody.bmp.util.HttpMessageContents}), you may add the filter source
diff --git a/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java b/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java
index 29c5f897f..29693d744 100644
--- a/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java
+++ b/browsermob-legacy/src/main/java/net/lightbody/bmp/proxy/ProxyServer.java
@@ -930,6 +930,11 @@ public void addResponseFilter(ResponseFilter filter) {
LOG.warn("The legacy ProxyServer implementation does not support addRequestFilter and addResponseFilter. Use addRequestInterceptor/addResponseInterceptor instead.");
}
+ @Override
+ public void addResponseFilterWithCustomBufferSize(ResponseFilter filter, int bufferSize) {
+ LOG.warn("The legacy ProxyServer implementation does not support addResquestFilterWithCustomBufferSize and addResponseFilterWithCustomBufferSize. Use addRequestInterceptor/addResponseInterceptor instead.");
+ }
+
@Override
public void addRequestFilter(RequestFilter filter) {
LOG.warn("The legacy ProxyServer implementation does not support addRequestFilter and addResponseFilter. Use addRequestInterceptor/addResponseInterceptor instead.");
diff --git a/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java b/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java
index 07654db32..d206d97e2 100644
--- a/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java
+++ b/browsermob-rest/src/main/java/net/lightbody/bmp/proxy/bricks/ProxyResource.java
@@ -407,7 +407,17 @@ public Reply> addResponseFilter(@Named("port") int port, Request reque
String script = getEntityBodyFromRequest(request);
requestResponseFilter.setResponseFilterScript(script);
- proxy.addResponseFilter(requestResponseFilter);
+ String bufferSize = request.param("bufferSize");
+ if (bufferSize != null && !bufferSize.isEmpty()) {
+ try {
+ proxy.addResponseFilterWithCustomBufferSize(requestResponseFilter, Integer.parseInt(bufferSize));
+ } catch(Exception e) {
+ proxy.addResponseFilter(requestResponseFilter);
+ }
+ }
+ else {
+ proxy.addResponseFilter(requestResponseFilter);
+ }
return Reply.saying().ok();
}
diff --git a/pom.xml b/pom.xml
index 02abf2bb5..e69911490 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,7 +68,7 @@
3.0.2
- 2.9.0
+ 2.16.0
2.4.12
2.4.3-01