You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2019/05/19 10:14:02 UTC
[httpcomponents-core] branch bug-fixes created (now b98955e)
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a change to branch bug-fixes
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git.
at b98955e Minor test code cleanups
This branch includes the following new commits:
new 581c703 Consistent logging of i/o session details
new 6bd4bdb HTTPCORE-577: server side HTTP protocol negotiator to propagate exceptions to the i/o event handler associated with the i/o session
new be4471f Fixed possible heap pollution from parameterized vararg type warnings
new b98955e Minor test code cleanups
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[httpcomponents-core] 02/04: HTTPCORE-577: server side HTTP
protocol negotiator to propagate exceptions to the i/o event handler
associated with the i/o session
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch bug-fixes
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git
commit 6bd4bdb8eeabe1458e0029fe9cb0ab61fddc86c5
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun May 19 11:56:59 2019 +0200
HTTPCORE-577: server side HTTP protocol negotiator to propagate exceptions to the i/o event handler associated with the i/o session
---
.../apache/hc/core5/http2/impl/nio/ServerHttpProtocolNegotiator.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttpProtocolNegotiator.java b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttpProtocolNegotiator.java
index 3c811b7..165f10d 100644
--- a/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttpProtocolNegotiator.java
+++ b/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttpProtocolNegotiator.java
@@ -47,6 +47,7 @@ import org.apache.hc.core5.http2.HttpVersionPolicy;
import org.apache.hc.core5.http2.ssl.ApplicationProtocols;
import org.apache.hc.core5.io.CloseMode;
import org.apache.hc.core5.io.SocketTimeoutExceptionFactory;
+import org.apache.hc.core5.reactor.IOEventHandler;
import org.apache.hc.core5.reactor.IOSession;
import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.reactor.ssl.TlsDetails;
@@ -173,6 +174,10 @@ public class ServerHttpProtocolNegotiator implements HttpConnectionEventHandler
@Override
public void exception(final IOSession session, final Exception cause) {
+ final IOEventHandler sessionHandler = ioSession.getHandler();
+ if (sessionHandler != null) {
+ sessionHandler.exception(session, cause);
+ }
session.close(CloseMode.IMMEDIATE);
}
[httpcomponents-core] 04/04: Minor test code cleanups
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch bug-fixes
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git
commit b98955ec5efebfe9196d3e63b389b5b22f071ddb
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun May 19 12:08:58 2019 +0200
Minor test code cleanups
---
.../org/apache/hc/core5/http/message/TestHeaderGroup.java | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestHeaderGroup.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestHeaderGroup.java
index 8c87821..f2646fe 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestHeaderGroup.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestHeaderGroup.java
@@ -118,7 +118,7 @@ public class TestHeaderGroup {
final Header header2 = new BasicHeader("name2", "value2");
final Header header3 = new BasicHeader("name3", "value3");
headergroup.addHeader(header1);
- headergroup.setHeaders(new Header[] { header2, header3 });
+ headergroup.setHeaders(header2, header3);
Assert.assertEquals(2, headergroup.getHeaders().length);
Assert.assertEquals(0, headergroup.getHeaders("name1").length);
Assert.assertFalse(headergroup.containsHeader("name1"));
@@ -126,7 +126,7 @@ public class TestHeaderGroup {
Assert.assertTrue(headergroup.containsHeader("name2"));
Assert.assertEquals(1, headergroup.getHeaders("name3").length);
Assert.assertTrue(headergroup.containsHeader("name3"));
- headergroup.setHeaders(null);
+ headergroup.setHeaders();
Assert.assertEquals(0, headergroup.getHeaders().length);
}
@@ -136,7 +136,7 @@ public class TestHeaderGroup {
final Header header1 = new BasicHeader("name", "value1");
final Header header2 = new BasicHeader("name", "value2");
final Header header3 = new BasicHeader("name", "value3");
- headergroup.setHeaders(new Header[] { header1, header2, header3 });
+ headergroup.setHeaders(header1, header2, header3);
Assert.assertNull(headergroup.getFirstHeader("whatever"));
Assert.assertNull(headergroup.getLastHeader("whatever"));
@@ -153,11 +153,11 @@ public class TestHeaderGroup {
final Header header1 = new BasicHeader("name", "value1");
final Header header2 = new BasicHeader("name", "value2");
final Header header3 = new BasicHeader("name", "value3");
- headergroup.setHeaders(new Header[] { header1, header2, header3 });
+ headergroup.setHeaders(header1, header2, header3);
Assert.assertEquals("value1, value2, value3", headergroup.getCondensedHeader("name").getValue());
- headergroup.setHeaders(new Header[] { header1 });
+ headergroup.setHeaders(header1);
Assert.assertEquals(header1, headergroup.getCondensedHeader("name"));
}
@@ -175,7 +175,7 @@ public class TestHeaderGroup {
final Header header1 = new BasicHeader("name", "value1");
final Header header2 = new BasicHeader("name", "value2");
final Header header3 = new BasicHeader("name", "value3");
- headergroup.setHeaders(new Header[] { header1, header2, header3 });
+ headergroup.setHeaders(header1, header2, header3);
final Iterator<Header> i = headergroup.headerIterator();
Assert.assertNotNull(i);
Assert.assertTrue(i.hasNext());
@@ -197,7 +197,7 @@ public class TestHeaderGroup {
final Header header1 = new BasicHeader("name", "value1");
final Header header2 = new BasicHeader("name", "value2");
final Header header3 = new BasicHeader("name", "value3");
- orig.setHeaders(new Header[] { header1, header2, header3 });
+ orig.setHeaders(header1, header2, header3);
final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
final ObjectOutputStream outStream = new ObjectOutputStream(outbuffer);
outStream.writeObject(orig);
[httpcomponents-core] 03/04: Fixed possible heap pollution from
parameterized vararg type warnings
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch bug-fixes
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git
commit be4471f4fa69e4ac7566133eca09950ab4bed828
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun May 19 12:08:33 2019 +0200
Fixed possible heap pollution from parameterized vararg type warnings
---
.../main/java/org/apache/hc/core5/http/protocol/ChainBuilder.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ChainBuilder.java b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ChainBuilder.java
index 9eaa282..d9d0e81 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ChainBuilder.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ChainBuilder.java
@@ -86,7 +86,8 @@ final class ChainBuilder<E> {
return this;
}
- public ChainBuilder<E> addAllFirst(final E... c) {
+ @SafeVarargs
+ public final ChainBuilder<E> addAllFirst(final E... c) {
if (c == null) {
return this;
}
@@ -106,7 +107,8 @@ final class ChainBuilder<E> {
return this;
}
- public ChainBuilder<E> addAllLast(final E... c) {
+ @SafeVarargs
+ public final ChainBuilder<E> addAllLast(final E... c) {
if (c == null) {
return this;
}
[httpcomponents-core] 01/04: Consistent logging of i/o session
details
Posted by ol...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch bug-fixes
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git
commit 581c7038eeb10a4b4948578d23007a17fc3c3d6a
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sun May 19 11:54:03 2019 +0200
Consistent logging of i/o session details
---
.../testing/nio/LoggingIOSessionListener.java | 31 +++++++++++++++-------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSessionListener.java b/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSessionListener.java
index 74e66f7..6a785ca 100644
--- a/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSessionListener.java
+++ b/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSessionListener.java
@@ -28,11 +28,12 @@
package org.apache.hc.core5.testing.nio;
import org.apache.hc.core5.http.ConnectionClosedException;
+import org.apache.hc.core5.net.InetAddressUtils;
import org.apache.hc.core5.reactor.IOSession;
import org.apache.hc.core5.reactor.IOSessionListener;
import org.apache.hc.core5.testing.classic.LoggingSupport;
-import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class LoggingIOSessionListener implements IOSessionListener {
@@ -46,49 +47,49 @@ public class LoggingIOSessionListener implements IOSessionListener {
@Override
public void tlsStarted(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " TLS session started: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " TLS session started: " + formatSession(session));
}
}
@Override
public void tlsInbound(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " TLS inbound: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " TLS inbound: " + formatSession(session));
}
}
@Override
public void tlsOutbound(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " TLS outbound: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " TLS outbound: " + formatSession(session));
}
}
@Override
public void connected(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " connected: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " connected: " + formatSession(session));
}
}
@Override
public void inputReady(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " input ready: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " input ready: " + formatSession(session));
}
}
@Override
public void outputReady(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " output ready: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " output ready: " + formatSession(session));
}
}
@Override
public void timeout(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " timeout: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " timeout: " + formatSession(session));
}
}
@@ -103,8 +104,20 @@ public class LoggingIOSessionListener implements IOSessionListener {
@Override
public void disconnected(final IOSession session) {
if (connLog.isDebugEnabled()) {
- connLog.debug(LoggingSupport.getId(session) + " disconnected: " + session);
+ connLog.debug(LoggingSupport.getId(session) + " disconnected");
+ }
+ }
+
+ private static String formatSession(final IOSession session) {
+ final StringBuilder buffer = new StringBuilder(90);
+ if (session.isClosed()) {
+ buffer.append("closed");
+ } else {
+ InetAddressUtils.formatAddress(buffer, session.getLocalAddress());
+ buffer.append("<->");
+ InetAddressUtils.formatAddress(buffer, session.getRemoteAddress());
}
+ return buffer.toString();
}
}