]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global: Replace important iostream == NULL checks with iostream->closed
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 1 Dec 2025 17:25:41 +0000 (19:25 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 20 Nov 2025 22:24:01 +0000 (22:24 +0000)
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
src/lib-http/http-server-response.c
src/lib-smtp/smtp-client-connection.c
src/lib-smtp/smtp-server-cmd-starttls.c
src/lib-smtp/smtp-server-connection.c

index 0edeaeb48ad28927db93ac6f03ecaf747027d2c3..51f5cd8c949e504075a945b00382e560eb65e0ac 100644 (file)
@@ -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);
index 0932b1e5e9482c62c8667623ed5571ec1aa9da21..5c653280c36c3002dfe1194e2ff724bc14cd8467 100644 (file)
@@ -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;
index c9ba8fec5571e1aaafa823f6d2e1c7c71389c131..e83c670d4b185502364768f62220f9ad6452457f 100644 (file)
@@ -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);
        }
index de53b39a3807ee56e8bb680568e72a2ec864667a..f1abd4c8c22b0004a2212c76ff58919e0380cfa9 100644 (file)
@@ -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)) {
index d1dc62819f9d164d46f80506d3e38bf194180df7..b00daf34faa125bcd1cd9900f9b189d52fcfee71 100644 (file)
@@ -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;