make duplicate headers append instead of get ignored

The code to prevent memory leaks caused by reallocating a wsi->utf8_token
was also causing wsi->parser_state to not be updated, preventing the
handshake from completing.

This patch changes the logic to append to previous allocation which is
correct behaviour actually.

Signed-off-by: Nick Dowell <nick@nickdowell.com>
Signed-off-by: Andy Green <andy@warmcat.com>
diff --git a/lib/parsers.c b/lib/parsers.c
index 120d22a..c3bf7ae 100644
--- a/lib/parsers.c
+++ b/lib/parsers.c
@@ -190,17 +190,18 @@
 			if (n == WSI_TOKEN_SWORIGIN)
 				n = WSI_TOKEN_ORIGIN;
 
-			/* check for dupe header -> mem leak... skip dupes */
-                        if (wsi->utf8_token[WSI_TOKEN_GET_URI + n].token)
-                                continue;
-
 			wsi->parser_state = WSI_TOKEN_GET_URI + n;
-			wsi->current_alloc_len = LWS_INITIAL_HDR_ALLOC;
 
-			wsi->utf8_token[wsi->parser_state].token =
-						 malloc(wsi->current_alloc_len);
-			wsi->utf8_token[wsi->parser_state].token_len = 0;
 			n = WSI_TOKEN_COUNT;
+
+			/*  If the header has been seen already, just append */
+			if (wsi->utf8_token[wsi->parser_state].token)
+				continue;
+
+			wsi->current_alloc_len = LWS_INITIAL_HDR_ALLOC;
+			wsi->utf8_token[wsi->parser_state].token =
+							 malloc(wsi->current_alloc_len);
+			wsi->utf8_token[wsi->parser_state].token_len = 0;
 		}
 
 		/* colon delimiter means we just don't know this name */