Skip to content
Snippets Groups Projects
  1. Mar 04, 2011
    • Richard Mudgett's avatar
      Merged revisions 309445 via svnmerge from · 928ec2b9
      Richard Mudgett authored
      https://origsvn.digium.com/svn/asterisk/branches/1.8
      
      ........
        r309445 | rmudgett | 2011-03-04 09:22:04 -0600 (Fri, 04 Mar 2011) | 46 lines
        
        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/trunk@309446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      928ec2b9
  2. Nov 10, 2010
  3. Sep 16, 2010
  4. Aug 24, 2010
  5. Aug 13, 2010
  6. Aug 10, 2010
  7. Jul 26, 2010
  8. Jul 23, 2010
  9. Jul 21, 2010
  10. Jul 14, 2010
    • Richard Mudgett's avatar
      ast_callerid restructuring · ec37ffbd
      Richard Mudgett authored
      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
      ec37ffbd
  11. Jul 06, 2010
  12. Jun 08, 2010
  13. Jun 03, 2010
  14. Jun 01, 2010
  15. May 28, 2010
  16. May 07, 2010
  17. Apr 21, 2010
  18. Feb 12, 2010
  19. Jan 18, 2010
  20. Dec 09, 2009
  21. Dec 02, 2009
  22. Nov 13, 2009
  23. Nov 02, 2009
    • Richard Mudgett's avatar
      DAHDI ISDN channel names will not allow device state to work. (Interim solution.) · 6406f395
      Richard Mudgett authored
      Since ISDN works like SIP and not analog ports in regard to devices, the
      device state based on the ISDN channel number could not work.  This has
      not been an issue until the advent of PTMP NT mode.  Previously, ISDN
      lines were used as trunks and did not have to keep track of specific
      devices.
      
      As an interim solution until device states are properly implemented, the
      channel name is being changed to the following format to use the generic
      device state support:
      DAHDI/i<span>/<number>[:<subaddress>]-<sequence-number>
      
      Dialplan hints would thus be:
      exten => xxx,hint,DAHDI/i2/5551212
      
      This will work with the following restrictions:
      *  The number of devices/phones cannot exceed the number of B channels.
      (i.e., BRI has 2)
      *  Each device/phone can only have one number.  No shared MSN's.
      *  The phones/devices probably should not use subaddressing.
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@226882 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      6406f395
  24. Oct 05, 2009
    • Kevin P. Fleming's avatar
      Allow non-compliant T.38 endpoints to be supportable via configuration option. · 20743ec0
      Kevin P. Fleming authored
      Many T.38 endpoints incorrectly send the maximum IFP frame size they can accept
      as the T38FaxMaxDatagram value in their SDP, when in fact this value is
      supposed to be the maximum UDPTL payload size (datagram size) they can accept.
      If the value they supply is small enough (a commonly supplied value is '72'),
      T.38 UDPTL transmissions will likely fail completely because the UDPTL packets
      will not have enough room for a primary IFP frame and the redundancy used for
      error correction. If this occurs, the Asterisk UDPTL stack will emit log messages
      warning that data loss may occur, and that the value may need to be overridden.
      
      This patch extends the 't38pt_udptl' configuration option in sip.conf to allow
      the administrator to override the value supplied by the remote endpoint and
      supply a value that allows T.38 FAX transmissions to be successful with that
      endpoint. In addition, in any SIP call where the override takes effect, a debug
      message will be printed to that effect. This patch also removes the
      T38FaxMaxDatagram configuration option from udptl.conf.sample, since it has not
      actually had any effect for a number of releases.
      
      In addition, this patch cleans up the T.38 documentation in sip.conf.sample
      (which incorrectly documented that T.38 support was passthrough only).
      
      (issue #15586)
      Reported by: globalnetinc
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@222110 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      20743ec0
  25. Oct 01, 2009
  26. Sep 24, 2009
  27. Sep 16, 2009
  28. Sep 03, 2009
  29. Aug 03, 2009
    • Kevin P. Fleming's avatar
      Rename 'canreinvite' option to 'directmedia', with backwards compatibility. · e9d22f80
      Kevin P. Fleming authored
      It is clear from multiple mailing list, forum, wiki and other sorts of posts
      that users don't really understand the effects that the 'canreinvite' config
      option actually has, and that in some cases they think that setting it to 'no'
      will actually cause various other features (T.38, MOH, etc.) to not work properly,
      when in fact this is not the case. This patch changes the proper name of the
      option to what it should have been from the beginning ('directmedia'), but
      preserves backwards compatibility for existing configurations.
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@210190 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      e9d22f80
  30. Jul 23, 2009
    • Kevin P. Fleming's avatar
      T.38 change note is not necessary in this branch · 34766550
      Kevin P. Fleming authored
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@208504 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      34766550
    • Kevin P. Fleming's avatar
      Rework of T.38 negotiation and UDPTL API to address interoperability problems · 0a6e06c7
      Kevin P. Fleming authored
      Over the past couple of months, a number of issues with Asterisk
      negotiating (and successfully completing) T.38 sessions with various
      endpoints have been found. This patch attempts to address many of
      them, primarily focused around ensuring that the endpoints'
      MaxDatagram size is honored, and in addition by ensuring that T.38
      session parameter negotiation is performed correctly according to the
      ITU T.38 Recommendation.
      
      The major changes here are:
      
      1) T.38 applications in Asterisk (app_fax) only generate/receive IFP
      packets, they do not ever work with UDPTL packets. As a result of
      this, they cannot be allowed to generate packets that would overflow
      the other endpoints' MaxDatagram size after the UDPTL stack adds any
      error correction information. With this patch, the application is told
      the maximum *IFP* size it can generate, based on a calculation using
      the far end MaxDatagram size and the active error correction mode on
      the T.38 session. The same is true for sending *our* MaxDatagram size
      to the remote endpoint; it is computed from the value that the
      application says it can accept (for a single IFP packet) combined with
      the active error correction mode.
      
      2) All treatment of T.38 session parameters as 'capabilities' in
      chan_sip has been removed; these parameters are not at all like
      audio/video stream capabilities. There are strict rules to follow for
      computing an answer to a T.38 offer, and chan_sip now follows those
      rules, using the desired parameters from the application (or channel)
      that wants to accept the T.38 negotiation.
      
      3) chan_sip now stores and forwards ast_control_t38_parameters
      structures for tracking 'our' and 'their' T.38 session parameters;
      this greatly simplifies negotiation, especially for pass-through
      calls.
      
      4) Since T.38 negotiation without specifying parameters or receiving
      the final negotiated parameters is not very worthwhile, the
      AST_CONTROL_T38 control frame has been removed. A note has been added
      to UPGRADE.txt about this removal, since any out-of-tree applications
      that use it will no longer function properly until they are upgraded
      to use AST_CONTROL_T38_PARAMETERS.
      
      Review: https://reviewboard.asterisk.org/r/310/
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@208464 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      0a6e06c7
  31. Jul 17, 2009
  32. Jun 30, 2009
  33. Jun 27, 2009
  34. Apr 24, 2009
    • Russell Bryant's avatar
      Convert the ast_channel data structure over to the astobj2 framework. · cba19c8a
      Russell Bryant authored
      There is a lot that could be said about this, but the patch is a big 
      improvement for performance, stability, code maintainability, 
      and ease of future code development.
      
      The channel list is no longer an unsorted linked list.  The main container 
      for channels is an astobj2 hash table.  All of the code related to searching 
      for channels or iterating active channels has been rewritten.  Let n be 
      the number of active channels.  Iterating the channel list has gone from 
      O(n^2) to O(n).  Searching for a channel by name went from O(n) to O(1).  
      Searching for a channel by extension is still O(n), but uses a new method 
      for doing so, which is more efficient.
      
      The ast_channel object is now a reference counted object.  The benefits 
      here are plentiful.  Some benefits directly related to issues in the 
      previous code include:
      
      1) When threads other than the channel thread owning a channel wanted 
         access to a channel, it had to hold the lock on it to ensure that it didn't 
         go away.  This is no longer a requirement.  Holding a reference is 
         sufficient.
      
      2) There are places that now require less dealing with channel locks.
      
      3) There are places where channel locks are held for much shorter periods 
         of time.
      
      4) There are places where dealing with more than one channel at a time becomes 
         _MUCH_ easier.  ChanSpy is a great example of this.  Writing code in the 
         future that deals with multiple channels will be much easier.
      
      Some additional information regarding channel locking and reference count 
      handling can be found in channel.h, where a new section has been added that 
      discusses some of the rules associated with it.
      
      Mark Michelson also assisted with the development of this patch.  He did the 
      conversion of ChanSpy and introduced a new API, ast_autochan, which makes it 
      much easier to deal with holding on to a channel pointer for an extended period 
      of time and having it get automatically updated if the channel gets masqueraded.
      Mark was also a huge help in the code review process.
      
      Thanks to David Vossel for his assistance with this branch, as well.  David 
      did the conversion of the DAHDIScan application by making it become a wrapper 
      for ChanSpy internally.
      
      The changes come from the svn/asterisk/team/russell/ast_channel_ao2 branch.
      
      Review: http://reviewboard.digium.com/r/203/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@190423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      cba19c8a
Loading