From: Sven Kube Date: Mon, 22 Sep 2025 06:00:44 +0000 (+0200) Subject: stasis_channels.c: Make protocol_id optional to enable blind transfer via ari X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b15a745ef895f87e0c890edfcb689372dc84340b;p=thirdparty%2Fasterisk.git stasis_channels.c: Make protocol_id optional to enable blind transfer via ari When handling SIP transfers via ARI, there is no protocol_id in case of a blind transfer. Resolves: #1467 --- diff --git a/main/stasis_channels.c b/main/stasis_channels.c index 0a63182715..835f739c55 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -1659,13 +1659,16 @@ static struct ast_json *ari_transfer_to_json(struct stasis_message *msg, const struct timeval *tv = stasis_message_timestamp(msg); struct ast_ari_transfer_message *transfer_msg = stasis_message_data(msg); - dest_json = ast_json_pack("{s: s, s: s}", - "protocol_id", transfer_msg->protocol_id, - "destination", transfer_msg->destination); + dest_json = ast_json_pack("{s: s}", "destination", transfer_msg->destination); if (!dest_json) { return NULL; } + if (transfer_msg->protocol_id) { + ast_json_object_set(dest_json, "protocol_id", + ast_json_string_create(transfer_msg->protocol_id)); + } + if (AST_VECTOR_SIZE(transfer_msg->refer_params) > 0) { struct ast_json *params = ast_json_array_create(); if (!params) { @@ -1799,10 +1802,13 @@ struct ast_ari_transfer_message *ast_ari_transfer_message_create(struct ast_chan } ast_copy_string(msg->destination, exten, sizeof(msg->destination)); - msg->protocol_id = ast_strdup(protocol_id); - if (!msg->protocol_id) { - ao2_cleanup(msg); - return NULL; + + if (protocol_id) { + msg->protocol_id = ast_strdup(protocol_id); + if (!msg->protocol_id) { + ao2_cleanup(msg); + return NULL; + } } return msg;