Commit Graph

113 Commits

Author SHA1 Message Date
Russell Bryant
92bd7f19f7 Merge team/russell/ast_verbose_threadstorage
- instead of defining a free() wrapper in a bunch of files, define it as
  ast_free() in utils.h and remove the copies from all the files.

- centralize and abstract the code used for doing thread storage. The code
  lives in threadstorage.h, with one function being implemented in utils.c.
  This new API includes generic thread storage as well as special functions
  for handling thread local dynamic length string buffers.

- update ast_inet_ntoa() to use the new threadstorage API
- update ast_state2str() to use the new threadstorage API
- update ast_cli() to use the new threadstorage API

- Modify manager_event() to use thread storage. Instead of using a buffer of
  4096 characters as the workspace for building the manager event, use a thread
  local dynamic string.  Now there is no length limitation on the length of the
  body of a manager event.

- Significantly simplify the handling of ast_verbose() ...
  - Instead of using a static char buffer and a lock to make sure only one
    thread can be using ast_verbose() at a time, use a thread local dynamic
    string as the workspace for preparing the verbose message. Instead of
    locking around the entire function, the only locking done now is when the
    message has been built and is being deliviered to the list of registered
    verbose message handlers.
  - This function was doing a strdup() on every message passed to it and
    keeping a queue of the last 200 messages in memory. This has been
    completely removed. The only place this was used was that if there were
    any messages in the verbose queue when a verbose handler was registered,
    all of the messages in the queue would be fed to it.  So, I just made sure
    that the console verbose handler and the network verbose handler (for
    remote asterisk consoles) were registered before any verbose messages.
    pbx_gtkconsole and pbx_kdeconsole will now lose a few verbose messages at
    startup, but I didn't feel the performance hit of this message queue was
    worth saving the initial verbose output for these very rarely used modules.
  - I have removed the last three arguments to the verbose handlers, leaving
    only the string itself because they aren't needed anymore. For example,
    ast_verbose had some logic for telling the verbose handler to add
    a newline if the buffer was completely full. Now that the buffer can grow
    as needed, this doesn't matter anymore.
  - remove unused function, ast_verbose_dmesg() which was to dispatch the
    message queue
  - Convert the list of verbose handlers to use the linked list macros.

- add missing newline characters to a few ast_verbose() calls

- convert the list of log channels to use the linked list macros in logger.c

- fix close_logger() to close all of the files it opened for logging

- update ast_log() to use a thread local dynamic string for its workspace
  for preparing log messages instead of a buffer of size BUFSIZ (8kB on my
  system) allocated on the stack.  The dynamic string in this case is limited
  to only growing to a maximum size of BUFSIZ.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@39272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-08 06:32:04 +00:00
Russell Bryant
7b8d8c9bb5 fix crashes with MALLOC_DEBUG enabled that were a result of my recent thread
storage changes (fixes issue #7595)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@38286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-27 01:49:57 +00:00
Russell Bryant
ca9ba719b6 Merge a new implementation of ast_inet_ntoa, our thread safe replacement for
inet_ntoa, which uses thread specific data (aka thread local storage) instead
of stack allocatted buffers to store the result.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@38042 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-21 17:31:28 +00:00
Kevin P. Fleming
5b639e6135 Merged revisions 37419 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r37419 | kpfleming | 2006-07-12 08:54:10 -0500 (Wed, 12 Jul 2006) | 2 lines

remove some more bad examples of using printf

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@37433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-12 14:04:16 +00:00
Joshua Colp
696275bcc1 Fixed. Done. Good. Make ast_join work like it used to.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@37348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-10 19:58:33 +00:00
Tilghman Lesher
229ab7d9cf Whitespace changes only
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@37345 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-10 19:05:48 +00:00
Kevin P. Fleming
472c1ca282 simplify autoconfig include mechanism (make tholo happy he can use lint again :-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32846 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-07 18:54:56 +00:00
Matt O'Gorman
d591c1b684 changes for base64 to work in multiline instances
as well as being more efficient, patch from jcollie's
base64 branch


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@31492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-01 19:05:45 +00:00
Russell Bryant
eb76f29f0d fix an incorrect comment (issue #7259, tardieu)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@31360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-01 14:18:12 +00:00
Russell Bryant
4fe3960478 move ast_carefulwrite from manager.c to utils.c so that cli.c and
res_agi.c no longer depend on manager.h (issue #6397, casper)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05 21:01:39 +00:00
Russell Bryant
326afa4900 use ast_malloc instead of malloc
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@24880 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-05 16:46:46 +00:00
Luigi Rizzo
2876a25505 add 'show threads' and 'show profile' commands.
These are momstly debugging tools for developers,
a bit documented in the header files (utils.h),
although more documentation is definitely necessary.

The performance impact is close to zero(*) so there is no
need to compile it conditionally.
(*) not completely true - thread destruction still needs
to search a list _but_ this can be easily optimized if we
end up with hundreds of active threads (in which case, though,
the problem is clearly elsewhere).



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@19544 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-12 20:40:46 +00:00
Tilghman Lesher
2cd46d59ea Bug 6829 - asprintf for Solaris
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@18755 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-10 07:48:52 +00:00
Luigi Rizzo
a7ec530a64 initial implementation of support for native atomic ops.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@16601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-30 23:26:22 +00:00
Kevin P. Fleming
2b408e88a9 don't wrap this in ifdef... using va_start is safe on all platforms :-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@14479 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-23 21:01:19 +00:00
Olle Johansson
5ed117e976 Doxygen changes
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@12344 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-07 17:55:33 +00:00
Olle Johansson
ab758ab2ed Portability issue - make stringfields work on FreeBSD 4.x (oej/rizzo)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@12012 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-06 10:49:15 +00:00
Kevin P. Fleming
302c943001 add 'consumed' argument to ast_get_time_t, so callers can know how many characters were used in the parser
update pbx_dundi to use ast_get_time_t
eliminate some compiler warnings


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10871 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-23 17:13:57 +00:00
Kevin P. Fleming
4662d58b01 add API function for parsing strings to time_t (issue #6320, with mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10105 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-15 00:24:24 +00:00
Russell Bryant
8232b40884 eliminate warning on older versions of gcc
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9629 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-11 20:54:21 +00:00
Tilghman Lesher
34bcd0e0b6 Bug 6322 - Implementation of SHA1 in Asterisk (plus dialplan function to use it)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-03 22:37:29 +00:00
Kevin P. Fleming
4467ab62c8 string field manager improvements:
use multiple memory blocks, instead of realloc(), ensuring that field pointers will never become invalid or change
don't run vs(n)printf twice when doing a field build unless required


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-26 04:00:05 +00:00
Olle Johansson
aa7974450b Declare missing randomlock
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7936 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10 08:33:52 +00:00
Tilghman Lesher
935c80d5e6 Bug 5961 - new RAND() function
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-10 00:55:45 +00:00
Kevin P. Fleming
1fe5108763 ensure that string field 'build' operation only evaluates arguments one time
fix some minor documentation errors
return proper type from string field space allocator


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7841 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-06 19:19:17 +00:00
Kevin P. Fleming
80fa9689b7 add memory-pool based string field management for structures
convert chan_sip sip_pvt and sip_registry structures to use string fields
add 'const' qualifiers to a few API calls that don't modify their input strings
add an asprintf() wrapper to astmm


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-04 21:54:09 +00:00
Russell Bryant
0da13c21b4 - move the string join() function to utils.c since it is used in both cli.c and res_agi.c
- reimplement ast_join to be of linear effieciency instead of quadratic
- remove some useless checks for "if (e)"
- reorder checks for strings starting with '_' to avoid a useless call to ast_join()
- check array bounds when parsing arguments to AGI
(issue #5868)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 20:20:04 +00:00
Kevin P. Fleming
6ca9632df5 Merged revisions 7468 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r7468 | kpfleming | 2005-12-13 10:06:27 -0600 (Tue, 13 Dec 2005) | 2 lines

correct broken math in tvfix() for timestamp values over one million

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-13 16:07:19 +00:00
Kevin P. Fleming
2c65582b66 remove extraneous svn:executable properties
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 18:24:39 +00:00
Kevin P. Fleming
0941c32d38 issue #5569 minus lock.h changes
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7024 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-08 04:13:19 +00:00
Kevin P. Fleming
7ffb604a2f issue #4678
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6936 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-01 21:53:30 +00:00
Kevin P. Fleming
d6b64431b0 issue #5549
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6930 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-01 20:26:29 +00:00
Kevin P. Fleming
c3f9388b23 provide an alternate getloadavg implementation and a fallback for systems that don't have it at all (issue #5549 with minor mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6903 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-31 21:25:21 +00:00
Kevin P. Fleming
20a7a4ca96 silence compiler warning
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6898 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-31 15:21:12 +00:00
Russell Bryant
a736096e0b change ast_strlen_zero to also check for the string to be defined
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6862 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-26 18:54:24 +00:00
Russell Bryant
87d4ff6fcd remove duplicate header
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6859 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-26 17:33:29 +00:00
Russell Bryant
6324072247 more doxygenification (issue #5513)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6852 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-26 13:03:17 +00:00
Russell Bryant
3453e3efa5 Doxygen documentation update from oej (issue #5505)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6847 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-24 20:12:06 +00:00
Mark Spencer
f5d5814f5f Fix segfault in CVS head (sorry about that)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6839 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-21 14:09:03 +00:00
Mark Spencer
e60ab6d916 Be sure to avoid octal interpretations of IP's (bug #5477)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6838 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-21 04:09:23 +00:00
Mark Spencer
1ceb04cfb7 More utility cleanups
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-16 03:10:33 +00:00
Kevin P. Fleming
9835bc4330 add ast_build_string_va(), which accepts a varargs list directly
ensure the _entire_ manager_event() output is either queued or sent via ast_carefulwrite()


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6708 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-01 15:41:27 +00:00
Kevin P. Fleming
91b72f5ff0 ensure scheduling priority is inherited into new threads (issue #5293)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-29 04:08:18 +00:00
Russell Bryant
779d033f21 move process_quotes_and_slashes to utils.c since it is used by both pbx_ael and pbx_config
clean up some formatting
remove some commented out reference code
move unload_module in pbx_ael down to be with the rest of the standard module functions


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-23 02:57:14 +00:00
Kevin P. Fleming
5da915dcfd update MANY more files with proper copyright/license info (thanks Ian!)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-14 20:46:50 +00:00
Kevin P. Fleming
aa92d9c1f8 don't double define our own string functions on platforms that don't have them (issue #5169)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6587 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-14 02:30:33 +00:00
Russell Bryant
019310244e fix a couple of warnings on osx
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-02 11:39:24 +00:00
Kevin P. Fleming
1824c2f630 encode/decode URIs in 'pedantic' mode (issue #3923)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6441 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-08-29 22:39:39 +00:00
Kevin P. Fleming
61ef3c1c7c make the warning message be LOG_WARNING (issue #4960)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6388 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-08-23 17:55:59 +00:00
Russell Bryant
82883698cc more fixes for gcc4 warnings ...
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-08-07 06:47:20 +00:00