diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index 6bdba1cd2a5f125e6c7a2a0b8dbd6560bd0bc353..48e19842f40eb4acfd18b75c2ab6cbb5569cfe44 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -265,9 +265,7 @@ void client_destroy(struct client *client, const char *reason)
 	timeout_remove(&client->to_idle);
 
 	/* i/ostreams are already closed at this stage, so fd can be closed */
-	net_disconnect(client->fd_in);
-	if (client->fd_in != client->fd_out)
-		net_disconnect(client->fd_out);
+	fd_close_maybe_stdio(&client->fd_in, &client->fd_out);
 
 	/* Free the user after client is already disconnected. It may start
 	   some background work like autoexpunging. */