[asterisk-dev] [Code Review] Converting the code to use masq_park to do call parking

Steve Murphy murf at digium.com
Wed Dec 17 13:18:55 CST 2008


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.digium.com/r/29/
-----------------------------------------------------------

(Updated 2008-12-17 13:18:55.673841)


Review request for Asterisk Developers, Russell Bryant, Joshua Colp, Mark Michelson, and Jeff Peeler.


Changes
-------

Another attempt, base path = /


Summary
-------

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.


Testing:

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

===========
Differences:
===========

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.


This addresses bug http://bugs.digium.com/view.php?id=13820.
    http://bugs.digium.com/view.php?id=http://bugs.digium.com/view.php?id=13820


Diffs (updated)
-----

  /branches/1.4/apps/app_dial.c 165179 
  /branches/1.4/apps/app_queue.c 165179 
  /branches/1.4/include/asterisk/pbx.h 165179 
  /branches/1.4/res/res_features.c 165179 

Diff: http://reviewboard.digium.com/r/29/diff


Testing
-------


Thanks,

Steve




More information about the asterisk-dev mailing list