Skip to content

Commit 3ed7685

Browse files
committed
Merge pull request AsyncHttpClient#165 from bric3/ahc-1.7.x
Offer a way to configure the max header size in Grizzly Provider
2 parents e9e4df9 + 0ab1e7d commit 3ed7685

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import com.ning.http.util.AuthenticatorUtils;
5252
import com.ning.http.util.ProxyUtils;
5353
import com.ning.http.util.SslUtils;
54-
5554
import org.glassfish.grizzly.Buffer;
5655
import org.glassfish.grizzly.CompletionHandler;
5756
import org.glassfish.grizzly.Connection;
@@ -77,13 +76,12 @@
7776
import org.glassfish.grizzly.http.HttpResponsePacket;
7877
import org.glassfish.grizzly.http.Method;
7978
import org.glassfish.grizzly.http.Protocol;
80-
import org.glassfish.grizzly.impl.FutureImpl;
81-
import org.glassfish.grizzly.utils.Charsets;
8279
import org.glassfish.grizzly.http.util.CookieSerializerUtils;
8380
import org.glassfish.grizzly.http.util.DataChunk;
8481
import org.glassfish.grizzly.http.util.Header;
8582
import org.glassfish.grizzly.http.util.HttpStatus;
8683
import org.glassfish.grizzly.http.util.MimeHeaders;
84+
import org.glassfish.grizzly.impl.FutureImpl;
8785
import org.glassfish.grizzly.impl.SafeFutureImpl;
8886
import org.glassfish.grizzly.memory.Buffers;
8987
import org.glassfish.grizzly.memory.MemoryManager;
@@ -95,6 +93,7 @@
9593
import org.glassfish.grizzly.strategies.SameThreadIOStrategy;
9694
import org.glassfish.grizzly.strategies.WorkerThreadIOStrategy;
9795
import org.glassfish.grizzly.utils.BufferOutputStream;
96+
import org.glassfish.grizzly.utils.Charsets;
9897
import org.glassfish.grizzly.utils.DelayedExecutor;
9998
import org.glassfish.grizzly.utils.Futures;
10099
import org.glassfish.grizzly.utils.IdleTimeoutFilter;
@@ -135,6 +134,7 @@
135134
import java.util.concurrent.atomic.AtomicInteger;
136135
import java.util.concurrent.atomic.AtomicLong;
137136

137+
import static com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProviderConfig.Property.MAX_HTTP_PACKET_HEADER_SIZE;
138138
import static com.ning.http.client.providers.grizzly.GrizzlyAsyncHttpProviderConfig.Property.TRANSPORT_CUSTOMIZER;
139139

140140
/**
@@ -370,8 +370,12 @@ public void onTimeout(Connection connection) {
370370
false);
371371
final SwitchingSSLFilter filter = new SwitchingSSLFilter(configurator, defaultSecState);
372372
fcb.add(filter);
373+
final GrizzlyAsyncHttpProviderConfig providerConfig =
374+
clientConfig.getAsyncHttpProviderConfig() instanceof GrizzlyAsyncHttpProviderConfig ?
375+
(GrizzlyAsyncHttpProviderConfig) clientConfig.getAsyncHttpProviderConfig()
376+
: new GrizzlyAsyncHttpProviderConfig();
373377
final AsyncHttpClientEventFilter eventFilter = new
374-
AsyncHttpClientEventFilter(this);
378+
AsyncHttpClientEventFilter(this, (Integer) providerConfig.getProperty(MAX_HTTP_PACKET_HEADER_SIZE));
375379
final AsyncHttpClientFilter clientFilter =
376380
new AsyncHttpClientFilter(clientConfig);
377381
ContentEncoding[] encodings = eventFilter.getContentEncodings();
@@ -389,8 +393,6 @@ public void onTimeout(Connection connection) {
389393
fcb.add(eventFilter);
390394
fcb.add(clientFilter);
391395

392-
GrizzlyAsyncHttpProviderConfig providerConfig =
393-
(GrizzlyAsyncHttpProviderConfig) clientConfig.getAsyncHttpProviderConfig();
394396
if (providerConfig != null) {
395397
final TransportCustomizer customizer = (TransportCustomizer)
396398
providerConfig.getProperty(TRANSPORT_CUSTOMIZER);
@@ -1069,15 +1071,15 @@ private static final class AsyncHttpClientEventFilter extends HttpClientFilter {
10691071

10701072
private final GrizzlyAsyncHttpProvider provider;
10711073

1072-
10731074
// -------------------------------------------------------- Constructors
10741075

10751076

1076-
AsyncHttpClientEventFilter(final GrizzlyAsyncHttpProvider provider) {
1077+
AsyncHttpClientEventFilter(final GrizzlyAsyncHttpProvider provider, int maxHerdersSizeProperty) {
1078+
super(maxHerdersSizeProperty);
10771079

10781080
this.provider = provider;
10791081
HANDLER_MAP.put(HttpStatus.UNAUTHORIZED_401.getStatusCode(),
1080-
AuthorizationHandler.INSTANCE);
1082+
AuthorizationHandler.INSTANCE);
10811083
HANDLER_MAP.put(HttpStatus.MOVED_PERMANENTLY_301.getStatusCode(),
10821084
RedirectHandler.INSTANCE);
10831085
HANDLER_MAP.put(HttpStatus.FOUND_302.getStatusCode(),

src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProviderConfig.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.ning.http.client.providers.grizzly;
1515

1616
import com.ning.http.client.AsyncHttpProviderConfig;
17+
import org.glassfish.grizzly.http.HttpCodecFilter;
1718
import org.glassfish.grizzly.nio.transport.TCPNIOTransport;
1819

1920
import java.util.HashMap;
@@ -49,7 +50,17 @@ public static enum Property {
4950
*
5051
* @see TransportCustomizer
5152
*/
52-
TRANSPORT_CUSTOMIZER(TransportCustomizer.class);
53+
TRANSPORT_CUSTOMIZER(TransportCustomizer.class),
54+
55+
56+
/**
57+
* Defines the maximum HTTP packet header size.
58+
*/
59+
MAX_HTTP_PACKET_HEADER_SIZE(Integer.class, HttpCodecFilter.DEFAULT_MAX_HTTP_PACKET_HEADER_SIZE),
60+
61+
62+
63+
;
5364

5465

5566
final Object defaultValue;

0 commit comments

Comments
 (0)