From bc8b92e1f786343e7ff5d6a8935fd966c6ef3a34 Mon Sep 17 00:00:00 2001 From: nibin Date: Tue, 26 Jul 2011 00:13:16 +0530 Subject: [PATCH] * Fixed the bug in CookieEncoder if there are no cookie's set while calling encode(). Without the fix, it ended up in calling the exception "java.lang.StringIndexOutOfBoundsException". * Also added test case to verify the patch Change-Id: Ib96425e07ab50be027ade7be0748cceb6438a586 Conflicts: src/test/java/org/jboss/netty/handler/codec/http/CookieEncoderTest.java --- .../netty/handler/codec/http/CookieEncoder.java | 8 ++++++-- .../handler/codec/http/CookieEncoderTest.java | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jboss/netty/handler/codec/http/CookieEncoder.java b/src/main/java/org/jboss/netty/handler/codec/http/CookieEncoder.java index 4566571e28..dd56a75eca 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/CookieEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/CookieEncoder.java @@ -167,7 +167,10 @@ public class CookieEncoder { } } - sb.setLength(sb.length() - 1); + if(sb.length() > 0) { + sb.setLength(sb.length() - 1); + } + return sb.toString(); } @@ -205,7 +208,8 @@ public class CookieEncoder { } } - sb.setLength(sb.length() - 1); + if(sb.length() > 0) + sb.setLength(sb.length() - 1); return sb.toString(); } diff --git a/src/test/java/org/jboss/netty/handler/codec/http/CookieEncoderTest.java b/src/test/java/org/jboss/netty/handler/codec/http/CookieEncoderTest.java index 103ade3582..6ab5fab8b9 100644 --- a/src/test/java/org/jboss/netty/handler/codec/http/CookieEncoderTest.java +++ b/src/test/java/org/jboss/netty/handler/codec/http/CookieEncoderTest.java @@ -15,7 +15,9 @@ */ package org.jboss.netty.handler.codec.http; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.junit.Assert.assertNotNull; import java.text.DateFormat; import java.util.Date; @@ -131,4 +133,16 @@ public class CookieEncoderTest { String encodedCookie = encoder.encode(); assertEquals(c1 + c2 + c3, encodedCookie); } + + @Test + public void testEncodingWithNoCookies() { + CookieEncoder encoderForServer = new CookieEncoder(true); + String encodedCookie1 = encoderForServer.encode(); + CookieEncoder encoderForClient = new CookieEncoder(false); + String encodedCookie2 = encoderForClient.encode(); + assertNotNull(encodedCookie1); + assertNotNull(encodedCookie2); + + } + }