[Home]

Summary:ASTERISK-10856: [patch] Implement call park
Reporter:dea (dea)Labels:
Date Opened:2007-11-21 15:54:54.000-0600Date Closed:2008-06-13 06:15:20
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Channels/NewFeature
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) chan_skinny-park.txt
( 1) chan_skinny-park-v2.diff.txt
( 2) res_features-park.txt
Description:Add support for the Park Softkey on skinny phones.

Depends on a working Call Park setup (features.conf)

****** ADDITIONAL INFORMATION ******

There is a quirk with park_call_full that will segfault while trying to
say the parked extension on a masqueraded channel.  Commenting out the
ast_say_digits in that function allowed me to test this patch.
Comments:By: dea (dea) 2007-12-03 19:20:20.000-0600

Commit 90631 fixed the segfault the plagued chan_skinny with Park enabled.

So call parking works with chan_skinny, but user feedback is limited to a
line of text on the phone.  Phones that lack the display also lack the Park
softkey, so this should not be an issue.

By: Jason Parker (jparker) 2007-12-07 08:53:01.000-0600

I'm getting a lot of crashes with this.  Will try to diagnose some time today.

By: dea (dea) 2007-12-07 11:10:13.000-0600

Crud.  My tests right after updating to SVN post 90631 all succeed.
Now if is back to failing in the same way.  It appears that during
the masquarade that chan_skinny closes it's channel too fast and
the playback of the parking extension is now to a non-existant channel.

Instant segfault.  If you can offer ma a tip or two on how to convince
chan_skinny to delay tearing down the channel, I think this can be
resolved that way.  Otherwise it might be handy/required to have a
version of ast_masq_park_call() that has a parameter to control whether
the calling channel driver will wait for an audio stream.

** Edit **
Actually, if chan_skinny originated the call is works, but is chan_skinny
received the call is fails.  I am trying to reference the other channels
with the park feature, but I do not see anything to hint at this behaviour.



By: dea (dea) 2007-12-07 12:32:49.000-0600

More macro madness.  Parking works in either direction if the call
to a skinny device is sent directly to the device:
exten => 7012,n, Dial(Skinny/7012@support)

BUT if is routes through a macro:
exten => 7012,n, Macro(stdexten,7012,Skinny/7012@support)

It will segfault if the call was inbound to the skinny device.  Outbound
does work.  So it looks like chan_skinny might need to be taught the
difference between calls sent directly to the device and calls that route
through a macro first.

By: dea (dea) 2008-01-22 16:26:16.000-0600

OK, it was not related to the use of macros.  It seems that using a macro
would alter the timing just enough that SOMETIMES it would work.

The real issue appears to be the relationship between:
ast_masq_park_call -> ast_park_call -> park_call_full

ast_masq_park_call sets up the masquerade and calls ast_park_call which
explicitly calls park_call_full with orig_chan_name set to NULL. Once
inside park_call_full, we use orig_chan_name to detect if this is a
masqueraded channel.

I've done a cursory review of apps/channels, and it appears the only
way into park_call_full is through ast_park_call or ast_masq_park_call,
so the logic used to test for masquerading could not possibly work.

By: Digium Subversion (svnbot) 2008-01-28 12:23:43.000-0600

Repository: asterisk
Revision: 100626

U   branches/1.4/res/res_features.c

------------------------------------------------------------------------
r100626 | russell | 2008-01-28 12:23:43 -0600 (Mon, 28 Jan 2008) | 7 lines

Fix a crash in ast_masq_park_call()

(issue ASTERISK-10856)
Reported by: DEA
Patches:
     res_features-park.txt uploaded by DEA (license 3)

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=100626

By: Digium Subversion (svnbot) 2008-01-28 12:24:19.000-0600

Repository: asterisk
Revision: 100627

_U  trunk/

------------------------------------------------------------------------
r100627 | russell | 2008-01-28 12:24:19 -0600 (Mon, 28 Jan 2008) | 15 lines

Merged revisions 100626 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100626 | russell | 2008-01-28 12:26:31 -0600 (Mon, 28 Jan 2008) | 7 lines

Fix a crash in ast_masq_park_call()

(issue ASTERISK-10856)
Reported by: DEA
Patches:
     res_features-park.txt uploaded by DEA (license 3)

........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=100627

By: Digium Subversion (svnbot) 2008-01-29 10:57:18.000-0600

Repository: asterisk
Revision: 100881

_U  team/murf/bug11210/
U   team/murf/bug11210/apps/app_voicemail.c
U   team/murf/bug11210/build_tools/menuselect-deps.in
U   team/murf/bug11210/channels/Makefile
U   team/murf/bug11210/channels/chan_h323.c
U   team/murf/bug11210/channels/chan_iax2.c
U   team/murf/bug11210/channels/chan_local.c
U   team/murf/bug11210/channels/chan_mgcp.c
U   team/murf/bug11210/channels/chan_misdn.c
U   team/murf/bug11210/channels/chan_sip.c
A   team/murf/bug11210/channels/chan_vpb.cc
U   team/murf/bug11210/channels/chan_zap.c
A   team/murf/bug11210/configs/vpb.conf.sample
U   team/murf/bug11210/configure
U   team/murf/bug11210/configure.ac
U   team/murf/bug11210/doc/tex/channelvariables.tex
U   team/murf/bug11210/include/asterisk/autoconfig.h.in
U   team/murf/bug11210/include/asterisk/channel.h
U   team/murf/bug11210/include/asterisk/sched.h
U   team/murf/bug11210/main/cdr.c
U   team/murf/bug11210/main/channel.c
U   team/murf/bug11210/main/dnsmgr.c
U   team/murf/bug11210/main/features.c
U   team/murf/bug11210/main/file.c
U   team/murf/bug11210/main/logger.c
U   team/murf/bug11210/main/pbx.c
U   team/murf/bug11210/main/rtp.c
U   team/murf/bug11210/makeopts.in
U   team/murf/bug11210/pbx/pbx_dundi.c

------------------------------------------------------------------------
r100881 | murf | 2008-01-29 10:57:16 -0600 (Tue, 29 Jan 2008) | 213 lines

Merged revisions 100488,100497,100514,100532-100533,100549,100565,100582,100625,100627-100628,100630-100632,100671,100674,100676-100679 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
r100488 | tilghman | 2008-01-27 15:35:29 -0700 (Sun, 27 Jan 2008) | 19 lines

Merged revisions 100465 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100465 | tilghman | 2008-01-27 15:59:53 -0600 (Sun, 27 Jan 2008) | 11 lines

When deleting a task from the scheduler, ignoring the return value could
possibly cause memory to be accessed after it is freed, which causes all
sorts of random memory corruption.  Instead, if a deletion fails, wait a
bit and try again (noting that another thread could change our taskid
value).
(closes issue ASTERISK-10897)
Reported by: flujan
Patches:
      20080124__bug11386.diff.txt uploaded by Corydon76 (license 14)
Tested by: Corydon76, flujan, stuarth`

........

................
r100497 | tilghman | 2008-01-27 16:14:48 -0700 (Sun, 27 Jan 2008) | 5 lines

With the switch to the ast_sched_replace* API in trunk, we lose the correction
that was just merged from 1.4, so this is a changeover to those APIs to use the
macro versions, so that we properly detect errors from ast_sched_del, instead
of simply ignoring the return values.

................
r100514 | russell | 2008-01-27 17:56:14 -0700 (Sun, 27 Jan 2008) | 5 lines

These readlocks always fail for me on my mac, and I saw it happen again
today on another mac.  We ignore the return value of locking operations almost
everywhere in Asterisk.  So, ignore these, as well, so Asterisk will actually
work on systems where this is occurring while I look into what the issue is.

................
r100532 | russell | 2008-01-27 21:30:44 -0700 (Sun, 27 Jan 2008) | 3 lines

- Simplify a line with ARRAY_LEN()
- Make a few little formatting changes

................
r100533 | russell | 2008-01-27 21:43:14 -0700 (Sun, 27 Jan 2008) | 2 lines

Make a couple more uses of ARRAY_LEN, and convert some spaces to tabs

................
r100549 | file | 2008-01-28 06:57:38 -0700 (Mon, 28 Jan 2008) | 4 lines

Don't do a network byte order conversion when setting the socket's port variable to that of bindaddr's. It is already in the correct network byte order.
(closes issue ASTERISK-11268)
Reported by: hmodes

................
r100565 | russell | 2008-01-28 07:27:28 -0700 (Mon, 28 Jan 2008) | 2 lines

Clean up some formatting, and simplify a bit of code using ast_str

................
r100582 | russell | 2008-01-28 10:21:24 -0700 (Mon, 28 Jan 2008) | 17 lines

Merged revisions 100581 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100581 | russell | 2008-01-28 11:15:41 -0600 (Mon, 28 Jan 2008) | 9 lines

Make some deadlock related fixes.  These bugs were discovered and reported
internally at Digium by Steve Pitts.
- Fix up chan_local to ensure that the channel lock is held before the local
  pvt lock.
- Don't hold the channel lock when executing the timing function, as it can
  cause a deadlock when using chan_local.  This actually changes the code back
  to be how it was before the change for issue ASTERISK-10339.  But, I added some other
  locking that I think will prevent the problem reported there, as well.

........

................
r100625 | qwell | 2008-01-28 11:24:40 -0700 (Mon, 28 Jan 2008) | 9 lines

Merged revisions 100624 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100624 | qwell | 2008-01-28 12:23:09 -0600 (Mon, 28 Jan 2008) | 1 line

Correct a comment which made little/no sense.
........

................
r100627 | russell | 2008-01-28 11:27:08 -0700 (Mon, 28 Jan 2008) | 15 lines

Merged revisions 100626 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100626 | russell | 2008-01-28 12:26:31 -0600 (Mon, 28 Jan 2008) | 7 lines

Fix a crash in ast_masq_park_call()

(issue ASTERISK-10856)
Reported by: DEA
Patches:
     res_features-park.txt uploaded by DEA (license 3)

........

................
r100628 | tilghman | 2008-01-28 11:27:29 -0700 (Mon, 28 Jan 2008) | 3 lines

Normalize the detection for execinfo, so that Linux (glibc) and other platforms
with libexecinfo will generate inline stack backtraces correctly.

................
r100630 | russell | 2008-01-28 11:38:56 -0700 (Mon, 28 Jan 2008) | 13 lines

Merged revisions 100629 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100629 | russell | 2008-01-28 12:34:20 -0600 (Mon, 28 Jan 2008) | 5 lines

For some reason, the use of this strdupa() is leading to memory corruption on
freebsd sparc64.  This trivial workaround fixes it.

(closes issue ASTERISK-9956, closes issue ASTERISK-11316, reported by mattias04 and Home-of-the-Brave)

........

................
r100631 | russell | 2008-01-28 11:41:23 -0700 (Mon, 28 Jan 2008) | 3 lines

Merge rev 100626 from Asterisk 1.4.  The svnmerge of this commit was a NoOp, since
res_features doesn't exist in trunk.  Thanks to qwell for pointing it out!

................
r100632 | file | 2008-01-28 12:04:53 -0700 (Mon, 28 Jan 2008) | 2 lines

Fix up two scheduling issues. In one instance a scheduled item was not deleted when it should have been and in the other it was scheduled again when it shouldn't have been.

................
r100671 | file | 2008-01-28 13:40:08 -0700 (Mon, 28 Jan 2008) | 6 lines

Fix up some T38 state change issues.
(closes issue ASTERISK-11106)
Reported by: dimas
Patches:
     v2-sip-t38state.patch uploaded by dimas (license 88)

................
r100674 | mmichelson | 2008-01-28 13:58:12 -0700 (Mon, 28 Jan 2008) | 10 lines

Blocked revisions 100673 via svnmerge

........
r100673 | mmichelson | 2008-01-28 14:55:56 -0600 (Mon, 28 Jan 2008) | 3 lines

Undoing the deprecation of chan_vpb. It is alive and well.


........

................
r100676 | qwell | 2008-01-28 14:02:11 -0700 (Mon, 28 Jan 2008) | 16 lines

Merged revisions 100672 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

(closes issue ASTERISK-11263)
........
r100672 | qwell | 2008-01-28 14:42:43 -0600 (Mon, 28 Jan 2008) | 7 lines

When using ODBC_STORAGE, make sure we put greeting files into the database like we do with the others.

Issue ASTERISK-11263
Reported by: dimas
Patches:
     vmgreet.patch uploaded by dimas (license 88)

........

................
r100677 | tilghman | 2008-01-28 14:05:29 -0700 (Mon, 28 Jan 2008) | 10 lines

Merged revisions 100675 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100675 | tilghman | 2008-01-28 15:02:02 -0600 (Mon, 28 Jan 2008) | 2 lines

WaitExten didn't handle AbsoluteTimeout properly (went to 't' instead of 'T')

........

................
r100678 | mmichelson | 2008-01-28 14:07:18 -0700 (Mon, 28 Jan 2008) | 3 lines

Re-inserting chan_vpb into trunk.


................
r100679 | qwell | 2008-01-28 14:11:24 -0700 (Mon, 28 Jan 2008) | 1 line

Reintroduce more chan_vpb stuff that was removed in r100421 and r100422
................

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=100881

By: Michiel van Baak (mvanbaak) 2008-04-23 12:40:51

@Dan: Can you test this with the latest -trunk ? Now that we have multiparking merged in there a lot has changed. I wonder if it works there.

By: dea (dea) 2008-04-23 13:21:07

My patch to fix the segfault in res_features.c (now features.c) was merged,
but the chan_skinny patch to impliment call park was not.

I will look to see how the multiparking changes mesh with the patch.

By: Michiel van Baak (mvanbaak) 2008-06-13 04:39:18

Here's an updated patch that actually applies and compiles.
Have not tested it yet, just made the patch compatible with latest trunk.

By: Michiel van Baak (mvanbaak) 2008-06-13 05:03:36

tested the patch.
It seems to work great so far.

SIP -> Skinny(7960)
Skinny(7905) -> Skinny(7960)
Skinny(7960) -> SIP

Ready for commit ?

By: Digium Subversion (svnbot) 2008-06-13 06:14:02

Repository: asterisk
Revision: 122493

U   trunk/channels/chan_skinny.c

------------------------------------------------------------------------
r122493 | mvanbaak | 2008-06-13 06:13:53 -0500 (Fri, 13 Jun 2008) | 9 lines

Implement call parking in chan_skinny.

(closes issue ASTERISK-10856)
Reported by: DEA
Patches:
     chan_skinny-park.txt uploaded by DEA (license 3)
     chan_skinny-park-v2.diff.txt uploaded by mvanbaak (license 7)
Tested by: DEA, mvanbaak

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=122493

By: Digium Subversion (svnbot) 2008-06-13 06:15:20

Repository: asterisk
Revision: 122494

_U  branches/1.6.0/

------------------------------------------------------------------------
r122494 | mvanbaak | 2008-06-13 06:15:16 -0500 (Fri, 13 Jun 2008) | 16 lines

Blocked revisions 122493 via svnmerge

........
r122493 | mvanbaak | 2008-06-13 13:20:47 +0200 (Fri, 13 Jun 2008) | 9 lines

Implement call parking in chan_skinny.

(closes issue ASTERISK-10856)
Reported by: DEA
Patches:
     chan_skinny-park.txt uploaded by DEA (license 3)
     chan_skinny-park-v2.diff.txt uploaded by mvanbaak (license 7)
Tested by: DEA, mvanbaak

........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=122494