From b8e8a4b6c09e12519feec3143735a51243a88211 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 1 Dec 2025 19:25:41 +0200 Subject: [PATCH] global: Replace important iostream == NULL checks with iostream->closed This are useful after the previous connection_disconnect() API change to preserve the old behavior better. More checks could have been done or NULL checks could have been removed, but for now lets just do the minimum that is useful. --- src/lib-http/http-client-connection.c | 4 ++-- src/lib-http/http-server-response.c | 6 +++--- src/lib-smtp/smtp-client-connection.c | 8 ++++---- src/lib-smtp/smtp-server-cmd-starttls.c | 2 +- src/lib-smtp/smtp-server-connection.c | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index 0edeaeb48a..51f5cd8c94 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -907,7 +907,7 @@ http_client_connection_return_response(struct http_client_connection *conn, /* Request is dereferenced in payload destroy callback */ i_stream_unref(&payload); - if (conn->to_input != NULL && conn->conn.input != NULL) { + if (conn->to_input != NULL && !conn->conn.input->closed) { /* Already finished reading the payload */ http_client_payload_finished(conn); } @@ -916,7 +916,7 @@ http_client_connection_return_response(struct http_client_connection *conn, http_client_connection_unref_request(conn, &req); } - if (conn->incoming_payload == NULL && conn->conn.input != NULL) { + if (conn->incoming_payload == NULL && !conn->conn.input->closed) { i_assert(conn->conn.io != NULL || pshared->addr.type == HTTP_CLIENT_PEER_ADDR_RAW); return http_client_connection_unref(&conn); diff --git a/src/lib-http/http-server-response.c b/src/lib-http/http-server-response.c index 0932b1e5e9..5c653280c3 100644 --- a/src/lib-http/http-server-response.c +++ b/src/lib-http/http-server-response.c @@ -366,7 +366,7 @@ int http_server_response_finish_payload_out(struct http_server_response *resp) o_stream_unref(&resp->payload_output); resp->payload_output = NULL; } - if (conn->conn.output != NULL && + if (!conn->conn.output->closed && o_stream_get_buffer_used_size(conn->conn.output) > 0) { e_debug(resp->event, "Not quite finished sending response"); @@ -378,7 +378,7 @@ int http_server_response_finish_payload_out(struct http_server_response *resp) http_server_connection_ref(conn); conn->output_locked = FALSE; - if (conn->conn.output != NULL && !conn->conn.output->closed) { + if (!conn->conn.output->closed) { if (resp->payload_corked && o_stream_uncork_flush(conn->conn.output) < 0) http_server_connection_handle_output_error(conn); @@ -772,7 +772,7 @@ static int http_server_response_send_real(struct http_server_response *resp) return -1; } - if (conn->conn.output != NULL && !resp->payload_corked && + if (!conn->conn.output->closed && !resp->payload_corked && o_stream_uncork_flush(conn->conn.output) < 0) { http_server_connection_handle_output_error(conn); return -1; diff --git a/src/lib-smtp/smtp-client-connection.c b/src/lib-smtp/smtp-client-connection.c index c9ba8fec55..e83c670d4b 100644 --- a/src/lib-smtp/smtp-client-connection.c +++ b/src/lib-smtp/smtp-client-connection.c @@ -269,7 +269,7 @@ void smtp_client_connection_cork(struct smtp_client_connection *conn) void smtp_client_connection_uncork(struct smtp_client_connection *conn) { conn->corked = FALSE; - if (conn->conn.output != NULL) { + if (!conn->conn.output->closed) { if (o_stream_uncork_flush(conn->conn.output) < 0) { smtp_client_connection_handle_output_error(conn); return; @@ -1326,7 +1326,7 @@ smtp_client_connection_input_reply(struct smtp_client_connection *conn, ret = smtp_client_command_input_reply(conn->cmd_wait_list_head, reply); if (conn->state == SMTP_CLIENT_CONNECTION_STATE_DISCONNECTED || - conn->conn.output == NULL) + conn->conn.output->closed) return -1; return ret; } @@ -1436,7 +1436,7 @@ static void smtp_client_connection_input(struct connection *_conn) error); } } - if (ret >= 0 && conn->conn.output != NULL && !conn->corked) { + if (ret >= 0 && !conn->conn.output->closed && !conn->corked) { if (o_stream_uncork_flush(conn->conn.output) < 0) smtp_client_connection_handle_output_error(conn); } @@ -1461,7 +1461,7 @@ static int smtp_client_connection_output(struct smtp_client_connection *conn) o_stream_cork(conn->conn.output); if (smtp_client_command_send_more(conn) < 0) ret = -1; - if (ret >= 0 && conn->conn.output != NULL && !conn->corked) { + if (ret >= 0 && !conn->conn.output->closed && !conn->corked) { if (o_stream_uncork_flush(conn->conn.output) < 0) smtp_client_connection_handle_output_error(conn); } diff --git a/src/lib-smtp/smtp-server-cmd-starttls.c b/src/lib-smtp/smtp-server-cmd-starttls.c index de53b39a38..f1abd4c8c2 100644 --- a/src/lib-smtp/smtp-server-cmd-starttls.c +++ b/src/lib-smtp/smtp-server-cmd-starttls.c @@ -80,7 +80,7 @@ cmd_starttls_destroy(struct smtp_server_cmd_ctx *cmd, void *context ATTR_UNUSED) struct smtp_server_command *command = cmd->cmd; int ret; - if (conn->conn.output == NULL) + if (conn->conn.output->closed) return; if (smtp_server_command_replied_success(command)) { diff --git a/src/lib-smtp/smtp-server-connection.c b/src/lib-smtp/smtp-server-connection.c index d1dc62819f..b00daf34fa 100644 --- a/src/lib-smtp/smtp-server-connection.c +++ b/src/lib-smtp/smtp-server-connection.c @@ -767,7 +767,7 @@ void smtp_server_connection_cork(struct smtp_server_connection *conn) void smtp_server_connection_uncork(struct smtp_server_connection *conn) { conn->corked = FALSE; - if (conn->conn.output != NULL) { + if (!conn->conn.output->closed) { if (o_stream_uncork_flush(conn->conn.output) < 0) { smtp_server_connection_handle_output_error(conn); return; -- 2.47.3