http2 add hpack decode support

Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/http2.c b/lib/http2.c
index 74f196a..b9bed87 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -32,6 +32,7 @@
 	/* LWS_HTTP2_SETTINGS__MAX_HEADER_LIST_SIZE */		  ~0,
 }};
 
+
 void lws_http2_init(struct http2_settings *settings)
 {
 	memcpy(settings, lws_http2_default_settings.setting, sizeof(*settings));
@@ -193,16 +194,20 @@
 	case WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS:
 	case WSI_STATE_HTTP2_ESTABLISHED:
 		if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { // payload
+			/* applies to wsi->u.http2.stream_wsi which may be wsi*/
 			switch(wsi->u.http2.type) {
 			case LWS_HTTP2_FRAME_TYPE_SETTINGS:
-				wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c;
+				wsi->u.http2.stream_wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c;
 				if (wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH == LWS_HTTP2_SETTINGS_LENGTH - 1)
 					if (lws_http2_interpret_settings_payload(
-					     &wsi->u.http2.peer_settings,
+					     &wsi->u.http2.stream_wsi->u.http2.peer_settings,
 					     wsi->u.http2.one_setting,
 					     LWS_HTTP2_SETTINGS_LENGTH))
 						return 1;
 				break;
+			case LWS_HTTP2_FRAME_TYPE_HEADERS:
+				
+				break;
 			}
 			wsi->u.http2.count++;
 			if (wsi->u.http2.count == wsi->u.http2.length) {
@@ -238,6 +243,7 @@
 		case 8:
 			wsi->u.http2.stream_id <<= 8;
 			wsi->u.http2.stream_id |= c;
+			wsi->u.http2.stream_wsi = wsi;
 			break;
 		}
 		if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { /* frame header complete */
@@ -258,10 +264,14 @@
 				}
 				break;
 			case LWS_HTTP2_FRAME_TYPE_HEADERS:
-				wsi_new = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id);
-				if (!wsi_new) {
-					wsi_new = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id);
-				}
+				if (!wsi->u.http2.stream_id)
+					return 1;
+				wsi->u.http2.stream_wsi = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id);
+				if (!wsi->u.http2.stream_wsi)
+					wsi->u.http2.stream_wsi = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id);
+
+				if (!wsi->u.http2.stream_wsi)
+					return 1;
 			}
 			if (wsi->u.http2.length == 0)
 				wsi->u.http2.frame_state = 0;