diff --git a/mongoose.c b/mongoose.c
index 94f1e50ec2c24a08591a1aa6657880651a5edf79..a3b13dba0530cd627f24e54924c38e8c4bad3feb 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4576,6 +4576,7 @@ static int set_ports_option(struct mg_context *ctx) {
     } else if ((ptr = realloc(ctx->listening_sockets,
                               (ctx->num_listening_sockets + 1) *
                               sizeof(ctx->listening_sockets[0]))) == NULL) {
+      closesocket(so.sock);
       success = 0;
     } else {
       set_close_on_exec(so.sock);