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=aa3ff4ec60e6cf2a4629e3f7235dcff72f30c171;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 76173aa352..4e74733935 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -1666,13 +1666,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) { @@ -1806,10 +1809,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;