Commit Graph

139 Commits

Author SHA1 Message Date
Richard Mudgett
3dace58a49 chan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled.
When overlap dialing is enabled, the lack of inband audio available
information in the SETUP_ACKNOWLEDGE events causes an interoperability
problem with SIP.  sig_pri doesn't know if there is dialtone present when
a SETUP_ACKNOWLEDGE is received so it assumes it is there and posts an
AST_CONTROL_PROGRESS frame.  The SIP channel driver then sends out a 183
Session Progress and blocks the desired 180 Ringing message when the
ALERTING message comes in.

* Made the configure script detect if the installed version of libpri
supports the SETUP_ACKNOWLEDGE enhancements.

* Using the new API, made generate an AST_CONTROL_PROGRESS frame on an
incoming SETUP_ACKNOWLEDGE message when the message indicates inband audio
is present instead of assuming that dialtone is present.

* Using the new API, made SETUP_ACKNOWLEDGE send out an inband audio
available indication only if dialtone is expected.  The change also makes
the fallback behaviour of sending the PROGRESS message better by sending
it only if dialtone is expected.

* Changed receiving a PROCEEDING message to not generate an
AST_CONTROL_PROGRESS frame if the progress indication ie indicates
non-end-to-end-ISDN.  This helps interoperability with SIP.

* Changed sending a PROCEEDING message in response to an
AST_CONTROL_PROCEEDING frame to not indicate inband audio available.  It
was silly to do so anyway because the channel driver doesn't know if
inband audio is even available.  This helps interoperability with SIP.

This patch and a corresponding change in libpri work together to allow
Asterisk to control the inband audio available progress indication ie on
the SETUP_ACKNOWLEDGE message when dialtone is present.

AST-1338 #close
Reported by: Tyler Stewart

Review: https://reviewboard.asterisk.org/r/3521/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@413714 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-05-12 23:08:09 +00:00
Kinsey Moore
3e9a54d857 Allow Asterisk to compile under GCC 4.10
This resolves a large number of compiler warnings from GCC 4.10 which
cause the build to fail under dev mode. The vast majority are
signed/unsigned mismatches in printf-style format strings.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@413586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-05-09 22:18:59 +00:00
Richard Mudgett
f7fe7d533f chan_dahdi/PRI: Suppress CONNECTED_LINE updates when nothing in the udpate is valid.
* Also simplified some subddress handling code.

(closes issue ASTERISK-23008)
Reported by: Michael Cargile


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@405926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-01-20 21:58:48 +00:00
Richard Mudgett
f49ffa9d4c Fix memory corruption when trying to get "core show locks".
Review https://reviewboard.asterisk.org/r/2580/ tried to fix the mismatch
in memory pools but had a math error determining the buffer size and
didn't address other similar memory pool mismatches.

* Effectively reverted the previous patch to go in the same direction as
trunk for the returned memory pool of ast_bt_get_symbols().

* Fixed memory leak in ast_bt_get_symbols() when BETTER_BACKTRACES is
defined.

* Fixed some formatting in ast_bt_get_symbols().

* Fixed sig_pri.c freeing memory allocated by libpri when MALLOC_DEBUG is
enabled.

* Fixed __dump_backtrace() freeing memory from ast_bt_get_symbols() when
MALLOC_DEBUG is enabled.

* Moved __dump_backtrace() because of compile issues with the utils
directory.

(closes issue ASTERISK-22221)
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/2778/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@397525 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-08-23 15:34:27 +00:00
Richard Mudgett
7bdeb23dd2 chan_dahdi: Add inband_on_proceeding compatibility option.
The new inband_on_proceeding option causes Asterisk to assume inband audio
may be present when a PROCEEDING message is received.

Q.931 Section 5.1.2 says the network cannot assume that the CPE side has
attached to the B channel at this time without explicitly sending the
progress indicator ie informing the CPE side to attach to the B channel
for audio.  However, some non-compliant ISDN switches send a PROCEEDING
without the progress indicator ie indicating inband audio is available and
assume that the CPE device has connected the media path for listening to
ringback and other messages.

ASTERISK-17834 which causes this issue was dealing with a non-compliant
network switch.

(closes issue ASTERISK-21151)
Reported by: Gianluca Merlo
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@384685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-04-03 20:13:18 +00:00
Richard Mudgett
4f1021ad64 Set the CALLERID(dnid-num-plan) for incoming ISDN calls.
The CALLEDTON channel variable is set for incoming ISDN calls to the lower
7 bits of the Q.931 type-of-number/numbering-plan octet.  The
CALLERID(dnid-num-plan) should have the same value.

(closes issue ASTERISK-21248)
Reported by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@383796 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-03-25 23:19:06 +00:00
Mark Michelson
e95efa6c50 Fix misuses of timeouts throughout the code.
Prior to this change, a common method for determining if a timeout
was reached was to call a function such as ast_waitfor_n() and inspect
the out parameter that told how many milliseconds were left, then use
that as the input to ast_waitfor_n() on the next go-around.

The problem with this is that in some cases, submillisecond timeouts
can occur, resulting in the out parameter not decreasing any. When this
happens thousands of times, the result is that the timeout takes much
longer than intended to be reached. As an example, I had a situation where
a 3 second timeout took multiple days to finally end since most wakeups
from ast_waitfor_n() were under a millisecond.

This patch seeks to fix this pattern throughout the code. Now we log the
time when an operation began and find the difference in wall clock time
between now and when the event started. This means that sub-millisecond timeouts
now cannot play havoc when trying to determine if something has timed out.

Part of this fix also includes changing the function ast_waitfor() so that it
is possible for it to return less than zero when a negative timeout is given
to it. This makes it actually possible to detect errors in ast_waitfor() when
there is no timeout.

(closes issue ASTERISK-20414)
reported by David M. Lee

Review: https://reviewboard.asterisk.org/r/2135/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@375993 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-11-07 17:01:13 +00:00
Richard Mudgett
af738476ca Use better libss7 detection test and move libpri compile test.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@371012 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-09 18:58:44 +00:00
Kevin P. Fleming
f83d1b98e8 Add support-level indications to many more source files.
Since we now have tools that scan through the source tree looking for files
with specific support levels, we need to ensure that every file that is
a component of a 'core' or 'extended' module (or the main Asterisk binary)
is explicitly marked with its support level. This patch adds support-level
indications to many more source files in tree, but avoids adding them to
third-party libraries that are included in the tree and to source files
that don't end up involved in Asterisk itself.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-15 15:56:08 +00:00
Richard Mudgett
f7d2d4601b Use the DEADLOCK_AVOIDANCE() macro instead.
(issue ASTERISK-19854)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367980 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 18:05:48 +00:00
Richard Mudgett
0bad4cbdde Fix deadlock when executing CLI "pri show channels" and "ss7 show channels" commands.
* Fix sig_pri_lock_owner() to avoid deadlock properly.

* Code pri_grab() better.

* Fix sig_ss7_lock_owner() to avoid deadlock properly.

* Code ss7_grab() better.

(closes issue ASTERISK-19854)
Reported by: Jaxon
Patches:
      jira_asterisk_19854_v1.8.6.patch (license #5621) patch uploaded by rmudgett (Modified to do the same thing to sig_ss7)
Tested by: Jaxon


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@367976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 17:21:43 +00:00
Richard Mudgett
1302d291c7 Make DAHDISendCallreroutingFacility wait 5 seconds for a reply before disconnecting the call.
Some switches may not handle the call-deflection/call-rerouting message if
the call is disconnected too soon after being sent.  Asteisk was not
waiting for any reply before disconnecting the call.

* Added a 5 second delay before disconnecting the call to wait for a
potential response if the peer does not disconnect first.

(closes issue ASTERISK-19708)
Reported by: mehdi Shirazi
Patches:
      jira_asterisk_19708_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@363730 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25 20:46:15 +00:00
Richard Mudgett
74a9fcd6c4 Clear ISDN channel resetting state if the peer continues to use it.
Some ISDN switches occasionally fail to send a RESTART ACKNOWLEDGE in
response to a RESTART request.

* Made the second SETUP received after sending a RESTART request clear the
channel resetting state as if the peer had sent the expected RESTART
ACKNOWLEDGE before continuing to process the SETUP.  The peer may not be
sending the expected RESTART ACKNOWLEDGE.

(issue ASTERISK-19608)
(issue AST-844)
(issue AST-815)
Patches:
      jira_ast_815_v1.8.patch (license #5621) patch uploaded by rmudgett (modified)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@363687 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25 19:45:34 +00:00
Richard Mudgett
e9a0da476a Add ability to ignore layer 1 alarms for BRI PTMP lines.
Several telcos bring the BRI PTMP layer 1 down when the line is idle.
When layer 1 goes down, Asterisk cannot make outgoing calls.  Incoming
calls could fail as well because the alarm processing is handled by a
different code path than the Q.931 messages.

* Add the layer1_presence configuration option to ignore layer 1 alarms
when the telco brings layer 1 down.  This option can be configured by span
while the similar DAHDI driver teignorered=1 option is system wide.  This
option unlike layer2_persistence does not require libpri v1.4.13 or newer.

Related to JIRA AST-598

JIRA ABE-2845


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@362428 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-18 16:20:14 +00:00
Richard Mudgett
c04afdbc70 Make number not available presentation also set screening to network provided.
Q.951 indicates that when the presentation indicator is "Number not
available due to interworking" for a number then the screening indicator
field should be "Network provided".

* Made ast_party_id_presentation() return AST_PRES_NUMBER_NOT_AVAILABLE
when the presentation is "Number not available due to interworking".  This
fix makes Asterisk consistent and it also makes it consistent with earlier
branches as far as this presentation value is concerned.

* Made pri_to_ast_presentation() and ast_to_pri_presentation() conversions
handle the "Number not available due to interworking" case better in
sig_pri.c.  This change is possible because the minimum required libpri
version (v1.4.11) has the necessary defines in libpri.h.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@360309 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-24 00:35:25 +00:00
Richard Mudgett
a36c4234a4 Remove ISDN hold restriction for non-bridged calls.
The check if an ISDN call is bridged before it could be placed on hold is
not necessary and is overly restrictive.  The check was originally done to
prevent problems with call transfers in case a user tried to transfer a
call connected to an application to another call connected to an
application.  The ISDN transfer code has not required this restriction for
quite some time because ECT could transfer any two active calls to each
other.

* Remove ISDN hold restriction for calls connected to applications.

* Made ast_waitfordigit_full() ignore AST_CONTROL_HOLD and
AST_CONTROL_UNHOLD instead of generating a warning message.

(closes issue ASTERISK-19388)
Reported by: Birger Harzenetter
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-02 18:34:29 +00:00
Richard Mudgett
ec57a80169 Use more reasonable cause code when rejecting incoming call waiting calls.
(closes issue ASTERISK-19397)
Reported by: Birger Harzenetter
Patches:
      nochannel-cause.patch (license #5870) patch uploaded by Birger Harzenetter


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@357407 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-28 20:57:33 +00:00
Alec L Davis
1b6601bc0a push 'outgoing' flag from sig_XXX up to chan_dahdi
'p->outgoing' in chan_dahdi and sig_analog wern't kept in sync, particulary FXS ast_hangup didn't clear the 'outgoing' flag.
sig_pri and sig_ss7 were keeping 'outgoing' flag insync.

Now provides a callback for all the low level sig_XXX modules.

(issue ASTERISK-19316)

alecdavis (license 585)
Reported by: Jeremy Pepper
Tested by: alecdavis
 
Review: https://reviewboard.asterisk.org/r/1747/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355850 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-18 07:55:11 +00:00
Richard Mudgett
c5fc58c3a0 Restore the 'w' modifier support for ISDN spans. Dial(DAHDI/g0/1234w888)
This feature also causes the sending complete ie to be sent for switch
types that do not automatically send the ie.  (EuroISDN/ETSI)

The main difference between dialing Dial(DAHDI/g0/1234w888) and
Dial(DAHDI/g0/1234,,D(888)) is the sending of the sending complete ie.

(closes issue ASTERISK-19176)
Reported by: rmudgett
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-02 20:01:00 +00:00
Richard Mudgett
1dedc40b51 Remove dead code since pri_grab() can never fail.
Dead code makes programmers sick.  I am sick of looking at it.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-17 17:06:14 +00:00
Richard Mudgett
d46a92b5b2 Fix typo in sig_pri using wrong structure name.
It is fortunate that the typo does not alter generated code since the
e->restart.channel and e->ring.channel members are in the same position.

(closes issue ASTERISK-18868)
Reported by: zvision
Patches:
      sig_pri.c.diff (License #5755) patch uploaded by zvision


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345370 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-15 18:15:23 +00:00
Richard Mudgett
bcdf507f3c Change D-channel warning to be less confusing on non-NFAS setups.
The "No D-channels available!  Using Primary channel as D-channel anyway!"
WARNING message has been confusing on non-NFAS setups.  The message refers
to things that are NFAS specific.

* Changed the warning to several different warnings to be more accurate
for the situation and less confusing as a result:
"No D-channels up!  Switching selected D-channel from X to Y.",
"No D-channels up!", and
"D-channel is down!".


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@342484 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-25 21:45:54 +00:00
Richard Mudgett
8711d897d0 Make duplicate call ptr warning message more helpful.
* Adds the value of the call ptr to the duplicate call ptr message to help
trace why there is a duplicate call ptr.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@338322 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-28 22:35:52 +00:00
Richard Mudgett
f8b799c0c1 Made ISDN not add numbering plan prefix strings to empty numbers.
When the Caller-ID is restricted, the expected behavior is for the
Caller-ID to be blank.  In chan_dahdi, the national prefix is placed onto
the Caller-ID number even if it is restricted (empty) causing the
Caller-ID to be the national prefix rather than blank.

This behavior was lost when sig_pri was extracted from chan_dahdi.

* Made not add prefix strings to empty connected line, calling, and ANI
number strings.

(closes issue ASTERISK-18577)
Reported by: Kris Shaw
Patches:
      jira_asterisk_18577_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: Kris Shaw


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@337720 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-22 21:29:46 +00:00
Richard Mudgett
9eb7ccef76 Rework sig_pri_hangup() to be simpler and clearer.
JIRA AST-675


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@336569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-19 15:25:34 +00:00
Matthew Jordan
7dc49195d8 Updated SIP 484 handling; added Incomplete control frame
When a SIP phone uses the dial application and receives a 484 Address 
Incomplete response, if overlapped dialing is enabled for SIP, then
the 484 Address Incomplete is forwarded back to the SIP phone and the
HANGUPCAUSE channel variable is set to 28.  Previously, the Incomplete
application dialplan logic was automatically triggered; now, explicit
dialplan usage of the application is required.

Additionally, this patch adds a new AST_CONTOL_FRAME type called
AST_CONTROL_INCOMPLETE.  If a channel driver receives this control frame,
it is an indication that the dialplan expects more digits back from the
device.  If the device supports overlap dialing it should attempt to 
notify the device that the dialplan is waiting for more digits; otherwise,
it can handle the frame in a manner appropriate to the channel driver.

(closes issue ASTERISK-17288)
Reported by: Mikael Carlsson
Tested by: Matthew Jordan

Review: https://reviewboard.asterisk.org/r/1416/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@335064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-09-09 16:09:09 +00:00
Richard Mudgett
9328590ddb Outgoing BRI calls fail when using Asterisk 1.8 with HA8, HB8, and B410P cards.
France Telecom brings layer 2 and layer 1 down on BRI lines when the line
is idle.  When layer 1 goes down Asterisk cannot make outgoing calls and
the HA8 and HB8 cards also get IRQ misses.

The inability to make outgoing calls is because the line is in red alarm
and Asterisk will not make calls over a line it considers unavailable.
The IRQ misses for the HA8 and HB8 card are because the hardware is
switching clock sources from the line which just brought layer 1 down to
internal timing.

There is a DAHDI option for the B410P card to not tell Asterisk that layer
1 went down so Asterisk will allow outgoing calls: "modprobe wcb4xxp
teignored=1".  There is a similar DAHDI option for the HA8 and HB8 cards:
"modprobe wctdm24xxp bri_teignored=1".  Unfortunately that will not clear
up the IRQ misses when the telco brings layer 1 down.

* Add layer 2 persistence option to customize the layer 2 behavior on BRI
PTMP lines.  The new option has three settings: 1) Use libpri default
layer 2 setting.  2) Keep layer 2 up.  Bring layer 2 back up when the peer
brings it down.  3) Leave layer 2 down when the peer brings it down.
Layer 2 will be brought up as needed for outgoing calls.

JIRA AST-598


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@332264 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-08-17 15:51:08 +00:00
Richard Mudgett
c4afd498c0 Merged revisions 330033 from
https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier

..........
  r330033 | rmudgett | 2011-07-28 11:26:38 -0500 (Thu, 28 Jul 2011) | 15 lines

  Datacalls with B410P fail.

  Incoming and outgoing call legs of a data call are using different
  formats: a-law, u-law.  When the call is bridged, the media stream is run
  through translation to convert the media formats.  The translation is bad
  for data calls.

  * Make incoming call that does not explicitly specify u-law or a-law use
  the DAHDI channel's default law.  The outgoing call always uses the
  default law from the DAHDI channel.

  (closes issue ABE-2800)
  Patches:
	jira_abe_2800_companding.patch (license #5621) patch uploaded by rmudgett
..........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@330050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-28 17:04:24 +00:00
Richard Mudgett
a7394bcd28 Backport useful CLI "pri show channels" command to v1.8.
The "pri show channels" command is useful for debuging to see if there are
any stuck B channels.

..........
  r307964 | rmudgett | 2011-02-15 15:42:55 -0600 (Tue, 15 Feb 2011) | 9 lines

  Add CLI "pri show channels" command.

  List the current mapping of DAHDI B channels to Asterisk channel names and
  which calls are on hold or call-waiting.  Calls on hold or call-waiting
  are not associated with any B channel.

  JIRA LIBPRI-27
  JIRA SWP-2547

..........
  r308205 | rmudgett | 2011-02-17 14:21:56 -0600 (Thu, 17 Feb 2011) | 1 line

  Add more verbage to CLI command 'pri show channels' usage.

..........
  r312579 | rmudgett | 2011-04-04 11:17:58 -0500 (Mon, 04 Apr 2011) | 59 lines

  Change also updates 'pri show channels' command with the "chan idle"
  column to report if a channel is available for use.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@329012 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-07-20 20:52:33 +00:00
Richard Mudgett
209d8d3c15 PRI early media won't ring.
And another way to pass early media.  Don't indicate that there is inband
information present, just assume that the B channel is connected.

* Restore clearing the dialing flag Rx squelch unconditionally when a
PROCEEDING message comes in.

(closes issue #19268)
Reported by: tbsky
Patches:
      issue19268_v1.8.patch uploaded by rmudgett (license 664)
Tested by: tbsky


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318783 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-13 01:47:05 +00:00
Richard Mudgett
0ec0f72506 Unable to pickup DAHDI/PRI call because call state is reported as DIALING.
The channel state is not updated to RINGING when an ALERTING message is
received.  Regression caused when sig_pri.c (also sig_ss7.c) extracted
from chan_dahdi.c.

* Added missing channel state update to RINGING when the
AST_CONTROL_RINGING frame is queued for ISDN and SS7.

(closes issue #19257)
Reported by: alecdavis
Patches:
      issue19257_v1.8_v2.patch uploaded by rmudgett (license 664)
Tested by: alecdavis, rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318499 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-10 23:41:08 +00:00
Richard Mudgett
90c544c0e1 Don't get early media for ISDN on outgoing calls.
It looks to be a long-standing misinterpretation of the progress indicator
ie values:
1 - Call is not end-to-end ISDN; further call progress information may be
available in-band.
8 - In-band information or an appropriate pattern is now available.

Only value 8 is handled by chan_dahdi/sig_pri.  The 1 value is not handled
as early media probably because the meaning of the second half of it's
description was overlooked.

* Test to see if either PRI_PROG_CALL_NOT_E2E_ISDN(1) or
PRI_PROG_INBAND_AVAILABLE(8) bits are set to open the media path.

(closes issue #18868)
Reported by: isrl
Patches:
      issue18868_19246_v1.8.patch uploaded by rmudgett (license 664)
Tested by: satish_lx

..........

No inband progress on PRI_EVENT_RINGING even if inband flag set.

My ISDN-PRI provider sends an ALERTING with "Inband information or
appropriate pattern now available", but Asterisk only generates and passes
the RING to the SIP extension, not the inband message.  Unfortunately, the
inband message is not a ringback tone but a prompt that says the number is
not in service.  The SIP extension then hears two rings and the call is
hungup which confuses the caller.

* Post an AST_CONTROL_PROGRESS as well as opening the media path if inband
audio is indicated with an ALERTING message.

(closes issue #19246)
Reported by: cristiandimache
Patches:
      issue19246_v1.8.patch uploaded by rmudgett (license 664)
Tested by: cristiandimache


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@318231 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-09 16:57:18 +00:00
Richard Mudgett
c5ad2f12a0 The dahdi_hangup() call does not clean up the channel fully.
After dahdi_hangup() has supposedly hungup an ISDN channel there is still
traffic on the S0-bus because the channel was not cleaned up fully.

Shuffled the hangup code to include some missing cleanup.  Also fixed some
code formatting in the area.  I think the primary missing clean up code
was the call to tone_zone_play_tone() to turn off any active tones on the
channel.

(closes issue #19188)
Reported by: jg1234
Patches:
      issue19188_v1.8.patch uploaded by rmudgett (license 664)
Tested by: jg1234


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@316224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-05-03 19:18:30 +00:00
Alec L Davis
20ef1e9c95 Fix ISDN calling subaddr User Specified Odd/Even Flag
Calculation of the Odd/Even flag was wrong.
Implement correct algo, and set odd/even=0 if data would be truncated.
Only allow automatic calculation of the O/E flag, don't let dialplan influence.

(closes issue #19062)
Reported by: festr
Patches: 
      bug19062.diff2.txt uploaded by alecdavis (license 585)
Tested by: festr, alecdavis, rmudgett



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@313001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-07 10:19:31 +00:00
Richard Mudgett
4242cb82f4 Crash if ISDN span layer 1 is down on initial load.
Regression from -r312575 B channel shifting during negotiation.

* Also combine updating the alarm flag with clearing the resetting flag.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@312949 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-05 18:45:24 +00:00
Richard Mudgett
458a57d1d3 Merged revisions 312574 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r312574 | rmudgett | 2011-04-04 11:00:02 -0500 (Mon, 04 Apr 2011) | 45 lines
  
  Merged revisions 312573 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r312573 | rmudgett | 2011-04-04 10:49:30 -0500 (Mon, 04 Apr 2011) | 38 lines
    
    Issues with ISDN calls changing B channels during call negotiations.
    
    The handling of the PROCEEDING message was not using the correct call
    structure if the B channel was changed.  (The same for PROGRESS.) The call
    was also not hungup if the new B channel is not provisioned or is busy.
    
    * Made all call connection messages (SETUP_ACKNOWLEDGE, PROCEEDING,
    PROGRESS, ALERTING, CONNECT, CONNECT_ACKNOWLEDGE) ensure that they are
    using the correct structure and B channel.  If there is any problem with
    the operations then the call is now hungup with an appropriate cause code.
    
    * Made miscellaneous messages (INFORMATION, FACILITY, NOTIFY) find the
    correct structure by looking for the call and not using the channel ID.
    NOTIFY is an exception with versions of libpri before v1.4.11 because a
    call pointer is not available for Asterisk to use.
    
    * Made all hangup messages (DISCONNECT, RELEASE, RELEASE_COMPLETE) find
    the correct structure by looking for the call and not using the channel
    ID.
    
    (closes issue #18313)
    Reported by: destiny6628
    Tested by: rmudgett
    JIRA SWP-2620
    
    (closes issue #18231)
    Reported by: destiny6628
    Tested by: rmudgett
    JIRA SWP-2924
    
    (closes issue #18488)
    Reported by: jpokorny
    JIRA SWP-2929
    
    JIRA AST-437 (The issues fixed here are most likely causing this JIRA issue.)
    JIRA DAHDI-406
    JIRA LIBPRI-33 (Stuck resetting flag likely fixed)
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@312575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-04 16:10:50 +00:00
Richard Mudgett
4f3cf039f4 Race condition when ISDN CallRerouting/CallDeflection invoked.
The queued AST_CONTROL_BUSY could sometimes be processed before the
call_forward dial string is recognized.

* Moved setting the call_forwarding dial string after sending a response
to the initiator and just queue an empty frame to wake up the media thread
instead of an AST_CONTROL_BUSY.

* Added check for empty rerouting/deflection number and respond with an
error.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@311297 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-03-18 02:59:05 +00:00
Richard Mudgett
8bfde13607 Make pri parameter description consistent.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@309994 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-03-08 16:37:02 +00:00
Richard Mudgett
5b9f9f78ca Get real channel of a DAHDI call.
Starting with Asterisk v1.8, the DAHDI channel name format was changed for
ISDN calls to: DAHDI/i<span>/<number>[:<subaddress>]-<sequence-number>

There were several reasons that the channel name had to change.

1) Call completion requires a device state for ISDN phones.  The generic
device state uses the channel name.

2) Calls do not necessarily have B channels.  Calls placed on hold by an
ISDN phone do not have B channels.

3) The B channel a call initially requests may not be the B channel the
call ultimately uses.  Changes to the internal implementation of the
Asterisk master channel list caused deadlock problems for chan_dahdi if it
needed to change the channel name.  Chan_dahdi no longer changes the
channel name.

4) DTMF attended transfers now work with ISDN phones because the channel
name is "dialable" like the chan_sip channel names.

For various reasons, some people need to know which B channel a DAHDI call
is using.

* Added CHANNEL(dahdi_span), CHANNEL(dahdi_channel), and
CHANNEL(dahdi_type) so the dialplan can determine the B channel currently
in use by the channel.  Use CHANNEL(no_media_path) to determine if the
channel even has a B channel.

* Added AMI event DAHDIChannel to associate a DAHDI channel with an
Asterisk channel so AMI applications can passively determine the B channel
currently in use.  Calls with "no-media" as the DAHDIChannel do not have
an associated B channel.  No-media calls are either on hold or
call-waiting.

(closes issue #17683)
Reported by: mrwho
Tested by: rmudgett

(closes issue #18603)
Reported by: arjankroon
Patches:
      issue17683_18603_v1.8_v2.patch uploaded by rmudgett (license 664)
Tested by: stever28, rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@309445 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-03-04 15:22:04 +00:00
Richard Mudgett
7b353a26ae sig_pri_new_ast_channel() should return NULL when new_ast_channel() fails.
(closes issue #18874)
Reported by: cmaj
Patches:
      patch-sig_pri-crash-possible-null-channel-pointer.diff.txt uploaded by cmaj (license 830)

JIRA SWP-3172


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@308622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-23 23:38:04 +00:00
Richard Mudgett
a5f6367057 No response sent for SIP CC subscribe/resubscribe request.
Asterisk does not send a response if we try to subscribe for call
completion after we have received a 180 Ringing.  You can only subscribe
for call completion when the call has been cleared.

When we receive the 180 Ringing, for this call, its call-completion state
is 'CC_AVAILABLE'.  If we then send a subscribe message to Asterisk, it
trys to change the call-completion state to 'CC_CALLER_REQUESTED'.
Because this is an invalid state change, it just ignores the message.  The
only state Asterisk will accept our subscribe message is in the
'CC_CALLER_OFFERED' state.

Asterisk will go into the 'CC_CALLER_OFFERED' when the SIP client clears
the call by sending a CANCEL.

Asterisk should always send a response.  Even if its a negative one.


The fix is to allow for the CCSS core to notify a CC agent that a failure
has occurred when CC is requested.  The "ack" callback is replaced with a
"respond" callback.  The "respond" callback has a parameter indicating
either a successful response or a specific type of failure that may need
to be communicated to the requester.

(closes issue #18336)
Reported by: GeorgeKonopacki
Tested by: mmichelson, rmudgett

JIRA SWP-2633

(closes issue #18337)
Reported by: GeorgeKonopacki
Tested by: mmichelson

JIRA SWP-2634


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@307879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-15 16:13:55 +00:00
Richard Mudgett
39728fbe4d Merged revisions 305342 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r305342 | rmudgett | 2011-01-31 17:50:10 -0600 (Mon, 31 Jan 2011) | 14 lines
  
  Merged revisions 305341 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r305341 | rmudgett | 2011-01-31 17:45:58 -0600 (Mon, 31 Jan 2011) | 7 lines
    
    Obtain the pri lock for PRI queue counters.
    
    Need to obtain the pri lock when calling pri_dump_info_str() to avoid a
    reentrancy problem when calculating the Q.921 Q count statistic.
    
    JIRA AST-484
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@305343 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-01 00:01:09 +00:00
Richard Mudgett
8e51d30b67 Merged revisions 303769 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r303769 | rmudgett | 2011-01-25 11:42:42 -0600 (Tue, 25 Jan 2011) | 47 lines
  
  Merged revisions 303765 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r303765 | rmudgett | 2011-01-25 11:36:50 -0600 (Tue, 25 Jan 2011) | 40 lines
    
    Sending out unnecessary PROCEEDING messages breaks overlap dialing.
    
    Issue #16789 was a good idea.  Unfortunately, it breaks overlap dialing
    through Asterisk.  There is not enough information available at this point
    to know if dialing is complete.  The ast_exists_extension(),
    ast_matchmore_extension(), and ast_canmatch_extension() calls are not
    adequate to detect a dial through extension pattern of "_9!".
    
    Workaround is to use the dialplan Proceeding() application early in
    non-dial through extensions.
    
    * Effectively revert issue #16789.
    
    * Allow outgoing overlap dialing to hear dialtone and other early media.
    A PROGRESS "inband-information is now available" message is now sent after
    the SETUP_ACKNOWLEDGE message for non-digital calls.  An
    AST_CONTROL_PROGRESS is now generated for incoming SETUP_ACKNOWLEDGE
    messages for non-digital calls.
    
    * Handling of the AST_CONTROL_CONGESTION in chan_dahdi/sig_pri was
    inconsistent with the cause codes.
    
    * Added better protection from sending out of sequence messages by
    combining several flags into a single enum value representing call
    progress level.
    
    * Added diagnostic messages for deferred overlap digits handling corner
    cases.
    
    (closes issue #17085)
    Reported by: shawkris
    
    (closes issue #18509)
    Reported by: wimpy
    Patches:
          issue18509_early_media_v1.8_v3.patch uploaded by rmudgett (license 664)
          Expanded upon issue18509_early_media_v1.8_v3.patch to include analog
          and SS7 because of backporting requirements.
    Tested by: wimpy, rmudgett
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@303771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-25 17:49:20 +00:00
Richard Mudgett
78e1319a13 Deadlock between dahdi_request() and pri_dchannel() processing an incomming call.
The sig_pri_new_ast_channel() is called with the channel private lock held
when pri_dchannel() calls it and no channel private lock held when
dahdi_request() calls it.  The use of pri_grab() in
sig_pri_new_ast_channel() could leave the channel private lock held when
it returns if the lock was not held before calling it.

Make sig_pri_new_ast_channel() just lock the PRI span lock instead of
using pri_grab().  It is safe to do this because dahdi_request() does not
have the channel private lock and the deadlock potential with the PRI span
lock is only between pri_dchannel() and other threads.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@301946 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-14 21:09:57 +00:00
Richard Mudgett
2baf7ac892 Merged revision 300711 from
https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier

..........
  r300711 | rmudgett | 2011-01-05 13:43:55 -0600 (Wed, 05 Jan 2011) | 14 lines

  A call retrieved from hold may wind up with no audio.

  If the retrieved call is natively bridged then the call may not have any
  audio path.  The following warning message is given:
  "Failed to add <dfd> to conference <chan>/<chan>: Invalid argument".

  * Open the media on a B channel when pri_fixup_principle() moves the call
  from a no_b_channel channel to a real channel.

  * Added lock protection while pri_fixup_principle() moves a call from one
  private structure to another.

  * Made some pri_fixup_principle() messages more meaningful.
..........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@300714 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-01-05 20:54:21 +00:00
Richard Mudgett
30a74dd9fe Chan_dahdi sends an empty COLP on the bridged channel.
Chan_dahdi always inserts a connected party IE when you call from one
dahdi channel to another dahdi channel, even if no such information was
received on the 2nd channel.  This clears the display of many phones.

* Removed leftover artifact from before the valid flag was added.

* Updated all of the channel's caller id information with the new
connected line information instead of just the string parts.

(closes issue #18508)
Reported by: wimpy
Patches:
      issue18508_trunk.patch uploaded by rmudgett (license 664)
Tested by: wimpy, rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@299405 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-22 02:10:39 +00:00
Richard Mudgett
3ed89f0e89 Merged revisions 298194 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r298194 | rmudgett | 2010-12-13 11:04:41 -0600 (Mon, 13 Dec 2010) | 26 lines
  
  Merged revisions 298193 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r298193 | rmudgett | 2010-12-13 10:56:07 -0600 (Mon, 13 Dec 2010) | 19 lines
    
    Outgoing PRI/BRI calls cannot do DTMF triggered transfers.
    
    Outgoing PRI/BRI calls cannot do DTMF triggered transfers if a PROCEEDING
    message is not received.  The debug output shows that the DTMF begin event
    is seen, but the DTMF end event is missing.  When the DTMF begin happens,
    the call is muted so we now have one way audio (until a DTMF end event is
    somehow seen).
    
    * Made set the proceeding flag when the PRI_EVENT_ANSWER event is
    received.
    
    * Made absorb the DTMF begin and DTMF end events if we are overlap dialing
    and have not seen a PROCEEDING message.
    
    * Added a debug message when absorbing a DTMF event.
    
    JIRA SWP-2690
    JIRA ABE-2697
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@298195 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-12-13 17:11:43 +00:00
Richard Mudgett
ac9434aecc Merged revisions 294822 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r294822 | rmudgett | 2010-11-11 20:44:12 -0600 (Thu, 11 Nov 2010) | 18 lines
  
  Merged revisions 294821 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r294821 | rmudgett | 2010-11-11 20:41:13 -0600 (Thu, 11 Nov 2010) | 11 lines
    
    Asterisk is getting a "No D-channels available!" warning message every 4 seconds.
    
    Asterisk is just whining too much with this message: "No D-channels
    available!  Using Primary channel XXX as D-channel anyway!".
    
    Filtered the message so it only comes out once if there is no D channel
    available without an intervening D channel available period.
    
    (closes issue #17270)
    Reported by: jmls
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@294823 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-11-12 02:45:22 +00:00
Richard Mudgett
3f9644b7db Analog lines do not transfer CONNECTED LINE or execute the interception macros.
Add connected line update for sig_analog transfers and simplify the
corresponding sig_pri and chan_misdn transfer code.

Note that if you create a three-way call in sig_analog before transferring
the call, the distinction of the caller/callee interception macros make
little sense.  The interception macro writer needs to be prepared for
either caller/callee macro to be executed.  The current implementation
swaps which caller/callee interception macro is executed after a three-way
call is created.

Review:	https://reviewboard.asterisk.org/r/996/

JIRA ABE-2589
JIRA SWP-2372


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@294349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-11-09 16:55:32 +00:00
Richard Mudgett
70415ccdfd No need to define the struct if there are no users.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@293081 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-26 16:32:59 +00:00