diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 56e7ca59..5a950ca1 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -92,6 +92,10 @@ libwebsocket_close_and_free_session(struct libwebsocket_context *context,
 		goto just_kill_connection;
 	}
 
+	if (wsi->mode == LWS_CONNMODE_HTTP_SERVING)
+		context->protocols[0].callback(context, wsi,
+			LWS_CALLBACK_CLOSED_HTTP, wsi->user_space, NULL, 0);
+
 	if (wsi->mode == LWS_CONNMODE_HTTP_SERVING_ACCEPTED) {
 		if (wsi->u.http.fd != LWS_INVALID_FILE) {
 			lwsl_debug("closing http file\n");