Skip to content
Snippets Groups Projects
  1. Jun 02, 2020
    • George Joseph's avatar
      Scope Tracing: A new facility for tracing scope enter/exit · ca3c22c5
      George Joseph authored
      What's wrong with ast_debug?
      
        ast_debug is fine for general purpose debug output but it's not
        really geared for scope tracing since it doesn't present its
        output in a way that makes capturing and analyzing flow through
        Asterisk easy.
      
      How is scope tracing better?
      
        Scope tracing uses the same "cleanup" attribute that RAII_VAR
        uses to print messages to a separate "trace" log level.  Even
        better, the messages are indented and unindented based on a
        thread-local call depth counter.  When output to a separate log
        file, the output is uncluttered and easy to follow.
      
        Here's an example of the output. The leading timestamps and
        thread ids are removed and the output cut off at 68 columns for
        commit message restrictions but you get the idea.
      
      --> res_pjsip_session.c:3680 handle_incoming PJSIP/1173-00000001
      	--> res_pjsip_session.c:3661 handle_incoming_response PJSIP/1173
      		--> res_pjsip_session.c:3669 handle_incoming_response PJSIP/
      			--> chan_pjsip.c:3265 chan_pjsip_incoming_response_after
      				--> chan_pjsip.c:3194 chan_pjsip_incoming_response P
      					    chan_pjsip.c:3245 chan_pjsip_incoming_respon
      				<-- chan_pjsip.c:3194 chan_pjsip_incoming_response P
      			<-- chan_pjsip.c:3265 chan_pjsip_incoming_response_after
      		<-- res_pjsip_session.c:3669 handle_incoming_response PJSIP/
      	<-- res_pjsip_session.c:3661 handle_incoming_response PJSIP/1173
      <-- res_pjsip_session.c:3680 handle_incoming PJSIP/1173-00000001
      
        The messages with the "-->" or "<--" were produced by including
        the following at the top of each function:
      
        SCOPE_TRACE(1, "%s\n", ast_sip_session_get_name(session));
      
        Scope isn't limited to functions any more than RAII_VAR is.  You
        can also see entry and exit from "if", "for", "while", etc blocks.
      
        There is also an ast_trace() macro that doesn't track entry or
        exit but simply outputs a message to the trace log using the
        current indent level.  The deepest message in the sample
        (chan_pjsip.c:3245) was used to indicate which "case" in a
        "select" was executed.
      
      How do you use it?
      
        More documentation is available in logger.h but here's an overview:
      
        * Configure with --enable-dev-mode.  Like debug, scope tracing
          is #ifdef'd out if devmode isn't enabled.
      
        * Add a SCOPE_TRACE() call to the top of your function.
      
        * Set a logger channel in logger.conf to output the "trace" level.
      
        * Use the CLI (or cli.conf) to set a trace level similar to setting
          debug level... CLI> core set trace 2 res_pjsip.so
      
      Summary Of Changes:
      
        * Added LOG_TRACE logger level.  Actually it occupies the slot
          formerly occupied by the now defunct "event" level.
      
        * Added core asterisk option "trace" similar to debug.  Includes
      	ability to specify global trace level in asterisk.conf and CLI
      	commands to turn on/off and set levels.  Levels can be set
      	globally (probably not a good idea), or by module/source file.
      
        * Updated sample asterisk.conf and logger.conf.  Tracing is
          disabled by default in both.
      
        * Added __ast_trace() to logger.c which keeps track of the indent
          level using TLS. It's #ifdef'd out if devmode isn't enabled.
      
        * Added ast_trace() and SCOPE_TRACE() macros to logger.h.
          These are all #ifdef'd out if devmode isn't enabled.
      
      Why not use gcc's -finstrument-functions capability?
      
        gcc's facility doesn't allow access to local data and doesn't
        operate on non-function scopes.
      
      Known Issues:
      
        The only know issue is that we currently don't know the line
        number where the scope exited.  It's reported as the same place
        the scope was entered.  There's probably a way to get around it
        but it might involve looking at the stack and doing an 'addr2line'
        to get the line number.  Kind of like ast_backtrace() does.
        Not sure if it's worth it.
      
      Change-Id: Ic5ebb859883f9c10a08c5630802de33500cad027
      ca3c22c5
  2. Dec 12, 2018
    • Joshua C. Colp's avatar
      stasis: Add statistics gathering in developer mode. · fe070936
      Joshua C. Colp authored
      This change adds statistics gathering to Stasis topics,
      subscriptions, and message types. These can be viewed using
      CLI commands and provide insight into how Stasis is used
      and how long certain operations take to execute.
      
      These are only available when Asterisk is compiled in
      developer mode and do not have any impact under normal
      operation.
      
      ASTERISK-28117
      
      Change-Id: I94411b53767f89ee01714daaecf0c2f1666e863f
      fe070936
  3. Mar 19, 2018
    • Corey Farrell's avatar
      core: Remove additional symbols. · 040bb217
      Corey Farrell authored
      Remove symbols that are depreacated and replaced:
      * ast_channel_datastore_alloc
      * ast_channel_datastore_free
      * ast_channel_cmpwhentohangup
      * ast_channel_setwhentohangup
      * config_text_file_save
      * devstate2str
      * ast_device_state_changed
      * ast_device_state_changed_literal
      * ast_verbose_get_by_module
      
      Remove unused symbols:
      * channelreloadreason2txt (last used in Asterisk 12).
      
      Remove unused ast_options flags:
      * AST_OPT_FLAG_END_CDR_BEFORE_H_EXTEN / ast_opt_end_cdr_before_h_exten
      * AST_OPT_FLAG_VERBOSE_MODULE / ast_opt_verb_module
      * AST_OPT_FLAG_INITIATED_SECONDS
      
      Change-Id: I841255995d195f8efc1ed47af9c7a2f131c08645
      040bb217
    • Corey Farrell's avatar
      core: Remove dead symbols from asterisk.exports.in. · de77cf86
      Corey Farrell authored
      * dahdi_chan_name
      * dahdi_chan_name_len
      * dahdi_chan_mode
      * __manager_event
      * dialed_interface_info
      
      Added comment about __progname and environ being needed for FreeBSD to
      prevent accidental removal in the future.
      
      Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5
      de77cf86
  4. May 03, 2016
    • George Joseph's avatar
      pjproject_bundled: Various fixes discovered during testing of OSes · e61716b7
      George Joseph authored
      For all OSes:
      * Disabled third-party codecs in pjproject and added
        '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the
        configure options since we don't use the pjsip codec capability.
      
      FreeBSD:
      * Added FreeBSD support to install_prereq.
      * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make".
      * Added __progname and environ to asterisk.exports.in.
      * Reverted the use of ldconfig to create shared library symlinks to ln.
      * Only enable epoll in pjproject if `uname -s` is Linux.
      * Added a patch to pjproject to take the name of the 'make' command from
        an environment variable if supplied.  This is needed for the python bindings.
        (merged by Teluu into pjproject trunk 5/3/2016)
      FreeBSD support isn't complete.  Still some general issues regarding
      make/gmake having nothing to do with pjproject.  With some handholding it DOES
      build successfully.
      
      CentOS:
      Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH.
      CentOS 6/7 32/64 build and run the pjsip testsuite successfully.
      
      Ubuntu:
      No changes required.
      Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully.
      
      Debian:
      No changes required.
      Debian 6/7/8 32/64 build and run the pjsip testsuite successfully.
      
      There will utimately be a follow-up patch to create an install_prereq for
      the testsuite as I've discovered a few missing requirements.
      
      ASTERISK-25968 #close
      
      Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c
      e61716b7
  5. Aug 22, 2013
  6. Jul 24, 2013
  7. Mar 08, 2013
    • David M. Lee's avatar
      This patch adds a new message bus API to Asterisk. · 4edd8be3
      David M. Lee authored
      For the initial use of this bus, I took some work kmoore did creating
      channel snapshots. So rather than create AMI events directly in the
      channel code, this patch generates Stasis events, which manager.c uses
      to then publish the AMI event.
      
      This message bus provides a generic publish/subscribe mechanism within
      Asterisk. This message bus is:
      
       - Loosely coupled; new message types can be added in seperate modules.
       - Easy to use; publishing and subscribing are straightforward
         operations.
      
      In addition to basic publish/subscribe, the patch also provides
      mechanisms for message forwarding, and for message caching.
      
      (issue ASTERISK-20887)
      (closes issue ASTERISK-20959)
      Review: https://reviewboard.asterisk.org/r/2339/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@382685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      4edd8be3
  8. Jun 01, 2012
  9. Sep 24, 2010
  10. Jun 08, 2010
    • Terry Wilson's avatar
      Add SRTP support for Asterisk · 857814f4
      Terry Wilson authored
      After 5 years in mantis and over a year on reviewboard, SRTP support is finally
      being comitted. This includes generic CHANNEL dialplan functions that work for
      getting the status of whether a call has secure media or signaling as defined
      by the underlying channel technology and for setting whether or not a new
      channel being bridged to a calling channel should have secure signaling or
      media. See doc/tex/secure-calls.tex for examples.
      
      Original patch by mikma, updated for trunk and revised by me.
      
      (closes issue #5413)
      Reported by: mikma
      Tested by: twilson, notthematrix, hemanshurpatel
      
      Review: https://reviewboard.asterisk.org/r/191/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@268894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      857814f4
  11. Apr 02, 2010
Loading