Skip to content
Snippets Groups Projects
  1. Sep 04, 2008
    • Steve Murphy's avatar
      Merged revisions 141094 via svnmerge from · ec25f4be
      Steve Murphy authored
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
      r141094 | murf | 2008-09-04 17:15:07 -0600 (Thu, 04 Sep 2008) | 70 lines
      
      (closes issue #13357)
      Reported by: pj
      Tested by: murf
      
      (closes issue #13416)
      Reported by: yarns
      Tested by: murf
      
      If you find this message overly verbose, relax, it's probably
      not meant for you. This message is meant for probably only
      two people in the whole world: me, or the poor schnook that
      has to maintain this code because I'm either dead or unavailable
      at the moment.
      
      This fix solves two reports, both having to do with embedding
      a function call in a ${} construct. It was tricky because the
      funccall syntax has parenthesis () in it. And up till now,
      the 'word' token in the flex stuff didn't allow that, because
      it would tend to steal the LP and RP tokens. To be truthful,
      the "word" token was the trickiest, most unstable thing in
      the whole lexer. I was lucky it made this long without complaints.
      I had to choose every character in the pattern with extreme
      care, and I knew that someday I'd have to revisit it. Well,
      the day has come.
      
      So, my brilliant idea (and I'm being modest), was to use the 
      surrounding ${} construct to make a state machine and capture 
      everything in it, no matter what it contains. But, I have to now
      treat the word token like I did with comments, in that I turn
      the whole thing into a state-machine sort of spec, with new
      contexts "curlystate", "wordstate", and "brackstate".
      
      Wait a minute, "brackstate"? Yes, well, it didn't take very many
      regression tests to point out if I do this for ${} constructs,
      I also have to do it with the $[] constructs, too.
      
      I had to create a separate pcbstack2 and pcbstack3 because
      these constructs can occur inside macro argument lists, and
      when we have two state machines operating on the same structures
      we'd get problems otherwise. I guess I could have stopped at
      pcbstack2 and had the brackstate stuff share it, but it doesn't
      hurt to be safe. So, the pcbpush and pcbpop routines also now
      have versions for "2" and "3".
      
      I had to add the {KEYWORD} construct to the initial pattern for
      "word", because previously word would match stuff like "default7",
      because it was a longer match than the keyword "default". But,
      not any more, because the word pattern only matches only one or
      two characters now, and it will always lose. So, I made it the
      winner again by making an optional match on any of the keywords
      before it's normal pattern.
      
      I added another regression test to make sure we don't
      lose this in future edits, and had to fix just one regression,
      where it no longer reports a 'cascaded' error, which I guess
      is a plus.
      
      I've given some thought as to whether to apply these fixes to
      1.4 and the 1.6.x releases, vs trunk; I decided to put it in
      1.4 because one of the bug reports was against 1.4; and it
      is unexpected that AEL cannot handle this situation. It actually
      reduced the amount of useless "cascade" error messages that
      appeared in the regressions (by one line, ehhem). There is
      a possible side-effect in that it does now do more careful
      checking of what's in those ${} constructs, as far as matching
      parens, and brackets are concerned. Some users may find a an
      insidious problem and correct it this way. This should be 
      exceedingly rare, I hope.
      
      
      ........
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@141115 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      ec25f4be
  2. Aug 08, 2008
    • Steve Murphy's avatar
      Merged revisions 136726 via svnmerge from · a40f1cc1
      Steve Murphy authored
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
      r136726 | murf | 2008-08-07 18:15:34 -0600 (Thu, 07 Aug 2008) | 32 lines
      
      
      (closes issue #13236)
      Reported by: korihor
      
      Wow, this one was a challenge!
      
      I regrouped and ran a new strategy for
      setting the ~~MACRO~~ value; I set it once
      per extension, up near the top. It is only
      set if there is a switch in the extension.
      
      So, I had to put in a chunk of code to detect
      a switch in the pval tree.
      
      I moved the code to insert the set of ~~exten~~
      up to the beginning of the gen_prios routine, 
      instead of down in the switch code.
      
      I learned that I have to push the detection
      of the switches down into the code, so everywhere
      I create a new exten in gen_prios, I make sure
      to pass onto it the values of the mother_exten
      first, and the exten next.
      
      I had to add a couple fields to the exten
      struct to accomplish this, in the ael_structs.h
      file. The checked field makes it so we don't
      repeat the switch search if it's been done.
      
      I also updated the regressions.
      
      
      ........
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@136746 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      a40f1cc1
  3. Aug 07, 2008
  4. Aug 05, 2008
  5. Jul 30, 2008
  6. Jul 28, 2008
  7. Jul 11, 2008
  8. Jul 09, 2008
  9. Jul 08, 2008
  10. Jul 06, 2008
  11. Jul 05, 2008
  12. Jul 04, 2008
  13. Jun 29, 2008
  14. Jun 19, 2008
  15. Jun 18, 2008
  16. Jun 12, 2008
  17. Jun 10, 2008
    • Russell Bryant's avatar
      Merge another change from team/russell/events ... · f4a8062e
      Russell Bryant authored
      DUNDi uses a concept called the Entity ID for unique server identifiers.  I have
      pulled out the handling of EIDs and made it something available to all of Asterisk.
      There is now a global Entity ID that can be used for other purposes as well, such
      as code providing distributed device state, which is why I did this.  The global
      Entity ID is set automatically, just like it was done in DUNDi, but it can also be
      set in asterisk.conf.  DUNDi will now use this global EID unless one is specified
      in dundi.conf.
      
      The current EID for the system can be seen in the "core show settings" CLI command.
      It is also available in the dialplan via the ENTITYID variable.
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@121439 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      f4a8062e
  18. Jun 04, 2008
  19. Jun 03, 2008
  20. May 27, 2008
  21. May 22, 2008
  22. May 21, 2008
  23. May 14, 2008
  24. Apr 25, 2008
  25. Apr 21, 2008
    • Steve Murphy's avatar
      (closes issue #12467) · c0b8f57b
      Steve Murphy authored
      Reported by: atis
      Tested by: murf
      
      This upgrade adds the ~~ (concatenation) string operator to expr2.
      While not needed in normal runtime pbx operation, it is needed when
      raw exprs are being syntax checked. This plays into future syntax-
      unification plans. By permission of atis, this addition in trunk 
      and the reason of why things are as they are will suffice to close
      this bug.
      
      I also added a short note about the previous addition of "sip show sched"
      to the CLI in CHANGES, which I discovered I forgot in a previous commit.
      
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      c0b8f57b
  26. Mar 27, 2008
    • Steve Murphy's avatar
      Merged revisions 111341 via svnmerge from · 2427603e
      Steve Murphy authored
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
      r111341 | murf | 2008-03-26 21:21:05 -0600 (Wed, 26 Mar 2008) | 15 lines
      
      
      (closes issue #12302)
      Reported by: pj
      Tested by: murf
      
      These changes will set a channel variable ~~EXTEN~~ just before generating code
      for a switch, with the value of ${EXTEN}. The exten is marked as having a switch, 
      and ever after that, till the end of the exten, we substitute any ${EXTEN} 
      with ${~~EXTEN~~} instead in application arguments; (and the ${EXTEN: also). 
      The reason for this, is that because switches are coded using 
      separate extensions to provide pattern matching, and
      jumping to/from these switch extensions messes up the ${EXTEN} value, 
      which blows the minds of users.
      
      
      ........
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@111360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      2427603e
  27. Mar 18, 2008
    • Steve Murphy's avatar
      Merged revisions 109309 via svnmerge from · 4e29ae88
      Steve Murphy authored
      https://origsvn.digium.com/svn/asterisk/branches/1.4
      
      ........
      r109309 | murf | 2008-03-18 00:37:15 -0600 (Tue, 18 Mar 2008) | 17 lines
      
      (closes issue #11903)
      Reported by: atis
      
      Many thanks to atis for spotting this problem and reporting it.
      The fix was to straighten out how items are placed on and removed
      from the file stack. Regressions as well as the provided test case
      helped to straighten out all code paths. valgrind was used to make
      sure all memory allocated was freed.
      
      Sorry for not solving this earlier. I got distracted.
      
      Added the ntest23 regression test, which is mainly a copy of ntest22, 
      but with a few juicy errors thrown in, to replicate the kind of 
      error that atis spotted.
      
      
      
      ........
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@109357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      4e29ae88
  28. Mar 10, 2008
  29. Mar 07, 2008
    • Steve Murphy's avatar
      (closes issue #6002) · 377e51c4
      Steve Murphy authored
      Reported by: rizzo
      Tested by: murf
      
      Proposal of the changes to be made, and then an announcement of how they were accomplished:
      
      http://lists.digium.com/pipermail/asterisk-dev/2008-February/032065.html
      
      and:
      
      http://lists.digium.com/pipermail/asterisk-dev/2008-March/032124.html
      
      Here is a recap, file by file, of what I have done:
      
      pbx/pbx_config.c
      pbx/pbx_ael.c
      
      All funcs that were passed a ptr to the context list, now will ALSO be passed a hashtab ptr to the same set.
      Why? because (for the time being), the dialplan is stored in both, to facilitate a quick, low-cost move to
      hash-tables to speed up dialplan processing. If it was deemed necessary to pass the context LIST, well, it
      is just as necessary to have the TABLE available. This is because the list/table in question might not be
      the global one, but temporary ones we would use to stage the dialplan on, and then swap into the global
      position when things are ready.
      
      We now have one external function for apps to use, "ast_context_find_or_create()" instead of the pre-existing
      "find" and "create", as all existing usages used both in tandem anyway.
      
      pbx_config, and pbx_ael, will stage the reloaded dialplan into local lists and tables, and 
      then call merge_contexts_and_delete, which will merge (now) existing contexts and 
      priorities from other registrars into this local set by copying them. Then, merge_contexts_and_delete will
      lock down the contexts, swap the lists and tables, and unlock (real quick), and then 
      destroy the old dialplan.
      
      
      
      chan_sip.c
      chan_iax.c
      chan_skinny.c
      
      All the channel drivers that would add regcontexts now use the ast_context_find_or_create now.
      
      chan_sip also includes a small fix to get rid of warnings about removing priorities that never got entered.
      
      
      apps/app_meetme.c
      apps/app_dial.c
      apps/app_queue.c
      
      All the apps that added a context/exten/priority were also modified to use ast_context_find_or_create instead.
      
      
      include/asterisk/pbx.h
      
      ast_context_create() is removed. Find_or_create_ is the new method.
      ast_context_find_or_create()  interface gets the hashtab added.
      ast_merge_contexts_and_delete() gets the local hashtab arg added.
      ast_wrlock_contexts_version() is added so you can detect if someone else got a writelock between your readlocking and writelocking.
      ast_hashtab_compare_contexts was made public for use in pbx_config/pbx_ael
      ast_hashtab_hash_contexts was in like fashion make public.
      
      
      include/asterisk/pval.h
      
      ast_compile_ael2() interface changed to include the local hashtab table ptr.
      
      
      main/features.c
      
      For the sake of the parking context, we use ast_context_find_or_create().
      
      
      
      main/pbx.c
      
      I changed all the "tree" names to "table" instead. That's because the original
      implementation was based on binary trees. (had a free library). Then I moved
      to hashtabs. Now, the names move forward too.
      
      refcount field added to contexts, so you can keep track of how many modules
      wanted this context to exist.
      
      Some log messages that are warnings were inflated from LOG_NOTICE to LOG_WARNING.
      
      Added some calls to ast_verb(3,...) for debug messages
      
      Lots of little mods to ast_context_remove_extension2, which is now excersized in ways
      it was not previously; one definite bug fixed.
      
      find_or_create was upgraded to handle both local lists/tables as well as the globals.
      
      context_merge() was added to do the per-context merging of the old/present contexts/extens/prios into the new/proposed local list/tables
      
      ast_merge_contexts_and_delete() was heavily modified.
      
      ast_add_extension2() was also upgraded to handle changes. 
      
      the context_destroy() code was re-engineered to handle the new way of doing things,
      by exten/prio instead of by context.
      
      
      
      res/ael/pval.c
      res/ael/ael.tab.c
      res/ael/ael.tab.h
      res/ael/ael.y
      res/ael/ael_lex.c
      res/ael/ael.flex
      utils/ael_main.c
      utils/extconf.c
      utils/conf2ael.c
      utils/Makefile
      
      Had to change the interface to ast_compile_ael2(), to include the hashtab ptr.
      This ended up involving several external apps.  The main gotcha was I had to 
      include lock.h and hashtab.h in several places.
      
      
      As a side note, I tested this stuff pretty thoroughly, I replicated the problems
      originally reported by Luigi, and made triply sure that reloads worked, and everything
      worked thru "stop gracefully". I found a and fixed a few bugs as I was merging into
      trunk, that did not appear in my tests of bug6002.
      
      How's this for verbose commit messages?
      
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@106757 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      377e51c4
  30. Feb 08, 2008
    • Russell Bryant's avatar
      Merge changes from team/mvanbaak/cli-command-audit · 1ec8cb41
      Russell Bryant authored
      (closes issue #8925)
      
      About a year ago, as Leif Madsen and Jim van Meggelen were going over the CLI
      commands in Asterisk 1.4 for the next version of their book, they documented
      a lot of inconsistencies.  This set of changes addresses all of these issues
      and has been reviewed by Leif.
      
      While this does introduce even more changes to the CLI command structure, it
      makes everything consistent, which is the most important thing.
      
      Thanks to all that helped with this one!
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@103171 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      1ec8cb41
  31. Jan 27, 2008
  32. Jan 11, 2008
  33. Jan 10, 2008
Loading