-
- Downloads
Improved and portable ast_log recursion avoidance
This introduces a new logger routine ast_log_safe. This routine should be used for all error messages in code that can be run as a result of ast_log. ast_log_safe does nothing if run recursively. All error logging in astobj2.c, strings.c and utils.h have been switched to ast_log_safe. This required adding support for raw threadstorage. This provides direct access to the void* pointer in threadstorage. In ast_log_safe, NULL is used to signify that this thread is not already running ast_log_safe, (void*)1 when it is already running. This was done since it's critical that ast_log_safe do nothing that could log during recursion checking. ASTERISK-24155 #close Reported by: Timo Teräs Review: https://reviewboard.asterisk.org/r/4502/ ........ Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 433523 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433524 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Showing
- include/asterisk/logger.h 11 additions, 0 deletionsinclude/asterisk/logger.h
- include/asterisk/threadstorage.h 40 additions, 0 deletionsinclude/asterisk/threadstorage.h
- include/asterisk/utils.h 1 addition, 20 deletionsinclude/asterisk/utils.h
- main/astobj2.c 3 additions, 0 deletionsmain/astobj2.c
- main/hashtab.c 0 additions, 4 deletionsmain/hashtab.c
- main/logger.c 27 additions, 0 deletionsmain/logger.c
- main/strings.c 1 addition, 4 deletionsmain/strings.c
Loading
Please register or sign in to comment