From: Timo Sirainen Date: Mon, 1 Dec 2025 17:25:41 +0000 (+0200) Subject: global: Replace important iostream == NULL checks with iostream->closed X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8e8a4b6c09e12519feec3143735a51243a88211;p=thirdparty%2Fdovecot%2Fcore.git 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. --- 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;