[2/2] trafficserver git commit: TS-4063: Add regression tests for HPACK Huffman

2015-12-09 Thread masaori
TS-4063: Add regression tests for HPACK Huffman

This closes #372


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d5307c6d
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d5307c6d
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d5307c6d

Branch: refs/heads/master
Commit: d5307c6d5b7d1414550f4d618e69a4161d1f147e
Parents: 9894fb1 c98b51f
Author: Masakazu Kitajo 
Authored: Thu Dec 10 10:02:45 2015 +0900
Committer: Masaori Koshiba 
Committed: Thu Dec 10 10:08:10 2015 +0900

--
 proxy/http2/RegressionHPACK.cc | 84 +++--
 1 file changed, 72 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d5307c6d/proxy/http2/RegressionHPACK.cc
--
diff --cc proxy/http2/RegressionHPACK.cc
index f4e8da8,c1021d0..5ceebc8
--- a/proxy/http2/RegressionHPACK.cc
+++ b/proxy/http2/RegressionHPACK.cc
@@@ -110,19 -110,60 +110,65 @@@ const static struct 
{(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, 
(uint8_t *) "\x10\x08"

   "password\x06"

   "secret",
-17}};
+17},
+   // with Huffman Coding
 -  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40"
 -  
 "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
 -  
 "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
++  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_INDEXED_LITERAL,
++   (uint8_t *) "\x40"
++   "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
++   "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+20},
 -  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00"
 -  
 "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
 -  
 "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
++  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NOINDEX_LITERAL,
++   (uint8_t *) "\x00"
++   "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
++   "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+20},
 -  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10"
 -  
"\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
 -  
"\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
++  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NEVERINDEX_LITERAL,
++   (uint8_t *) "\x10"
++   "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
++   "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+20},
+   {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_INDEXED_LITERAL, 
(uint8_t *) "\x44"
+   
   "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+11},
+   {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NOINDEX_LITERAL, 
(uint8_t *) "\x04"
+   
   "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+11},
 -  {(char *)":path", (char *) "/sample/path", 4, 
HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x14"
 -  
  "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
++  {(char *)":path", (char *) "/sample/path", 4, 
HPACK_FIELD_NEVERINDEX_LITERAL,
++   (uint8_t *) "\x14"
++   "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+11},
+   {(char *)"password", (char *) "secret", 0, HPACK_FIELD_INDEXED_LITERAL, 
(uint8_t *) "\x40"
+   
"\x86\xac\x68\x47\x83\xd9\x27"
+   
"\x84\x41\x49\x61\x53",
+13},
+   {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NOINDEX_LITERAL, 
(uint8_t *) "\x00"
+   
"\x86\xac\x68\x47\x83\xd9\x27"
+ 

[1/2] trafficserver git commit: TS-4063: Add regression tests for HPACK Huffman

2015-12-09 Thread masaori
Repository: trafficserver
Updated Branches:
  refs/heads/master 9894fb1e4 -> d5307c6d5


TS-4063: Add regression tests for HPACK Huffman


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/c98b51f9
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/c98b51f9
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/c98b51f9

Branch: refs/heads/master
Commit: c98b51f9985dfd678e80fa5cd484c53534cc2de9
Parents: 3ba9af9
Author: Masakazu Kitajo 
Authored: Wed Dec 9 16:42:42 2015 +0900
Committer: Masakazu Kitajo 
Committed: Wed Dec 9 16:42:42 2015 +0900

--
 proxy/http2/RegressionHPACK.cc | 68 +
 1 file changed, 62 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c98b51f9/proxy/http2/RegressionHPACK.cc
--
diff --git a/proxy/http2/RegressionHPACK.cc b/proxy/http2/RegressionHPACK.cc
index f4e8da8..c1021d0 100644
--- a/proxy/http2/RegressionHPACK.cc
+++ b/proxy/http2/RegressionHPACK.cc
@@ -110,9 +110,44 @@ const static struct {
   {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, 
(uint8_t *) "\x10\x08"

  "password\x06"

  "secret",
-   17}};
+   17},
+  // with Huffman Coding
+  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_INDEXED_LITERAL, (uint8_t *) "\x40"
+   
"\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
+   
"\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+   20},
+  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NOINDEX_LITERAL, (uint8_t *) "\x00"
+   
"\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
+   
"\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+   20},
+  {(char *)"custom-key", (char *) "custom-header", 0, 
HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x10"
+   
   "\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f"
+   
   "\x89\x25\xa8\x49\xe9\x5a\x72\x8e\x42\xd9",
+   20},
+  {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_INDEXED_LITERAL, 
(uint8_t *) "\x44"
+   
  "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+   11},
+  {(char *)":path", (char *) "/sample/path", 4, HPACK_FIELD_NOINDEX_LITERAL, 
(uint8_t *) "\x04"
+   
  "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+   11},
+  {(char *)":path", (char *) "/sample/path", 4, 
HPACK_FIELD_NEVERINDEX_LITERAL, (uint8_t *) "\x14"
+   
 "\x89\x61\x03\xa6\xba\x0a\xc5\x63\x4c\xff",
+   11},
+  {(char *)"password", (char *) "secret", 0, HPACK_FIELD_INDEXED_LITERAL, 
(uint8_t *) "\x40"
+   
   "\x86\xac\x68\x47\x83\xd9\x27"
+   
   "\x84\x41\x49\x61\x53",
+   13},
+  {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NOINDEX_LITERAL, 
(uint8_t *) "\x00"
+   
   "\x86\xac\x68\x47\x83\xd9\x27"
+   
   "\x84\x41\x49\x61\x53",
+   13},
+  {(char *)"password", (char *) "secret", 0, HPACK_FIELD_NEVERINDEX_LITERAL, 
(uint8_t *) "\x10"
+   
  "\x86\xac\x68\x47\x83\xd9\x27"
+   
  "\x84\x41\x49\x61\x53",
+   13}};
 
 // [RFC 7541] C.3. Request Examples without Huffman Coding - C.3.1. First 
Request
+// [RFC 7541] C.4. Request Examples with Huffman Coding - C.4.1. First Request
 const static struct {
   char *raw_name;
   char *raw_value;
@@ -122,6 +157,12 @@ const static struct {
   {(char *)":path", (char *) "/"},
   {(char *)":authority", (char *) 

[2/2] trafficserver git commit: TS-4062: CID 1341763: Free data when error

2015-12-09 Thread masaori
TS-4062: CID 1341763: Free data when error

This closes #370


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/88c35d77
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/88c35d77
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/88c35d77

Branch: refs/heads/master
Commit: 88c35d77a8897325f0cecfc4c844938bbffa6035
Parents: a68d583
Author: Masaori Koshiba 
Authored: Wed Dec 9 11:29:20 2015 +0900
Committer: Masaori Koshiba 
Committed: Thu Dec 10 10:35:23 2015 +0900

--
 proxy/http2/HPACK.cc | 16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/88c35d77/proxy/http2/HPACK.cc
--
diff --git a/proxy/http2/HPACK.cc b/proxy/http2/HPACK.cc
index 7e4b2fc..51b9a2f 100644
--- a/proxy/http2/HPACK.cc
+++ b/proxy/http2/HPACK.cc
@@ -347,14 +347,26 @@ encode_string(uint8_t *buf_start, const uint8_t *buf_end, 
const char *value, siz
 
   // Length
   const int64_t len = encode_integer(p, buf_end, data_len, 7);
-  if (len == -1)
+  if (len == -1) {
+if (use_huffman) {
+  ats_free(data);
+}
+
 return -1;
+  }
+
   if (use_huffman) {
 *p |= 0x80;
   }
   p += len;
-  if (buf_end < p || buf_end - p < data_len)
+
+  if (buf_end < p || buf_end - p < data_len) {
+if (use_huffman) {
+  ats_free(data);
+}
+
 return -1;
+  }
 
   // Value
   memcpy(p, data, data_len);