Be sure to invoke *lws_free_header_table*:

 * Just prior to freeing a session
 * When allocating a new header table

This prevents some memory leaks we've found.
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 2844cc6..2720160 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -295,6 +295,8 @@
 	    wsi->user_space && !wsi->user_space_externally_allocated)
 		free(wsi->user_space);
 
+	/* As a precaution, free the header table in case it lingered: */
+	lws_free_header_table(wsi);
 	free(wsi);
 }
 
diff --git a/lib/parsers.c b/lib/parsers.c
index 7dd24fe..195325b 100644
--- a/lib/parsers.c
+++ b/lib/parsers.c
@@ -61,6 +61,8 @@
 
 int lws_allocate_header_table(struct libwebsocket *wsi)
 {
+	/* Be sure to free any existing header data to avoid mem leak: */
+	lws_free_header_table(wsi);
 	wsi->u.hdr.ah = malloc(sizeof(*wsi->u.hdr.ah));
 	if (wsi->u.hdr.ah == NULL) {
 		lwsl_err("Out of memory\n");