diff --git a/src/server/net.c b/src/server/net.c
index 7d21ccb6603b586276025bcb413cfd4e2743d509..3cba3cc556cd364d4093ef484e905a6c2850f5db 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -200,6 +200,9 @@ static void try_disconnect_socket(struct con_data *c)
 			g_clear_error(&error);
 		}
 	}
+
+	/* drop initial reference */
+	g_clear_object(&c->con);
 }
 
 
@@ -232,9 +235,6 @@ static void drop_con_begin(struct con_data *c)
  	g_thread_pool_free(c->pool, TRUE, FALSE);
 	c->pool = NULL;
 
-	/* drop initial reference */
-	g_clear_object(&c->con);
-
 	try_disconnect_socket(c);
 
 	g_mutex_unlock(&listlock);