diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 30177d1951..9c797d60de 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 ce10b56807..953a37dcdd 100644
--- a/funcs/func_volume.c
+++ b/funcs/func_volume.c
@@ -65,7 +65,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
Set(VOLUME(TX)=3)
Set(VOLUME(RX)=2)
Set(VOLUME(TX,p)=3)
- Set(VOLUME(RX,p)=3>
+ Set(VOLUME(RX,p)=3)
***/