Commit Graph

107 Commits

Author SHA1 Message Date
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
Richard Mudgett
d411ade931 Allow the DAHDI driver to compile, even with a sufficiently older version of libpri.
Fixes our Bamboo builds.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@293046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-26 15:53:58 +00:00
Tilghman Lesher
d1aceac167 Several more defines that need to be altered for compiling against an older version of libpri
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@292969 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-25 21:15:19 +00:00
Tilghman Lesher
cdc420235e Allow the DAHDI driver to compile, even with a sufficiently older version of libpri.
Fixes our Bamboo builds.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@292906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-25 19:28:35 +00:00
Richard Mudgett
eeec27dafc Connected line is not updated when chan_dahdi/sig_pri or chan_misdn transfers a call.
When a call is transfered by ECT or implicitly by disconnect in sig_pri or
implicitly by disconnect in chan_misdn, the connected line information is
not exchanged.  The connected line interception macros also need to be
executed if defined.

The CALLER interception macro is executed for the held call.
The CALLEE interception macro is executed for the active/ringing call.

JIRA ABE-2589
JIRA SWP-2296

Patches:
      abe_2589_c3bier.patch uploaded by rmudgett (license 664)
      abe_2589_v1.8_v2.patch uploaded by rmudgett (license 664)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@292704 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-22 15:47:08 +00:00
Richard Mudgett
7e28c7c90d Send CONNECT_ACKNOWLEDGE for CIS calls too.
The originator of the Q.SIG call completion signaling link was not changed
to the active state when the CONNECT message came in.  The T309 processing
would immediately kill the signaling link because it was not in the active
state.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@292489 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-10-21 01:02:50 +00:00
Richard Mudgett
cb82f20163 Avoid deadlock processing incoming AOC-E messages.
Deadlock avoidance for the owner channel was not done when processing
incoming AOC-E messages.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@289057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-28 01:04:37 +00:00
Richard Mudgett
bb8e2fcef8 Revert stuff not ready for commit in -r289054.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@289055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-28 00:35:25 +00:00
Richard Mudgett
34b3615fff Break up long ast_manager_event_multichan() event lines.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@289054 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-28 00:32:18 +00:00
Richard Mudgett
c54833f35d Merged revisions 286116 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r286116 | rmudgett | 2010-09-10 15:42:44 -0500 (Fri, 10 Sep 2010) | 18 lines
  
  Merged revisions 286113 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r286113 | rmudgett | 2010-09-10 15:33:16 -0500 (Fri, 10 Sep 2010) | 11 lines
    
    An outgoing call may not get hung up if a pre-connect incoming ISDN call is disconnected.
    
    If the ISDN link a pre-connect incoming call is using fails or is reset,
    the outgoing leg may not hang up or be delayed in hanging up.  (Causes:
    PRI_CAUSE_NETWORK_OUT_OF_ORDER, PRI_CAUSE_DESTINATION_OUT_OF_ORDER, and
    PRI_CAUSE_NORMAL_TEMPORARY_FAILURE.)
    
    Just hang up the call if the incoming call leg hangs up before connecting
    for any reason.  It makes no sense to send a BUSY or CONGESTION control
    frame to the outgoing call leg under these circumstances.
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@286118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-10 20:55:37 +00:00
Richard Mudgett
5f2b40c699 Simplified pri_dchannel() poll timeout duration code.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@284780 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-02 21:02:54 +00:00
Richard Mudgett
c271acacda Made output libpri event names if pri debugging is enabled when sig_pri processes them.
* Simplified CLI "pri debug xx span xx" command code and removed redundant
debugging enabled messages.

* Made CLI "pri debug xx span xx" command only close the debugging log
file if it was opened.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@284779 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-09-02 20:59:12 +00:00
Richard Mudgett
c453d72423 Merged revisions 283049 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r283049 | rmudgett | 2010-08-20 10:31:03 -0500 (Fri, 20 Aug 2010) | 29 lines
  
  Merged revisions 283048 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r283048 | rmudgett | 2010-08-20 10:24:36 -0500 (Fri, 20 Aug 2010) | 22 lines
    
    Q931 - Sending PROGRESS after sending ALERTING is a protocol error
    
    The PRI layer in chan_dadhi will check if a PROGRESS message has already
    been sent, and not allow sending another (although that is technically
    allowed by the Q931 spec), however it does not protect against sending an
    ALERTING and then sending a PROGRESS message, which is a violation of the
    specification.
    
    Most switches don't seem to care too deeply about this, but some do, and
    will disconnect the call when receiving this invalid sequence.
    
    Protocol specification reference: T-REC-Q.931-199805-I page 223, "Figure
    A.5/Q.931 -- Overview protocol control (network side) point-point
    (sheet 3 of 8)"
    
    (closes issue #17874)
    Reported by: nic_bellamy
    Patches:
          asterisk-1.4-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299)
          asterisk-1.6.2-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299)
          asterisk-trunk-r282537_no-progress-after-alerting.patch uploaded by nic bellamy (license 299)
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@283050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-20 15:35:38 +00:00
Tilghman Lesher
4aed988d66 Merged revisions 282607 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r282607 | tilghman | 2010-08-18 02:43:14 -0500 (Wed, 18 Aug 2010) | 9 lines
  
  Don't warn on callerid when completely text, instead of numeric with localdialplan prefixes.
  
  (closes issue #16770)
   Reported by: jamicque
   Patches: 
         20100413__issue16770.diff.txt uploaded by tilghman (license 14)
         20100811__issue16770.diff.txt uploaded by tilghman (license 14)
   Tested by: jamicque
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@282608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-08-18 07:49:04 +00:00
Sean Bright
e32da6f7a5 Fix compilation error in chan_dahdi (strdupa -> ast_strdupa).
(closes issue #17751)
Reported by: b11d
Patches:
      strdupa_oops.diff uploaded by malcolmd (license 924)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@280519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-29 19:47:16 +00:00
Russell Bryant
e7b5069c9f Fix inband DTMF detection on outgoing ISDN calls.
This is a regression from the sig_pri split from chan_dahdi.  When a call is
first initiated, the inband DTMF detector is not enabled if it's an outgoing
ISDN call.  However, it needs to be turned on once the media path starts up.
This handling was put back in the open_media() callback of chan_dahdi.  In
sig_pri, open_media() calls were added to a few places where it was needed,
including handling of PRI_EVENT_RINGING, PRI_EVENT_PROGRESS, and
PRI_EVENT_PROCEEDING.

Thanks to rmudgett for helping me with the patch!


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@279916 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-27 19:50:56 +00:00
Richard Mudgett
301505c4c4 Rename sig_pri_pri to sig_pri_span. More descriptive of concept.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278942 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-23 15:41:44 +00:00
Richard Mudgett
7066a7f233 Reference correct struct member for unlikely event PRI_EVENT_CONFIG_ERR.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-20 22:38:13 +00:00
Richard Mudgett
cf7bbcc4c6 Expand the caller ANI field to an ast_party_id
Expand the ani field in ast_party_caller and ast_party_connected_line to
an ast_party_id.

This is an extension to the ast_callerid restructuring patch in review:
https://reviewboard.asterisk.org/r/702/

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276393 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-14 16:58:03 +00:00
Richard Mudgett
ec37ffbdaf ast_callerid restructuring
The purpose of this patch is to eliminate struct ast_callerid since it has
turned into a miscellaneous collection of various party information.

Eliminate struct ast_callerid and replace it with the following struct
organization:

struct ast_party_name {
	char *str;
	int char_set;
	int presentation;
	unsigned char valid;
};
struct ast_party_number {
	char *str;
	int plan;
	int presentation;
	unsigned char valid;
};
struct ast_party_subaddress {
	char *str;
	int type;
	unsigned char odd_even_indicator;
	unsigned char valid;
};
struct ast_party_id {
	struct ast_party_name name;
	struct ast_party_number number;
	struct ast_party_subaddress subaddress;
	char *tag;
};
struct ast_party_dialed {
	struct {
		char *str;
		int plan;
	} number;
	struct ast_party_subaddress subaddress;
	int transit_network_select;
};
struct ast_party_caller {
	struct ast_party_id id;
	char *ani;
	int ani2;
};

The new organization adds some new information as well.

* The party name and number now have their own presentation value that can
be manipulated independently.  ISDN supplies the presentation value for
the name and number at different times with the possibility that they
could be different.

* The party name and number now have a valid flag.  Before this change the
name or number string could be empty if the presentation were restricted.
Most channel drivers assume that the name or number is then simply not
available instead of indicating that the name or number was restricted.

* The party name now has a character set value.  SIP and Q.SIG have the
ability to indicate what character set a name string is using so it could
be presented properly.

* The dialed party now has a numbering plan value that could be useful to
have available.

The various channel drivers will need to be updated to support the new
core features as needed.  They have simply been converted to supply
current functionality at this time.


The following items of note were either corrected or enhanced:

* The CONNECTEDLINE() and REDIRECTING() dialplan functions were
consolidated into func_callerid.c to share party id handling code.

* CALLERPRES() is now deprecated because the name and number have their
own presentation values.

* Fixed app_alarmreceiver.c write_metadata().  The workstring[] could
contain garbage.  It also can only contain the caller id number so using
ast_callerid_parse() on it is silly.  There was also a typo in the
CALLERNAME if test.

* Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id
number string.  ast_callerid_parse() alters the given buffer which in this
case is the channel's caller id number string.  Then using
ast_shrink_phone_number() could alter it even more.

* Fixed caller ID name and number memory leak in chan_usbradio.c.

* Fixed uninitialized char arrays cid_num[] and cid_name[] in
sig_analog.c.

* Protected access to a caller channel with lock in chan_sip.c.

* Clarified intent of code in app_meetme.c sla_ring_station() and
dial_trunk().  Also made save all caller ID data instead of just the name
and number strings.

* Simplified cdr.c set_one_cid().  It hand coded the ast_callerid_merge()
function.

* Corrected some weirdness with app_privacy.c's use of caller
presentation.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276347 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-07-14 15:48:36 +00:00
Richard Mudgett
30888f913d Merged revisions 272446 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r272446 | rmudgett | 2010-06-24 16:58:49 -0500 (Thu, 24 Jun 2010) | 10 lines
  
  ss_thread calls pri_grab without lock during overlap dial
  
  Recent changes to chan_dahdi with relation to overlap dialing call
  pri_grab without first obtaining a lock.
  
  (closes issue #17414)
  Reported by: pdf
  Patches:
        bug17414.patch uploaded by jpeeler (license 325)
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@272447 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-24 22:11:26 +00:00
Richard Mudgett
93a5e74e37 Add digit manipulation tag support to chan_dahdi/sig_pri like chan_misdn.
Add the append_msn_to_cid_tag option to chan_dahdi like chan_misdn.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@270219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-14 15:55:35 +00:00
Richard Mudgett
0122ccd29c Extract sig_ss7 out of chan_dahdi.
Extract the SS7 specific code out of chan_dahdi like what was done to
ISDN/PRI and analog signaling.  The new SS7 structures were modeled on
sig_pri.

The changes to sig_pri are an enhancement and a bug fix made possible
because SS7 was extracted.

1) The sig_pri TRANSFERCAPABILITY channel variable should have been set
unconditionally in sig_pri_new_ast_channel().

2) SS7/PRI transfer capability interaction in dahdi_new() fixed because of
SS7 extraction.

3) Module ref count error in dahdi_new() if startpbx failed to start the
PBX for some reason.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@268774 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-07 20:04:42 +00:00
Richard Mudgett
0c5bce53ad Moved AOC request code out of the middle of code parsing the dialed number.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@268734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-07 19:06:55 +00:00
Richard Mudgett
10e2c47c75 Incoming overlap dialing no longer works after sig_pri extraction.
The problem would manifest itself if your dialplan matching could accept
more digits to match than were actually dialed.  The time out waiting for
overlap digits disconnected the call instead of matching any accumulated
digits to the dialplan.

Accidental conversion of a break out of loop as a break out of switch.

(closes issue #17401)
Reported by: avalentin
Patches:
      issue17401_digit_timeout.patch uploaded by rmudgett (license 664)
Tested by: avalentin, rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267928 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-04 14:45:03 +00:00
Richard Mudgett
1c67f208a7 Add ETSI Message Waiting Indication (MWI) support.
Add the ability to report waiting messages to ISDN endpoints (phones).

Relevant specification: EN 300 650 and EN 300 745

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267399 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-03 00:02:14 +00:00
Richard Mudgett
0760f4e70a Add ETSI Malicious Call ID support.
Add the ability to report malicious callers as an AMI event in the call
event class.

Relevant specification: EN 300 180

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267350 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-02 22:28:58 +00:00
Richard Mudgett
afcbc93dae Add ETSI Call Waiting support.
Add the ability to announce a call to an endpoint when there are no B
channels available.  A call waiting call is a SETUP message with no B
channel selected.

Relevant specification: EN 300 056, EN 300 057, EN 300 058

For DAHDI/ISDN channels, the CHANNEL() dialplan function now supports the
"no_media_path" option.
* Returns "0" if there is a B channel associated with the call.
* Returns "1" if no B channel is associated with the call.  The call is
either on hold or is a call waiting call.

If you are going to allow incoming call waiting calls then you need to use
CHANNEL(no_media_path) do determine if you must drop a call to accept the
new call.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-02 21:05:32 +00:00
Richard Mudgett
afd4454c44 Generic Advice of Charge.
Asterisk Generic AOC Representation
- Generic AOC encode/decode routines.
  (Generic AOC must be encoded to be passed on the wire in the AST_CONTROL_AOC frame)
- AST_CONTROL_AOC frame type to represent generic encoded AOC data
- Manager events for AOC-S, AOC-D, and AOC-E messages

Asterisk App Support
- app_dial AOC-S pass-through support on call setup
- app_queue AOC-S pass-through support on call setup

AOC Unit Tests
- AOC Unit Tests for encode/decode routines
- AOC Unit Test for manager event representation.

SIP AOC Support
- Pass-through of generic AOC-D and AOC-E messages to snom phones via the
  snom AOC specification.
- Creation of chan_sip page3 flags for the addition of the new
  'snom_aoc_enabled' sip.conf option.

IAX AOC Support
- Natively supports AOC pass-through through the use of the new
  AST_CONTROL_AOC frame type

DAHDI AOC Support
- ETSI PRI full AOC Pass-through support
- 'aoc_enable' chan_dahdi.conf option for independently enabling
  pass-through of AOC-S, AOC-D, AOC-E.
- 'aoce_delayhangup' option for retrieving AOC-E on disconnect.
- DAHDI A() dial string option for requesting AOC services.
  example usage:
  ;requests AOC-S, AOC-D, and AOC-E on call setup
  exten=>1111,1,Dial(DAHDI/g1/1112/A(s,d,e))

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267096 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-02 18:10:15 +00:00
Richard Mudgett
28264c52b9 Add ETSI Advice Of Charge (AOC) event reporting.
This feature generates AMI events in the new aoc event class from the
events passed up by libpri.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-02 17:13:53 +00:00
Richard Mudgett
48dd4d1249 Add ETSI Explicit Call Transfer (ECT) support.
Added ability to send and receive ETSI Explicit Call Transfer (ECT)
messages to eliminate tromboned calls.

Note: Asterisk already supported initiating the transfer of calls to
eliminate tromboned calls to libpri so there was nothing to do for the
asterisk portion.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@266926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-06-02 16:14:12 +00:00
Richard Mudgett
9534f72cb0 Dialing an invalid extension causes incomplete hangup sequence.
Revision -r1489 of the libpri 1.4 branch corrected a deviation from Q.931
Section 5.3.2.  However, this resulted in an unexpected behaviour change
to the upper layer (Asterisk).

This change uses pri_hangup_fix_enable() to follow Q.931 Section 5.3.2
call hangup better if the version of libpri supports it.

(issue #17104)
Reported by: shawkris
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@262569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-05-11 23:18:53 +00:00
Jeff Peeler
356b090875 Fix deadlock in sig_pri when hanging up.
The pri_dchannel thread currently violates locking order by locking the private
and then attempting to queue a frame, which needs to lock the channel. Queueing
a frame is unneccesary though and is actually a regression since sig_pri.
All the places that currently use ast_softhangup_nolock now will just set the
softhangup value directly as before.

(closes issue #17216)
Reported by: lmsteffan
Patches: 
      bug17216.patch uploaded by jpeeler (license 325)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@261866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-05-07 15:33:52 +00:00