hc-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ol...@apache.org
Subject svn commit: r1761318 [7/8] - in /httpcomponents/httpcore/trunk: httpcore5-h2/src/main/java/org/apache/hc/core5/http2/ httpcore5-h2/src/main/java/org/apache/hc/core5/http2/config/ httpcore5-h2/src/main/java/org/apache/hc/core5/http2/frame/ httpcore5-h2/...
Date Sun, 18 Sep 2016 11:29:33 GMT
Added: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java?rev=1761318&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java (added)
+++ httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java Sun Sep 18 11:29:30 2016
@@ -0,0 +1,242 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.hc.core5.http2.nio.entity;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.hc.core5.http2.nio.CapacityChannel;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class TestSharedInputBuffer {
+
+    @Test
+    public void testBasis() throws Exception {
+
+        final Charset charset = StandardCharsets.US_ASCII;
+        final SharedInputBuffer inputBuffer = new SharedInputBuffer(10);
+        inputBuffer.fill(charset.encode("1234567890"));
+        Assert.assertEquals(10, inputBuffer.length());
+
+        final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class);
+
+        inputBuffer.updateCapacity(capacityChannel);
+        Mockito.verifyZeroInteractions(capacityChannel);
+
+        inputBuffer.fill(charset.encode("1234567890"));
+        inputBuffer.fill(charset.encode("1234567890"));
+        Assert.assertEquals(30, inputBuffer.length());
+
+        Mockito.verifyZeroInteractions(capacityChannel);
+
+        final byte[] tmp = new byte[20];
+        final int bytesRead1 = inputBuffer.read(tmp, 0, tmp.length);
+        Assert.assertEquals(20, bytesRead1);
+        Mockito.verifyZeroInteractions(capacityChannel);
+
+        inputBuffer.markEndStream();
+
+        Assert.assertEquals('1', inputBuffer.read());
+        Assert.assertEquals('2', inputBuffer.read());
+        final int bytesRead2 = inputBuffer.read(tmp, 0, tmp.length);
+        Assert.assertEquals(8, bytesRead2);
+        Mockito.verifyZeroInteractions(capacityChannel);
+        Assert.assertEquals(-1, inputBuffer.read(tmp, 0, tmp.length));
+        Assert.assertEquals(-1, inputBuffer.read(tmp, 0, tmp.length));
+        Assert.assertEquals(-1, inputBuffer.read());
+        Assert.assertEquals(-1, inputBuffer.read());
+    }
+
+    @Test
+    public void testMultithreadingRead() throws Exception {
+
+        final SharedInputBuffer inputBuffer = new SharedInputBuffer(10);
+
+        final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class);
+
+        inputBuffer.updateCapacity(capacityChannel);
+        Mockito.verify(capacityChannel).update(10);
+        Mockito.reset(capacityChannel);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                final Charset charset = StandardCharsets.US_ASCII;
+                inputBuffer.fill(charset.encode("1234567890"));
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<Integer> task2 = executorService.submit(new Callable<Integer>() {
+
+            @Override
+            public Integer call() throws Exception {
+                final byte[] tmp = new byte[20];
+                return inputBuffer.read(tmp, 0, tmp.length);
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task1.get(5, TimeUnit.SECONDS));
+        Assert.assertEquals(Integer.valueOf(10), task2.get(5, TimeUnit.SECONDS));
+        Mockito.verify(capacityChannel).update(10);
+    }
+
+    @Test
+    public void testMultithreadingSingleRead() throws Exception {
+
+        final SharedInputBuffer inputBuffer = new SharedInputBuffer(10);
+
+        final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class);
+
+        inputBuffer.updateCapacity(capacityChannel);
+        Mockito.verify(capacityChannel).update(10);
+        Mockito.reset(capacityChannel);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                final Charset charset = StandardCharsets.US_ASCII;
+                inputBuffer.fill(charset.encode("a"));
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<Integer> task2 = executorService.submit(new Callable<Integer>() {
+
+            @Override
+            public Integer call() throws Exception {
+                return inputBuffer.read();
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task1.get(5, TimeUnit.SECONDS));
+        Assert.assertEquals(Integer.valueOf('a'), task2.get(5, TimeUnit.SECONDS));
+        Mockito.verify(capacityChannel).update(10);
+    }
+
+    @Test
+    public void testMultithreadingReadStream() throws Exception {
+
+        final SharedInputBuffer inputBuffer = new SharedInputBuffer(10);
+
+        final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class);
+
+        inputBuffer.updateCapacity(capacityChannel);
+        Mockito.verify(capacityChannel).update(10);
+        Mockito.reset(capacityChannel);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                final Charset charset = StandardCharsets.US_ASCII;
+                final Random rnd = new Random(System.currentTimeMillis());
+                for (int i = 0; i < 5; i++) {
+                    inputBuffer.fill(charset.encode("1234567890"));
+                    Thread.sleep(rnd.nextInt(250));
+                }
+                inputBuffer.markEndStream();
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<String> task2 = executorService.submit(new Callable<String>() {
+
+            @Override
+            public String call() throws Exception {
+                final Charset charset = StandardCharsets.US_ASCII;
+                final StringBuilder buf = new StringBuilder();
+                final byte[] tmp = new byte[10];
+                int l;
+                while ((l = inputBuffer.read(tmp, 0, tmp.length)) != -1) {
+                    buf.append(charset.decode(ByteBuffer.wrap(tmp, 0, l)));
+                }
+                return buf.toString();
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task1.get(5, TimeUnit.SECONDS));
+        Assert.assertEquals("12345678901234567890123456789012345678901234567890", task2.get(5, TimeUnit.SECONDS));
+        Mockito.verify(capacityChannel, Mockito.atLeast(1)).update(10);
+    }
+
+    @Test
+    public void testMultithreadingReadStreamAbort() throws Exception {
+
+        final SharedInputBuffer inputBuffer = new SharedInputBuffer(10);
+
+        final CapacityChannel capacityChannel = Mockito.mock(CapacityChannel.class);
+
+        inputBuffer.updateCapacity(capacityChannel);
+        Mockito.verify(capacityChannel).update(10);
+        Mockito.reset(capacityChannel);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                Thread.sleep(1000);
+                inputBuffer.abort();
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<Integer> task2 = executorService.submit(new Callable<Integer>() {
+
+            @Override
+            public Integer call() throws Exception {
+                return inputBuffer.read();
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task1.get(5, TimeUnit.SECONDS));
+        Assert.assertEquals(Integer.valueOf(-1), task2.get(5, TimeUnit.SECONDS));
+        Mockito.verify(capacityChannel, Mockito.never()).update(10);
+    }
+
+}
+

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedInputBuffer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java?rev=1761318&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java (added)
+++ httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java Sun Sep 18 11:29:30 2016
@@ -0,0 +1,231 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.hc.core5.http2.nio.entity;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http2.WritableByteChannelMock;
+import org.apache.hc.core5.http2.nio.DataStreamChannel;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class TestSharedOutputBuffer {
+
+    static class DataStreamChannelMock implements DataStreamChannel {
+
+        private final WritableByteChannelMock channel;
+
+        DataStreamChannelMock(final WritableByteChannelMock channel) {
+            this.channel = channel;
+        }
+
+        @Override
+        public synchronized int write(final ByteBuffer src) throws IOException {
+            return channel.write(src);
+        }
+
+        @Override
+        public synchronized  void requestOutput() {
+            notifyAll();
+        }
+
+        @Override
+        public synchronized void endStream(final List<Header> trailers) throws IOException {
+            channel.close();
+            notifyAll();
+        }
+
+        @Override
+        public void endStream() throws IOException {
+            endStream(null);
+        }
+
+        public synchronized void awaitOutputRequest() throws InterruptedException {
+            wait();
+        }
+
+    }
+
+    @Test
+    public void testBasis() throws Exception {
+
+        final Charset charset = StandardCharsets.US_ASCII;
+        final SharedOutputBuffer outputBuffer = new SharedOutputBuffer(30);
+
+        final WritableByteChannelMock channel = new WritableByteChannelMock(1024);
+        final DataStreamChannel dataStreamChannel = Mockito.spy(new DataStreamChannelMock(channel));
+        outputBuffer.flush(dataStreamChannel);
+
+        Mockito.verifyZeroInteractions(dataStreamChannel);
+
+        Assert.assertEquals(0, outputBuffer.length());
+        Assert.assertEquals(30, outputBuffer.available());
+
+        final byte[] tmp = "1234567890".getBytes(charset);
+        outputBuffer.write(tmp, 0, tmp.length);
+        outputBuffer.write(tmp, 0, tmp.length);
+        outputBuffer.write('1');
+        outputBuffer.write('2');
+
+        Assert.assertEquals(22, outputBuffer.length());
+        Assert.assertEquals(8, outputBuffer.available());
+
+        Mockito.verifyZeroInteractions(dataStreamChannel);
+    }
+
+    @Test
+    public void testFlush() throws Exception {
+
+        final Charset charset = StandardCharsets.US_ASCII;
+        final SharedOutputBuffer outputBuffer = new SharedOutputBuffer(30);
+
+        final WritableByteChannelMock channel = new WritableByteChannelMock(1024);
+        final DataStreamChannel dataStreamChannel = new DataStreamChannelMock(channel);
+        outputBuffer.flush(dataStreamChannel);
+
+        Assert.assertEquals(0, outputBuffer.length());
+        Assert.assertEquals(30, outputBuffer.available());
+
+        final byte[] tmp = "1234567890".getBytes(charset);
+        outputBuffer.write(tmp, 0, tmp.length);
+        outputBuffer.write(tmp, 0, tmp.length);
+        outputBuffer.write('1');
+        outputBuffer.write('2');
+
+        outputBuffer.flush(dataStreamChannel);
+
+        Assert.assertEquals(0, outputBuffer.length());
+        Assert.assertEquals(30, outputBuffer.available());
+    }
+
+    @Test
+    public void testMultithreadingWriteStream() throws Exception {
+
+        final Charset charset = StandardCharsets.US_ASCII;
+        final SharedOutputBuffer outputBuffer = new SharedOutputBuffer(20);
+
+        final WritableByteChannelMock channel = new WritableByteChannelMock(1024);
+        final DataStreamChannelMock dataStreamChannel = new DataStreamChannelMock(channel);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                final byte[] tmp = "1234567890".getBytes(charset);
+                outputBuffer.write(tmp, 0, tmp.length);
+                outputBuffer.write(tmp, 0, tmp.length);
+                outputBuffer.write('1');
+                outputBuffer.write('2');
+                outputBuffer.write(tmp, 0, tmp.length);
+                outputBuffer.write(tmp, 0, tmp.length);
+                outputBuffer.write(tmp, 0, tmp.length);
+                outputBuffer.writeCompleted();
+                outputBuffer.writeCompleted();
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<Boolean> task2 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                for (;;) {
+                    outputBuffer.flush(dataStreamChannel);
+                    if (outputBuffer.isEndStream()) {
+                        break;
+                    }
+                    if (!outputBuffer.hasData()) {
+                        dataStreamChannel.awaitOutputRequest();
+                    }
+                }
+                return Boolean.TRUE;
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task1.get(5, TimeUnit.SECONDS));
+        Assert.assertEquals(Boolean.TRUE, task2.get(5, TimeUnit.SECONDS));
+
+        Assert.assertEquals("1234567890123456789012123456789012345678901234567890", new String(channel.toByteArray(), charset));
+    }
+
+    @Test
+    public void testMultithreadingWriteStreamAbort() throws Exception {
+
+        final Charset charset = StandardCharsets.US_ASCII;
+        final SharedOutputBuffer outputBuffer = new SharedOutputBuffer(20);
+
+        final ExecutorService executorService = Executors.newFixedThreadPool(2);
+        final Future<Boolean> task1 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                final byte[] tmp = "1234567890".getBytes(charset);
+                for (int i = 0; i < 20; i++) {
+                    outputBuffer.write(tmp, 0, tmp.length);
+                }
+                outputBuffer.writeCompleted();
+                return Boolean.TRUE;
+            }
+
+        });
+        final Future<Boolean> task2 = executorService.submit(new Callable<Boolean>() {
+
+            @Override
+            public Boolean call() throws Exception {
+                Thread.sleep(200);
+                outputBuffer.abort();
+                return Boolean.TRUE;
+            }
+
+        });
+
+        Assert.assertEquals(Boolean.TRUE, task2.get(5, TimeUnit.SECONDS));
+        try {
+            task1.get(5, TimeUnit.SECONDS);
+        } catch (ExecutionException ex) {
+            Assert.assertTrue(ex.getCause() instanceof InterruptedIOException);
+        }
+    }
+
+}
+

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: httpcomponents/httpcore/trunk/httpcore5-h2/src/test/java/org/apache/hc/core5/http2/nio/entity/TestSharedOutputBuffer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpStatus.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpStatus.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpStatus.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpStatus.java Sun Sep 18 11:29:30 2016
@@ -133,6 +133,8 @@ public interface HttpStatus {
     public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
     /** {@code 417 Expectation Failed} (HTTP/1.1 - RFC 2616) */
     public static final int SC_EXPECTATION_FAILED = 417;
+    /** {@code 421 Misdirected Request} (HTTP/2 - RFC 7540) */
+    public static final int SC_MISDIRECTED_REQUEST = 421;
 
     /**
      * Static constant for a 418 error.

Copied: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java (from r1761317, httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/frame/H2Setting.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java?p2=httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java&p1=httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/frame/H2Setting.java&r1=1761317&r2=1761318&rev=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/frame/H2Setting.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java Sun Sep 18 11:29:30 2016
@@ -24,39 +24,43 @@
  * <http://www.apache.org/>.
  *
  */
-package org.apache.hc.core5.http2.frame;
 
-import org.apache.hc.core5.util.Args;
+package org.apache.hc.core5.http;
 
-public final class H2Setting {
+import org.apache.hc.core5.util.Args;
 
-    private final H2Param param;
-    private final int value;
+/**
+ * Generic message consisting of a message head and a message body.
+ *
+ * @param <H> message head type.
+ * @param <B> message body type.
+ *
+ * @since 5.0
+ */
+public final class Message<H extends MessageHeaders, B> {
 
-    public H2Setting(final H2Param param, final int value) {
-        Args.notNull(param, "Setting parameter");
-        Args.notNegative(value, "Setting value must be a non-negative value");
-        this.param = param;
-        this.value = value;
-    }
+    private final H head;
+    private final B body;
 
-    public H2Setting(final H2Param param) {
-        Args.notNull(param, "Setting parameter");
-        this.param = param;
-        this.value = param.initialValue;
+    public Message(final H head, final B body) {
+        this.head = Args.notNull(head, "Message head");
+        this.body = body;
     }
 
-    public int getCode() {
-        return param.code;
+    public H getHead() {
+        return head;
     }
 
-    public int getValue() {
-        return value;
+    public B getBody() {
+        return body;
     }
 
     @Override
     public String toString() {
-        final StringBuilder sb = new StringBuilder().append(param).append(": ").append(value);
-        return sb.toString();
+        return "[" +
+                "head=" + head +
+                ", body=" + body +
+                ']';
     }
-};
+
+}

Propchange: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/Message.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java Sun Sep 18 11:29:30 2016
@@ -31,12 +31,12 @@ import java.util.Iterator;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ConnectionReuseStrategy;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HeaderElements;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.ProtocolVersion;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/EnglishReasonPhraseCatalog.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/EnglishReasonPhraseCatalog.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/EnglishReasonPhraseCatalog.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/EnglishReasonPhraseCatalog.java Sun Sep 18 11:29:30 2016
@@ -201,6 +201,8 @@ public class EnglishReasonPhraseCatalog
                   "Requested Range Not Satisfiable");
         setReason(HttpStatus.SC_EXPECTATION_FAILED,
                   "Expectation Failed");
+        setReason(HttpStatus.SC_MISDIRECTED_REQUEST,
+                "Misdirected Request");
 
         // WebDAV Server-specific status codes
         setReason(HttpStatus.SC_PROCESSING,

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java Sun Sep 18 11:29:30 2016
@@ -282,7 +282,7 @@ class BHttpConnectionBase implements BHt
     }
 
     @Override
-    public boolean isStale() {
+    public boolean isStale() throws IOException {
         if (!isOpen()) {
             return true;
         }
@@ -291,7 +291,7 @@ class BHttpConnectionBase implements BHt
             return bytesRead < 0;
         } catch (final SocketTimeoutException ex) {
             return false;
-        } catch (final IOException ex) {
+        } catch (final SocketException ex) {
             return true;
         }
     }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java Sun Sep 18 11:29:30 2016
@@ -33,11 +33,11 @@ import java.net.Socket;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.LengthRequiredException;
 import org.apache.hc.core5.http.config.MessageConstraints;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -32,9 +32,9 @@ import java.net.Socket;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.io.HttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java Sun Sep 18 11:29:30 2016
@@ -33,11 +33,11 @@ import java.net.Socket;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.config.MessageConstraints;
 import org.apache.hc.core5.http.impl.DefaultContentLengthStrategy;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -32,9 +32,9 @@ import java.net.Socket;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.io.HttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.impl.io
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpResponseFactory;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.NoHttpResponseException;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java Sun Sep 18 11:29:30 2016
@@ -31,12 +31,12 @@ import java.io.IOException;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.http.ProtocolVersion;
@@ -124,11 +124,6 @@ public class HttpRequestExecutor {
         Args.notNull(conn, "Client connection");
         Args.notNull(context, "HTTP context");
         try {
-
-            Args.notNull(request, "HTTP request");
-            Args.notNull(conn, "Client connection");
-            Args.notNull(context, "HTTP context");
-
             ClassicHttpResponse response = null;
 
             context.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java Sun Sep 18 11:29:30 2016
@@ -31,13 +31,13 @@ import java.io.IOException;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ConnectionReuseStrategy;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpResponseFactory;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.MethodNotSupportedException;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncRequestConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncRequestConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncRequestConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncRequestConsumer.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.impl.ni
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.entity.ContentType;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.HttpAsyncRequestConsumer;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncResponseConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncResponseConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncResponseConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractAsyncResponseConsumer.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.impl.ni
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.entity.ContentType;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.HttpAsyncResponseConsumer;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java Sun Sep 18 11:29:30 2016
@@ -33,10 +33,10 @@ import java.util.concurrent.atomic.Atomi
 
 import org.apache.hc.core5.concurrent.BasicFuture;
 import org.apache.hc.core5.concurrent.FutureCallback;
-import org.apache.hc.core5.http.ConnectionClosedException;
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ConnectionClosedException;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.ContentEncoder;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestConsumer.java Sun Sep 18 11:29:30 2016
@@ -28,9 +28,9 @@ package org.apache.hc.core5.http.impl.ni
 
 import java.io.IOException;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ContentTooLongException;
 import org.apache.hc.core5.http.HttpEntity;
-import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.entity.ContentType;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.IOControl;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestHandler.java Sun Sep 18 11:29:30 2016
@@ -31,8 +31,8 @@ import java.io.IOException;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.io.HttpRequestHandler;
 import org.apache.hc.core5.http.nio.HttpAsyncExchange;
 import org.apache.hc.core5.http.nio.HttpAsyncRequestConsumer;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestProducer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestProducer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestProducer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncRequestProducer.java Sun Sep 18 11:29:30 2016
@@ -28,9 +28,9 @@ package org.apache.hc.core5.http.impl.ni
 
 import java.io.IOException;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHost;
-import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.nio.ContentEncoder;
 import org.apache.hc.core5.http.nio.HttpAsyncRequestProducer;
 import org.apache.hc.core5.http.nio.IOControl;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseConsumer.java Sun Sep 18 11:29:30 2016
@@ -28,9 +28,9 @@ package org.apache.hc.core5.http.impl.ni
 
 import java.io.IOException;
 
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentTooLongException;
 import org.apache.hc.core5.http.HttpEntity;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.entity.ContentType;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.IOControl;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseProducer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseProducer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseProducer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncResponseProducer.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.impl.ni
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.nio.ContentEncoder;
 import org.apache.hc.core5.http.nio.HttpAsyncResponseProducer;
 import org.apache.hc.core5.http.nio.IOControl;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java Sun Sep 18 11:29:30 2016
@@ -27,8 +27,8 @@
 
 package org.apache.hc.core5.http.impl.nio;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpRequestFactory;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.ProtocolVersion;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseParser.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseParser.java Sun Sep 18 11:29:30 2016
@@ -27,8 +27,8 @@
 
 package org.apache.hc.core5.http.impl.nio;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpResponseFactory;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.ProtocolVersion;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnection.java Sun Sep 18 11:29:30 2016
@@ -32,11 +32,11 @@ import java.nio.channels.SelectionKey;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.LengthRequiredException;
 import org.apache.hc.core5.http.config.MessageConstraints;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -28,9 +28,9 @@ package org.apache.hc.core5.http.impl.ni
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.nio.NHttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnection.java Sun Sep 18 11:29:30 2016
@@ -32,11 +32,11 @@ import java.nio.channels.SelectionKey;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.config.MessageConstraints;
 import org.apache.hc.core5.http.impl.DefaultContentLengthStrategy;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -28,9 +28,9 @@ package org.apache.hc.core5.http.impl.ni
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.nio.NHttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ErrorResponseProducer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ErrorResponseProducer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ErrorResponseProducer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ErrorResponseProducer.java Sun Sep 18 11:29:30 2016
@@ -29,10 +29,10 @@ package org.apache.hc.core5.http.impl.ni
 
 import java.io.IOException;
 
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HeaderElements;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.nio.ContentEncoder;
 import org.apache.hc.core5.http.nio.HttpAsyncResponseProducer;
 import org.apache.hc.core5.http.nio.IOControl;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ExpandableBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ExpandableBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ExpandableBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ExpandableBuffer.java Sun Sep 18 11:29:30 2016
@@ -57,7 +57,7 @@ public class ExpandableBuffer {
      * @param buffersize the buffer size.
      * @param allocator allocator to be used to allocate {@link ByteBuffer}s.
      */
-    public ExpandableBuffer(final int buffersize, final ByteBufferAllocator allocator) {
+    protected ExpandableBuffer(final int buffersize, final ByteBufferAllocator allocator) {
         super();
         Args.notNull(allocator, "ByteBuffer allocator");
         this.allocator = allocator;
@@ -74,11 +74,11 @@ public class ExpandableBuffer {
      *
      * @return current input/output mode.
      */
-    protected int mode() {
+    public int mode() {
         return this.mode;
     }
 
-    protected ByteBuffer buffer() {
+    public ByteBuffer buffer() {
         return this.buffer;
     }
 
@@ -134,15 +134,6 @@ public class ExpandableBuffer {
     }
 
     /**
-     * Returns the total capacity of this buffer.
-     *
-     * @return total capacity.
-     */
-    public int capacity() {
-        return this.buffer.capacity();
-    }
-
-    /**
      * Determines if the buffer contains data.
      *
      * @return {@code true} if there is data in the buffer,

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncRequestExecutor.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncRequestExecutor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncRequestExecutor.java Sun Sep 18 11:29:30 2016
@@ -34,6 +34,8 @@ import java.util.concurrent.ConcurrentLi
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ConnectionClosedException;
 import org.apache.hc.core5.http.ConnectionReuseStrategy;
 import org.apache.hc.core5.http.ExceptionLogger;
@@ -42,8 +44,6 @@ import org.apache.hc.core5.http.HeaderEl
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.HttpVersion;
 import org.apache.hc.core5.http.ProtocolException;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncService.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncService.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncService.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncService.java Sun Sep 18 11:29:30 2016
@@ -37,14 +37,14 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
 import org.apache.hc.core5.concurrent.Cancellable;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ConnectionReuseStrategy;
 import org.apache.hc.core5.http.ExceptionLogger;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHeaders;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.HttpResponseFactory;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.http.MethodNotSupportedException;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NHttpConnectionBase.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NHttpConnectionBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NHttpConnectionBase.java Sun Sep 18 11:29:30 2016
@@ -35,14 +35,14 @@ import java.nio.channels.WritableByteCha
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ConnectionClosedException;
 import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.HttpConnectionMetrics;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpHeaders;
 import org.apache.hc.core5.http.HttpMessage;
-import org.apache.hc.core5.http.ClassicHttpRequest;
-import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.TrailerSupplier;
 import org.apache.hc.core5.http.config.MessageConstraints;
@@ -334,14 +334,11 @@ class NHttpConnectionBase implements NHt
     public String toString() {
         final SocketAddress remoteAddress = this.session.getRemoteAddress();
         final SocketAddress localAddress = this.session.getLocalAddress();
-        if (remoteAddress != null && localAddress != null) {
-            final StringBuilder buffer = new StringBuilder();
-            NetUtils.formatAddress(buffer, localAddress);
-            buffer.append("<->");
-            NetUtils.formatAddress(buffer, remoteAddress);
-            return buffer.toString();
-        }
-        return "[Not bound]";
+        final StringBuilder buffer = new StringBuilder();
+        NetUtils.formatAddress(buffer, localAddress);
+        buffer.append("->");
+        NetUtils.formatAddress(buffer, remoteAddress);
+        return buffer.toString();
     }
 
     @Override

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/PipeliningClientExchangeHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/PipeliningClientExchangeHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/PipeliningClientExchangeHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/PipeliningClientExchangeHandler.java Sun Sep 18 11:29:30 2016
@@ -39,10 +39,10 @@ import java.util.concurrent.atomic.Atomi
 
 import org.apache.hc.core5.concurrent.BasicFuture;
 import org.apache.hc.core5.concurrent.FutureCallback;
-import org.apache.hc.core5.http.ConnectionClosedException;
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ConnectionClosedException;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.http.nio.ContentDecoder;
 import org.apache.hc.core5.http.nio.ContentEncoder;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpClientConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpClientConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpClientConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpClientConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -30,9 +30,9 @@ import javax.net.ssl.SSLContext;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.nio.NHttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpServerConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpServerConnectionFactory.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpServerConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SSLNHttpServerConnectionFactory.java Sun Sep 18 11:29:30 2016
@@ -30,9 +30,9 @@ import javax.net.ssl.SSLContext;
 
 import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
-import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentLengthStrategy;
 import org.apache.hc.core5.http.config.ConnectionConfig;
 import org.apache.hc.core5.http.impl.ConnSupport;
 import org.apache.hc.core5.http.nio.NHttpConnectionFactory;

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedInputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedInputBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedInputBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedInputBuffer.java Sun Sep 18 11:29:30 2016
@@ -155,16 +155,6 @@ public class SharedInputBuffer extends E
     }
 
     @Override
-    public int capacity() {
-        this.lock.lock();
-        try {
-            return super.capacity();
-        } finally {
-            this.lock.unlock();
-        }
-    }
-
-    @Override
     public int length() {
         this.lock.lock();
         try {

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedOutputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedOutputBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedOutputBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SharedOutputBuffer.java Sun Sep 18 11:29:30 2016
@@ -118,16 +118,6 @@ public class SharedOutputBuffer extends
     }
 
     @Override
-    public int capacity() {
-        this.lock.lock();
-        try {
-            return super.capacity();
-        } finally {
-            this.lock.unlock();
-        }
-    }
-
-    @Override
     public int length() {
         this.lock.lock();
         try {

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SimpleOutputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SimpleOutputBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SimpleOutputBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SimpleOutputBuffer.java Sun Sep 18 11:29:30 2016
@@ -94,7 +94,7 @@ public class SimpleOutputBuffer extends
             return;
         }
         setInputMode();
-        ensureCapacity(this.capacity() + 1);
+        ensureCapacity(buffer().position() + 1);
         buffer().put((byte)b);
     }
 

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/BHttpConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/BHttpConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/BHttpConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/BHttpConnection.java Sun Sep 18 11:29:30 2016
@@ -48,8 +48,7 @@ public interface BHttpConnection extends
      *         even after waiting for {@code timeout} milliseconds.
      * @throws IOException if an error happens on the connection
      */
-    boolean isDataAvailable(int timeout)
-        throws IOException;
+    boolean isDataAvailable(int timeout) throws IOException;
 
     /**
      * Checks whether this connection has gone down.
@@ -66,7 +65,7 @@ public interface BHttpConnection extends
      *          likely to succeed, or {@code false} if they are likely
      *          to fail and this connection should be closed
      */
-    boolean isStale();
+    boolean isStale() throws IOException;
 
     /**
      * Writes out all pending buffered data over the open connection.

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpClientConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpClientConnection.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.io;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 
 /**
  * A client-side HTTP connection, which can be used for sending

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpRequestHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpRequestHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpRequestHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpRequestHandler.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.io;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerConnection.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.io;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 
 /**
  * A server-side HTTP connection, which can be used for receiving

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java Sun Sep 18 11:29:30 2016
@@ -35,6 +35,7 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.MessageHeaders;
 import org.apache.hc.core5.http.ProtocolException;
 import org.apache.hc.core5.util.CharArrayBuffer;
 
@@ -46,7 +47,7 @@ import org.apache.hc.core5.util.CharArra
  *
  * @since 4.0
  */
-public class HeaderGroup implements Serializable {
+public class HeaderGroup implements MessageHeaders, Serializable {
 
 
     // HTTPCORE-361 : we don't use the for-each syntax, when iterating headers

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncClientExchangeHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncClientExchangeHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncClientExchangeHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncClientExchangeHandler.java Sun Sep 18 11:29:30 2016
@@ -31,9 +31,9 @@ import java.io.Closeable;
 import java.io.IOException;
 
 import org.apache.hc.core5.concurrent.Cancellable;
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestConsumer.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.nio;
 import java.io.Closeable;
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestHandler.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestHandler.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.nio;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestProducer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestProducer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestProducer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncRequestProducer.java Sun Sep 18 11:29:30 2016
@@ -29,9 +29,9 @@ package org.apache.hc.core5.http.nio;
 import java.io.Closeable;
 import java.io.IOException;
 
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.HttpHost;
-import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncResponseConsumer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncResponseConsumer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncResponseConsumer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/HttpAsyncResponseConsumer.java Sun Sep 18 11:29:30 2016
@@ -30,8 +30,8 @@ import java.io.Closeable;
 import java.io.IOException;
 
 import org.apache.hc.core5.concurrent.Cancellable;
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpClientConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpClientConnection.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.nio;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.HttpException;
 
 /**
  * Abstract non-blocking client-side HTTP connection interface. It can be used

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpConnection.java Sun Sep 18 11:29:30 2016
@@ -27,9 +27,9 @@
 
 package org.apache.hc.core5.http.nio;
 
-import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.protocol.HttpContext;
 
 /**

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpServerConnection.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/NHttpServerConnection.java Sun Sep 18 11:29:30 2016
@@ -29,8 +29,8 @@ package org.apache.hc.core5.http.nio;
 
 import java.io.IOException;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 
 /**
  * Abstract non-blocking server-side HTTP connection interface. It can be used

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionInputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionInputBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionInputBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionInputBuffer.java Sun Sep 18 11:29:30 2016
@@ -60,20 +60,6 @@ public interface SessionInputBuffer {
     int length();
 
     /**
-     * Returns total capacity of the buffer
-     *
-     * @return total capacity
-     */
-    int capacity();
-
-    /**
-     * Returns available space in the buffer.
-     *
-     * @return available space.
-     */
-    int available();
-
-    /**
      * Makes an attempt to fill the buffer with data from the given
      * {@link ReadableByteChannel}.
      *

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionOutputBuffer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionOutputBuffer.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionOutputBuffer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/nio/SessionOutputBuffer.java Sun Sep 18 11:29:30 2016
@@ -54,13 +54,6 @@ public interface SessionOutputBuffer {
     boolean hasData();
 
     /**
-     * Returns total capacity of the buffer
-     *
-     * @return total capacity
-     */
-    int capacity();
-
-    /**
      * Returns available space in the buffer.
      *
      * @return available space.

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/pool/io/BasicConnPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/pool/io/BasicConnPool.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/pool/io/BasicConnPool.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/pool/io/BasicConnPool.java Sun Sep 18 11:29:30 2016
@@ -26,6 +26,7 @@
  */
 package org.apache.hc.core5.http.pool.io;
 
+import java.io.IOException;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.hc.core5.annotation.Contract;
@@ -92,7 +93,11 @@ public class BasicConnPool extends Abstr
 
     @Override
     protected boolean validate(final BasicPoolEntry entry) {
-        return !entry.getConnection().isStale();
+        try {
+            return !entry.getConnection().isStale();
+        } catch (IOException ignore) {
+            return false;
+        }
     }
 
 }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpCoreContext.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpCoreContext.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpCoreContext.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpCoreContext.java Sun Sep 18 11:29:30 2016
@@ -27,9 +27,9 @@
 
 package org.apache.hc.core5.http.protocol;
 
-import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpConnection;
 import org.apache.hc.core5.http.ProtocolVersion;
 import org.apache.hc.core5.util.Args;
 

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpExpectationVerifier.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpExpectationVerifier.java?rev=1761318&r1=1761317&r2=1761318&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpExpectationVerifier.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpExpectationVerifier.java Sun Sep 18 11:29:30 2016
@@ -27,9 +27,9 @@
 
 package org.apache.hc.core5.http.protocol;
 
-import org.apache.hc.core5.http.HttpException;
 import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpException;
 
 /**
  * Defines an interface to verify whether an incoming HTTP request meets




Mime
View raw message