diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index bafa0387cfb4df5335c6ed72910232153dec1833..4e8fdf6c97229f38deb3752428d23ba45cf342e5 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -365,7 +365,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { } } - private static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) { + protected static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) { StringBuilder buf = new StringBuilder(command.length() + headers.size() * 64); buf.append(command.toString().trim()).append("\r\n"); for (Iterator<String> iter = headers.keySet().iterator(); iter.hasNext(); ) { diff --git a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java index f35787e5589b4694dfcd2af58e7889ab29bd55f9..8cd7cf3227ea3c866ae8d6b2888e89225452157a 100644 --- a/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java +++ b/apps/i2ptunnel/java/test/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java @@ -41,5 +41,21 @@ public class I2PTunnelHTTPServerTest extends TestCase { assertEquals(headers.size(), 1); assertEquals(headers.get("someHeader").size(), 2); } + + public void testDuplicateHeadersFormat() throws IOException { + String headerString = "GET /something HTTP/1.1\r\n"; + headerString += "abc: def\r\n"; + headerString += "abc: blaaah\r\n"; + headerString += "manamana: toe toe toedoedoe\r\n"; + headerString += "\r\n"; + InputStream in = fillInputStream(headerString); + StringBuilder builder = new StringBuilder(128); + Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, builder, new String[0], null); + String result = I2PTunnelHTTPServer.formatHeaders(headers, builder); + int first = result.indexOf("abc"); + assertTrue(first >= 0); + int second = result.indexOf("abc", first); + assertTrue(second >= 0); + } }