diff --git a/lib/client-parser.c b/lib/client-parser.c
index 72e91b2..ee87d71 100644
--- a/lib/client-parser.c
+++ b/lib/client-parser.c
@@ -34,7 +34,7 @@
 	struct lws_tokens eff_buf;
 	int m;
 
-	lwsl_parser(" CRX: %02X %d\n", c, wsi->lws_rx_parse_state);
+//	lwsl_parser(" CRX: %02X %d\n", c, wsi->lws_rx_parse_state);
 
 	switch (wsi->lws_rx_parse_state) {
 	case LWS_RXPS_NEW:
@@ -401,6 +401,7 @@
 			return -1;
 
 		case LWS_WS_OPCODE_07__PING:
+			lwsl_info("client received ping, doing pong\n");
 			/* parrot the ping packet payload back as a pong*/
 			n = libwebsocket_write(wsi, (unsigned char *)
 			    &wsi->rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING],
@@ -409,6 +410,9 @@
 			break;
 
 		case LWS_WS_OPCODE_07__PONG:
+			lwsl_info("client receied pong\n");
+			lwsl_hexdump(&wsi->rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING],
+				    wsi->rx_user_buffer_head);
 			/* keep the statistics... */
 			wsi->pings_vs_pongs--;
 
@@ -486,7 +490,9 @@
 		if (eff_buf.token_len > 0) {
 			eff_buf.token[eff_buf.token_len] = '\0';
 
-			if (wsi->protocol->callback)
+			if (wsi->protocol->callback) {
+				if (callback_action == LWS_CALLBACK_CLIENT_RECEIVE_PONG)
+					lwsl_info("Client doing pong callback\n");
 				wsi->protocol->callback(
 						wsi->protocol->owning_server,
 						wsi,
@@ -494,6 +500,7 @@
 						wsi->user_space,
 						eff_buf.token,
 						eff_buf.token_len);
+			}
 		}
 already_done:
 		wsi->rx_user_buffer_head = 0;
diff --git a/lib/handshake.c b/lib/handshake.c
index 634ccc8..d3ce3c8 100644
--- a/lib/handshake.c
+++ b/lib/handshake.c
@@ -562,6 +562,9 @@
 #endif
 
 #ifndef LWS_NO_CLIENT
+
+//		lwsl_info("mode=%d\n", wsi->mode);
+
 		switch (wsi->mode) {
 		case LWS_CONNMODE_WS_CLIENT_WAITING_PROXY_REPLY:
 		case LWS_CONNMODE_WS_CLIENT_ISSUE_HANDSHAKE:
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index df90289..68c14e6 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -306,9 +306,11 @@
 
 	/* delete it from the internal poll list if still present */
 
+	m = 0;
 	for (n = 0; n < context->fds_count; n++) {
 		if (context->fds[n].fd != wsi->sock)
 			continue;
+		m = 1;
 		while (n < context->fds_count - 1) {
 			context->fds[n] = context->fds[n + 1];
 			n++;
@@ -318,6 +320,9 @@
 		n = context->fds_count;
 	}
 
+	if (!m)
+		lwsl_err("Failed to remove fd %d from fds array\n", wsi->sock);
+
 	/* remove also from external POLL support via protocol 0 */
 	if (wsi->sock)
 		context->protocols[0].callback(context, wsi,
diff --git a/lib/output.c b/lib/output.c
index 8e72b7d..671e78c 100644
--- a/lib/output.c
+++ b/lib/output.c
@@ -312,14 +312,17 @@
 	eff_buf.token = (char *)buf;
 	eff_buf.token_len = len;
 
-	for (n = 0; n < wsi->count_active_extensions; n++) {
-		m = wsi->active_extensions[n]->callback(
-			wsi->protocol->owning_server,
-			wsi->active_extensions[n], wsi,
-			LWS_EXT_CALLBACK_PAYLOAD_TX,
-			wsi->active_extensions_user[n], &eff_buf, 0);
-		if (m < 0)
-			return -1;
+	if (protocol != LWS_WRITE_PING && protocol != LWS_WRITE_PONG) {
+
+		for (n = 0; n < wsi->count_active_extensions; n++) {
+			m = wsi->active_extensions[n]->callback(
+				wsi->protocol->owning_server,
+				wsi->active_extensions[n], wsi,
+				LWS_EXT_CALLBACK_PAYLOAD_TX,
+				wsi->active_extensions_user[n], &eff_buf, 0);
+			if (m < 0)
+				return -1;
+		}
 	}
 
 	buf = (unsigned char *)eff_buf.token;
@@ -586,7 +589,7 @@
 	lwsl_debug("\n");
 #endif
 
-	if (protocol == LWS_WRITE_HTTP) {
+	if (protocol == LWS_WRITE_HTTP || protocol == LWS_WRITE_PONG || protocol == LWS_WRITE_PING) {
 		if (lws_issue_raw(wsi, (unsigned char *)buf - pre,
 							      len + pre + post))
 			return -1;
diff --git a/lib/parsers.c b/lib/parsers.c
index 98d7124..6ef26dd 100644
--- a/lib/parsers.c
+++ b/lib/parsers.c
@@ -779,10 +779,11 @@
 			return -1;
 
 		case LWS_WS_OPCODE_07__PING:
+			lwsl_info("received %d byte ping, sending pong\n", wsi->rx_user_buffer_head);
+			lwsl_hexdump(&wsi->rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING], wsi->rx_user_buffer_head);
 			/* parrot the ping packet payload back as a pong */
 			n = libwebsocket_write(wsi, (unsigned char *)
-			    &wsi->rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING],
-				    wsi->rx_user_buffer_head, LWS_WRITE_PONG);
+			    &wsi->rx_user_buffer[LWS_SEND_BUFFER_PRE_PADDING], wsi->rx_user_buffer_head, LWS_WRITE_PONG);
 			/* ... then just drop it */
 			wsi->rx_user_buffer_head = 0;
 			return 0;
diff --git a/test-server/test-ping.c b/test-server/test-ping.c
index bc03100..d768df1 100644
--- a/test-server/test-ping.c
+++ b/test-server/test-ping.c
@@ -226,6 +226,9 @@
 			shift -= 8;
 		}
 
+		while (p - &pingbuf[LWS_SEND_BUFFER_PRE_PADDING] < size)
+			*p++ = 0;
+
 		gettimeofday(&tv, NULL);
 
 		psd->ringbuffer[psd->ringbuffer_head].issue_timestamp =
