[Asterisk-Users] Hangups after voicemail

Christian Hecimovic checimovic at qworks.ca
Tue Sep 16 16:47:35 MST 2003


Hi,

Try as I might, I can't get hangups detected on a Zap channel with loop start 
lines. So, after someone leaves a voicemail and then hangs up, Asterisk 
doesn't know it, exits VoicemailMain2, and loops back to the corporate 
greeting, tying up the line even though the outside caller has hung up. 

Therefore, I've added the following hideous hack - er, code - to voicemail2.c. 
It starts right after the call to play_and_record() in leave_voicemail().

if (res != '#' && chan != NULL && !strncmp(chan->name, "Zap", 3)) {
	/* Hang up the Zap channel only */
	ast_softhangup(chan, AST_SOFTHANGUP_EXPLICIT);
}

Obviously, it hangs up the channel after the voicemail has been recorded, if 
the # key wasn't pressed, if the channel still exists, and if it's a Zap 
channel. I couldn't see a way to do this with AGI.

Question: is this safe? I used a soft hangup because the channel is controlled 
by another thread. I also modified channel.c so that ast_channel_free() sets 
chan to NULL after it's freed, just in case. Is there anything else I should 
be aware of? The code seems to work in my testing, resulting in a proper 
hangup right after the voicemail has been recorded. I'm not up on my Asterisk 
internals, so I'm not totally confident about this.

Thanks,

Chris





More information about the asterisk-users mailing list