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();
     }
 
 }