diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 30177d1951964bb73d3d18a01888258f590e20b2..9c797d60dea5308db81f92539cff929df57f2fa5 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -25817,8 +25817,11 @@ static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual * } /* We have a channel, find the bridge */ - target.chan1 = targetcall_pvt->owner; /* Transferer to Asterisk */ + target.chan1 = ast_channel_ref(targetcall_pvt->owner); /* Transferer to Asterisk */ target.chan2 = ast_bridged_channel(targetcall_pvt->owner); /* Asterisk to target */ + if (target.chan2) { + ast_channel_ref(target.chan2); + } if (!target.chan2 || !(ast_channel_state(target.chan2) == AST_STATE_UP || ast_channel_state(target.chan2) == AST_STATE_RINGING) ) { /* Wrong state of new channel */ @@ -25960,6 +25963,10 @@ static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual * /* at this point if the transfer is successful only the transferer pvt should be locked. */ ast_party_connected_line_free(&connected_to_target); ast_party_connected_line_free(&connected_to_transferee); + ast_channel_unref(target.chan1); + if (target.chan2) { + ast_channel_unref(target.chan2); + } if (targetcall_pvt) ao2_t_ref(targetcall_pvt, -1, "drop targetcall_pvt"); return 1; diff --git a/funcs/func_volume.c b/funcs/func_volume.c index ce10b56807a1e70450625f75ac05b0e5813b12a1..953a37dcdd97423018133f0ec0413f0babcac454 100644 --- a/funcs/func_volume.c +++ b/funcs/func_volume.c @@ -65,7 +65,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") <para>Set(VOLUME(TX)=3)</para> <para>Set(VOLUME(RX)=2)</para> <para>Set(VOLUME(TX,p)=3)</para> - <para>Set(VOLUME(RX,p)=3></para> + <para>Set(VOLUME(RX,p)=3)</para> </description> </function> ***/