Skip to content
Snippets Groups Projects
  1. Jul 25, 2014
  2. Jul 24, 2014
    • Richard Mudgett's avatar
      accountcode: Slightly change accountcode propagation. · a2ce95d9
      Richard Mudgett authored
      The previous behavior was to simply set the accountcode of an outgoing
      channel to the accountcode of the channel initiating the call.  It was
      done this way a long time ago to allow the accountcode set on the SIP/100
      channel to be propagated to a local channel so the dialplan execution on
      the Local;2 channel would have the SIP/100 accountcode available.
      
      SIP/100 -> Local;1/Local;2 -> SIP/200
      
      Propagating the SIP/100 accountcode to the local channels is very useful.
      Without any dialplan manipulation, all channels in this call would have
      the same accountcode.
      
      Using dialplan, you can set a different accountcode on the SIP/200 channel
      either by setting the accountcode on the Local;2 channel or by the Dial
      application's b(pre-dial), M(macro) or U(gosub) options, or by the
      FollowMe application's b(pre-dial) option, or by the Queue application's
      macro or gosub options.  Before Asterisk v12, the altered accountcode on
      SIP/200 will remain until the local channels optimize out and the
      accountcode would change to the SIP/100 accountcode.
      
      Asterisk v1.8 attempted to add peeraccount support but ultimately had to
      punt on the support.  The peeraccount support was rendered useless because
      of how the CDR code needed to unconditionally force the caller's
      accountcode onto the peer channel's accountcode.  The CEL events were thus
      intentionally made to always use the channel's accountcode as the
      peeraccount value.
      
      With the arrival of Asterisk v12, the situation has improved somewhat so
      peeraccount support can be made to work.  Using the indicated example, the
      the accountcode values become as follows when the peeraccount is set on
      SIP/100 before calling SIP/200:
      
      SIP/100 ---> Local;1 ---- Local;2 ---> SIP/200
      acct: 100 \/ acct: 200 \/ acct: 100 \/ acct: 200
      peer: 200 /\ peer: 100 /\ peer: 200 /\ peer: 100
      
      If a channel already has an accountcode it can only change by the
      following explicit user actions:
      
      1) A channel originate method that can specify an accountcode to use.
      
      2) The calling channel propagating its non-empty peeraccount or its
      non-empty accountcode if the peeraccount was empty to the outgoing
      channel's accountcode before initiating the dial.  e.g., Dial and
      FollowMe.  The exception to this propagation method is Queue.  Queue will
      only propagate peeraccounts this way only if the outgoing channel does not
      have an accountcode.
      
      3) Dialplan using CHANNEL(accountcode).
      
      4) Dialplan using CHANNEL(peeraccount) on the other end of a local
      channel pair.
      
      If a channel does not have an accountcode it can get one from the
      following places:
      
      1) The channel driver's configuration at channel creation.
      
      2) Explicit user action as already indicated.
      
      3) Entering a basic or stasis-mixing bridge from a peer channel's
      peeraccount value.
      
      You can specify the accountcode for an outgoing channel by setting the
      CHANNEL(peeraccount) before using the Dial, FollowMe, and Queue
      applications.  Queue adds the wrinkle that it will not overwrite an
      existing accountcode on the outgoing channel with the calling channels
      values.
      
      Accountcode and peeraccount values propagate to an outgoing channel before
      dialing.  Accountcodes also propagate when channels enter or leave a basic
      or stasis-mixing bridge.  The peeraccount value only makes sense for
      mixing bridges with two channels; it is meaningless otherwise.
      
      * Made peeraccount functional by changing accountcode propagation as
      described above.
      
      * Fixed CEL extracting the wrong ie value for the peeraccount.  This was
      done intentionally in Asterisk v1.8 when that version had to punt on
      peeraccount.
      
      * Fixed a few places dealing with accountcodes that were reading from
      channels without the lock held.
      
      AFS-65 #close
      
      Review: https://reviewboard.asterisk.org/r/3601/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      a2ce95d9
    • Michael L. Young's avatar
      core/db: Revert Patch Added In Attempt To Improve I/O Performance · 7059b001
      Michael L. Young authored
      Reverting the patch since it was causing a regression and after fixing the
      regression, there were no performance gains.  At least based on my method
      for measurement.
      
      ASTERISK-24050
      
      Review: https://reviewboard.asterisk.org/r/3841/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419504 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      7059b001
    • Matthew Jordan's avatar
      device state: Update the core to report ONHOLD if a channel is on hold · f6283866
      Matthew Jordan authored
      In Asterisk, it is possible for a device to have a status of ONHOLD. This is
      not typically an easy thing to determine, as a channel being on hold is not
      a direct channel state. Typically, this has to be calculated outside of the
      core independently in channel drivers, notably, chan_sip and chan_pjsip. Both
      of these channel drivers already have to calculate device state in a fashion
      more complex than the core can handle, as they aggregate all state of all
      channels associated with a peer/endpoint; they also independently track
      whether or not one of those channels is currently on hold and mark the device
      state appropriately.
      
      In 12+, we now have the ability to report an AST_DEVICE_ONHOLD state for all
      channels that defer their device state to the core. This is due to channel hold
      state actually now being tracked on the channel itself. If a channel driver
      defers its device state to the core (which many, such as DAHDI, IAX2, and
      others do in most situations), the device state core already goes out to get a
      channel associated with the device. As such, it can now also factor the channel
      hold state in its calculation.
      
      This patch adds this logic to the device state core. It also uses an existing
      mapping between device state and channel state to handle more channel states.
      chan_pjsip has been updated slightly as well to make use of this (as it was,
      for some reason, reporting a channel state of BUSY as a device state of INUSE,
      which feels slightly wrong).
      
      Review: https://reviewboard.asterisk.org/r/3771/
      
      ASTERISK-24038 #close
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419358 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      f6283866
    • Kinsey Moore's avatar
      AMI: Allow for command response documentation · 4445ee7f
      Kinsey Moore authored
      Allow for responses to AMI actions/commands to be documented properly
      in XML and displayed via the CLI. Response events are documented
      exactly as standard AMI events are documented.
      
      Review: https://reviewboard.asterisk.org/r/3812/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      4445ee7f
  3. Jul 23, 2014
  4. Jul 22, 2014
    • Michael L. Young's avatar
      core/bridge_channel: Substitute Variables In Features Application Map · f613fc24
      Michael L. Young authored
      Say you wanted to include variables in an application map and have those
      variables substituted and passed along to the application being executed;
      currently this does not happen.
      
      This patch adds this ability to pass channel variable values to an
      application before being executed.
      
      ASTERISK-22608 #close
      Reported by: Michael L. Young
      patches:
        features_substitute_arguments_v2.diff
                                           uploaded by Michael L. Young (license 5026)
      
      Review: https://reviewboard.asterisk.org/r/3819/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419252 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      f613fc24
    • Michael L. Young's avatar
      core/db: Improve I/O When Updating Rows · b4a68168
      Michael L. Young authored
      When updating a row, we are currently doing an INSERT OR REPLACE INTO.  The
      downside to this is that the row is deleted if it exists and then a new row is
      inserted.  So, we are hitting the disk twice.  One for the deletion and one for
      the insertion.
      
      This patch changes this statement to an INSERT INTO and if the insert fails
      because a row with that key exists, we will IGNORE the failure.  Then we will
      attempt to perform an UPDATE on the existing row if that row wasn't just
      INSERTed.
      
      ASTERISK-24050 #close
      Reported by: Michael L. Young
      patches:
        astdb-insert-update-io-help_trunk_v2.diff
                                           uploaded by Michael L. Young (license 5026)
      
      Review: https://reviewboard.asterisk.org/r/3815/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      b4a68168
    • Matthew Jordan's avatar
      ARI: Fix endpoint/channel subscription issues; allow for subscriptions to tech · bb87796f
      Matthew Jordan authored
      This patch serves two purposes:
      (1) It fixes some bugs with endpoint subscriptions not reporting all of the
          channel events
      (2) It serves as the preliminary work needed for ASTERISK-23692, which allows
          for sending/receiving arbitrary out of call text messages through ARI in a
          technology agnostic fashion.
      
      The messaging functionality described on ASTERISK-23692 requires two things:
      (1) The ability to send/receive messages associated with an endpoint. This is
          relatively straight forwards with the endpoint core in Asterisk now.
      (2) The ability to send/receive messages associated with a technology and an
          arbitrary technology defined URI. This is less straight forward, as
          endpoints are formed from a tech + resource pair. We don't have a
          mechanism to note that a technology that *may* have endpoints exists.
      
      This patch provides such a mechanism, and fixes a few bugs along the way.
      
      The first major bug this patch fixes is the forwarding of channel messages
      to their respective endpoints. Prior to this patch, there were two problems:
      (1) Channel caching messages weren't forwarded. Thus, the endpoints missed
          most of the interesting bits (such as channel creation, destruction, state
          changes, etc.)
      (2) Channels weren't associated with their endpoint until after creation.
          This resulted in endpoints missing the channel creation message, which
          limited the usefulness of the subscription in the first place (a major use
          case being 'tell me when this endpoint has a channel'). Unfortunately,
          this meant another parameter to ast_channel_alloc. Since not all channel
          technologies support an ast_endpoint, this patch makes such a call
          optional and opts for a new function, ast_channel_alloc_with_endpoint.
      
      When endpoints are created, they will implicitly create a technology endpoint
      for their technology (if one does not already exist). A technology endpoint is
      special in that it has no state, cannot have channels created for it, cannot
      be created explicitly, and cannot be destroyed except on shutdown. It does,
      however, have all messages from other endpoints in its technology forwarded to
      it.
      
      Combined with the bug fixes, we now have Stasis messages being properly
      forwarded. Consider the following scenario: two PJSIP endpoints (foo and bar),
      where bar has a single channel associated with it and foo has two channels
      associated with it. The messages would be forwarded as follows:
      
      channel PJSIP/foo-1 --
                            \
                             --> endpoint PJSIP/foo --
                            /                         \
      channel PJSIP/foo-2 --                           \
                                                        ---- > endpoint PJSIP
                                                      /
      channel PJSIP/bar-1 -----> endpoint PJSIP/bar --
      
      ARI, through the applications resource, can:
       - subscribe to endpoint:PJSIP/foo and get notifications for channels
         PJSIP/foo-1,PJSIP/foo-2 and endpoint PJSIP/foo
       - subscribe to endpoint:PJSIP/bar and get notifications for channels
         PJSIP/bar-1 and endpoint PJSIP/bar
       - subscribe to endpoint:PJSIP and get notifications for channels
         PJSIP/foo-1,PJSIP/foo-2,PJSIP/bar-1 and endpoints PJSIP/foo,PJSIP/bar
      
      Note that since endpoint PJSIP never changes, it never has events itself. It
      merely provides an aggregation point for all other endpoints in its technology
      (which in turn aggregate all channel messages associated with that endpoint).
      
      This patch also adds endpoints to res_xmpp and chan_motif, because the actual
      messaging work will need it (messaging without XMPP is just sad).
      
      Review: https://reviewboard.asterisk.org/r/3760/
      
      ASTERISK-23692
      ........
      
      Merged revisions 419196 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419203 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      bb87796f
  5. Jul 21, 2014
  6. Jul 20, 2014
  7. Jul 18, 2014
  8. Jul 17, 2014
  9. Jul 15, 2014
  10. Jul 13, 2014
  11. Jul 11, 2014
  12. Jul 09, 2014
  13. Jul 07, 2014
  14. Jul 04, 2014
    • Matthew Jordan's avatar
      main/Makefile: fix compilation error of buildinfo occurring on 'make install' · 9711bb7b
      Matthew Jordan authored
      Egads. Another bad deletion of too much when attempting to remove h323 stuff.
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@418050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      9711bb7b
    • Matthew Jordan's avatar
      configure: Remove last vestiges of h323; DO create menuselect-deps · 0e844b75
      Matthew Jordan authored
      The previous patch (r418034) fixed the 'glitch' that the channels/h323
      Makefile no longer existed. Unfortunately, removing the entire line was a bit
      of a blunder, as it meant that build_tools/menuselect-deps was never
      generated. Hilarity ensued when actually trying to compile.
      
      But hey! At least configure worked.
      
      This patch fixes *that* glitch, and removes some more of the vestiges of h323.
      (It had tendrils in the main Makefile? Crazy.)
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@418035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      0e844b75
    • Matthew Jordan's avatar
      Remove many deprecated modules · 97834718
      Matthew Jordan authored
      Billing records are fair,
      To get paid is quite bright,
      You should really use ODBC;
      Good-bye cdr_sqlite.
      
      Microsoft did once push H.323,
      Hell, we all remember NetMeeting.
      But try to compile chan_h323 now
      And you will take quite a beating.
      
      The XMPP and SIP war was fierce,
      And in the distant fray
      Was birthed res_jabber/chan_jingle;
      But neither to stay.
      
      For everyone did care and chase what Google professed.
      "Free Internet Calling" was what devotees cried,
      But Google did change the specs so often
      That the developers were happy the day chan_gtalk died.
      
      And then there was that odd application
      Dedicated to the Polish tongue.
      app_saycountpl was subsumed by Say;
      One could say its bell was rung.
      
      To read and parse a file from the dialplan
      You could (I guess) use an application.
      app_readfile did fill that purpose, but I think
      A function is perhaps better in its creation.
      
      Barging is rude, I'm not sure why we do it.
      Inwardly, the caller will probably sigh.
      But if you really must do it,
      Don't use app_dahdibarge, use ChanSpy.
      
      We all despise the sound of tinny robots
      It makes our queues so cold.
      To control such an abomination
      It's better to not use Wait/SetMusicOnHold.
      
      It's often nice to know properties of a channel
      It makes our calls right
      We have a nice function called CHANNEL
      And so SIPCHANINFO is sent off into the night.
      
      And now things get odd;
      Apparently one could delimit with a colon
      Properties from the SIPPEER function!
      Commas are in; all others are done.
      
      Finally, a word on pipes and commas.
      We're sorry. We can't say it enough.
      But those compatibility options in asterisk.conf;
      To maintain them forever was just too tough.
      
      This patch removes:
      
      * cdr_sqlite
      * chan_gtalk
      * chan_jingle
      * chan_h323
      * res_jabber
      * app_saycountpl
      * app_readfile
      * app_dahdibarge
      
      It removes the following applications/functions:
      
      * WaitMusicOnHold
      * SetMusicOnHold
      * SIPCHANINFO
      
      It removes the colon delimiter from the SIPPEER function.
      
      Finally, it also removes all compatibility options that were configurable from
      asterisk.conf, as these all applied to compatibility with Asterisk 1.4 systems.
      
      Review: https://reviewboard.asterisk.org/r/3698/
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@418019 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      97834718
  15. Jul 03, 2014
  16. Jun 30, 2014
Loading