Skip to content
Snippets Groups Projects
  1. Apr 21, 2011
  2. Jan 04, 2011
  3. Nov 02, 2010
  4. Oct 29, 2010
  5. Jul 23, 2010
  6. Jul 21, 2010
  7. 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
  8. Jul 06, 2010
  9. Jun 08, 2010
  10. Jun 03, 2010
  11. Jun 01, 2010
  12. May 28, 2010
  13. May 07, 2010
  14. Apr 21, 2010
  15. Feb 12, 2010
  16. Jan 18, 2010
  17. Dec 09, 2009
  18. Dec 02, 2009
  19. Nov 13, 2009
  20. 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
  21. 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
  22. Oct 01, 2009
  23. Sep 24, 2009
  24. Sep 16, 2009
  25. Sep 03, 2009
  26. 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
  27. 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
  28. Jul 17, 2009
  29. Jun 30, 2009
  30. Jun 27, 2009
  31. 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
  32. Apr 02, 2009
  33. Mar 16, 2009
  34. Feb 27, 2009
  35. Feb 17, 2009
    • Russell Bryant's avatar
      Merge a large set of updates to the Asterisk indications API. · 4ec30136
      Russell Bryant authored
      This patch includes a number of changes to the indications API.  The primary
      motivation for this work was to improve stability.  The object management
      in this API was significantly flawed, and a number of trivial situations could
      cause crashes.
      
      The changes included are:
      
      1) Remove the module res_indications.  This included the critical functionality
         that actually loaded the indications configuration.  I have seen many people
         have Asterisk problems because they accidentally did not have an
         indications.conf present and loaded.  Now, this code is in the core,
         and Asterisk will fail to start without indications configuration.
      
         There was one part of res_indications, the dialplan applications, which did
         belong in a module, and have been moved to a new module, app_playtones.
      
      2) Object management has been significantly changed.  Tone zones are now
         managed using astobj2, and it is no longer possible to crash Asterisk by
         issuing a reload that destroys tone zones while they are in use.
      
      3) The API documentation has been filled out.
      
      4) The API has been updated to follow our naming conventions.
      
      5) Various bits of code throughout the tree have been updated to account
         for the API update.
      
      6) Configuration parsing has been mostly re-written.
      
      7) "Code cleanup"
      
      The code is from svn/asterisk/team/russell/indications/.
      
      Review: http://reviewboard.digium.com/r/149/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@176627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      4ec30136
Loading