Review Board 1.7.16

Converting the code to use masq_park to do call parking

Review Request #29 - Created Nov. 4, 2008 and submitted

Steve Murphy
file, jpeeler, mmichelson, russell
this diff is against 1.4; My notes on the bug (13820) are:

...So, Russell advised using the masq_park_call stuff instead of park_call
stuff. which I did, and entirely got rid of the KEEPALIVE and NO_HANGUP_PEER
stuff in the res_features.c and app_dial and app_queue code, simplifying things
and making them more crash-resistant.


I noted that there are more than one way to park a channel:

I.   Request a park via the manager interface: this uses the masq_park_call
     facility already (which is good).
II.  Via blind xfer feature to parking exten) -- this I modified to
     use masq_park_call_announce().
III. Via *3 (one-touch park feature)... this used masq_park_call_announce
     in one case and the park_call facility in the other. Now, it just does the
     masq_park_call thing.
IV . Via the Park() app (for instance, DAHDI hookflash, dial 700)... 
     This calls park_call_exec() I did not update this to use the
     masq_park_call facility, because I wasn't certain that this would
     be of benefit. I'll research it out and see.

There are call sequences that are good to test:

1. A calls B, A Parks B, B hangs up while A is getting parking stall announcement.
2.           "         , B hangs up after A gets announcemnt, but before parking expires.
3.           "         , B waits, and A is redialed, rebridged
4.           "         , B is picked up by C
5. A calls B, B parks A, A hangs up while B is getting parking stall announcement.
6.           "         , A hangs up after B gets announcemnt, but before parking expires.
7.           "         , A waits, and B is redialed, rebridged
8.           "         , A is picked up by C


The major difference is the channel name during the hangup extension execution.

In the one-touch, blind xfer to parking exten, and Park() call, (II, III, and IV)
cases, I note that the channel name ( ${CHANNEL} )  is set to:

A Parks B: DAHDI/1-1  (where A is DAHDI/1) which is good.

B Parks A: Parked/DAHDI/1-1<ZOMBIE>   (where B was DAHDI/2)

This isn't ideal; I think that most users would love it if the hangup for B where not
celebrated with a h-exten execution at all; and rather, that the h-exten would run when
channel 1 actually hung up in this case.

Any ideas?

Also, I did an experiment with using the masq_park_call in the park_call_exec()
for the Park() app. It made no difference, so I decided to not add a layer or
function call to the pile, and left it alone.

Review request changed
Updated (Dec. 17, 2008, 7:18 a.m.)
Another attempt, base path = /
Posted (Dec. 18, 2008, 1:51 p.m.)
My only comment is that I would like to see this diff updated to completely remove AST_PBX_KEEPALIVE.  With the change from review 98, you should be able to accomplish that.
Posted (Dec. 19, 2008, 1:05 p.m.)
I think you have already committed this.  If so, please edit the commit message to include the following text, so that it will be recorded in svn history, and also have this review request closed out.

Review: runs on a server provided by Digium, Inc. and uses bandwidth donated to the open source Asterisk community by API Digital Communications in Huntsville, AL USA.
Please report problems with this site to