diff --git a/mongoose.c b/mongoose.c
index 406ce19db1dbf8cfcec84c421d437dc34a42ccc7..fb467843164f0e0c3ff71e80134af9ae8ce8adb9 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4945,15 +4945,17 @@ static void mg_ev_handler(struct ns_connection *nc, enum ns_event ev, void *p) {
       break;
 
     case NS_POLL:
-      if (call_user(conn, MG_POLL) == MG_TRUE) {
-        if (conn->ns_conn->flags & MG_HEADERS_SENT) {
-          write_terminating_chunk(conn);
+      if (conn != NULL) {
+        if (call_user(conn, MG_POLL) == MG_TRUE) {
+          if (conn->ns_conn->flags & MG_HEADERS_SENT) {
+            write_terminating_chunk(conn);
+          }
+          close_local_endpoint(conn);
         }
-        close_local_endpoint(conn);
-      }
 
-      if (conn != NULL && conn->endpoint_type == EP_FILE) {
-        transfer_file_data(conn);
+        if (conn->endpoint_type == EP_FILE) {
+          transfer_file_data(conn);
+        }
       }
 
       // Expire idle connections