aboutsummaryrefslogtreecommitdiffstats
path: root/main/utils.c
AgeCommit message (Collapse)AuthorFilesLines
2007-11-04Simplify the implementation and the API for stringfields;rizzo1-34/+75
details and examples are in include/asterisk/stringfields.h. Not applicable to older branches except for 1.4 which will receive a fix for the routines that free memory pools. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@88454 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-01Conditionally free lock_info->thread_name to avoid a useless warningtilghman1-1/+2
Reported by: snuffy Patch by: snuffy Closes issue #11125 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@88010 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-29Merged revisions 87396 via svnmerge from russell1-0/+15
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r87396 | russell | 2007-10-29 15:22:07 -0500 (Mon, 29 Oct 2007) | 5 lines Add some more details to the output of "core show locks". When a thread is waiting for a lock, this will now show the details about who currently has it locked. (inspired by issue #11100) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@87397 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-29Merged revisions 87294 via svnmerge from file1-0/+2
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r87294 | file | 2007-10-29 11:23:49 -0300 (Mon, 29 Oct 2007) | 6 lines Fix issue with ast_unescape_semicolon going into an endless loop. (closes issue #10550) Reported by: ramonpeek Patches: unescape-85177-1.patch uploaded by IgorG (license 20) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@87295 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-22Switch from AST_CLI (formerly NEW_CLI) to AST_CLI_DEFINE, since the former ↵qwell1-1/+1
didn't make much sense git-svn-id: http://svn.digium.com/svn/asterisk/trunk@86820 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-19Convert NEW_CLI to AST_CLI.qwell1-1/+1
Closes issue #11039, as suggested by seanbright. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@86536 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-18Merged revisions 86237 via svnmerge from russell1-3/+0
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r86237 | russell | 2007-10-17 23:40:52 -0500 (Wed, 17 Oct 2007) | 9 lines Revert a change that I made for issue #10979 which, as has been pointed out to me in issue #11018, doesn't really make sense. There is no reason to have the base64 decode function force a '\0' terminated buffer, when the result is almost always binary, anyway. In fact, this caused some breakage, as some code in res_crypto passed in a buffer exactly the right size to get its binary result, which got stomped on by this patch. (closes issue #11018, reported by dimas) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@86238 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15Merged revisions 85649 via svnmerge from russell1-2/+15
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r85649 | russell | 2007-10-15 14:22:45 -0500 (Mon, 15 Oct 2007) | 2 lines Be pedantic about handling memory allocation failure. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@85650 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15Merged revisions 85647 via svnmerge from russell1-6/+15
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r85647 | russell | 2007-10-15 14:11:38 -0500 (Mon, 15 Oct 2007) | 5 lines The loop in the handler for the "core show locks" could potentially block for some amount of time. Be a little bit more careful and prepare all of the output in an intermediary buffer while holding a global resource. Then, after releasing it, send the output to ast_cli(). ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@85648 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15Merged revisions 85543 via svnmerge from russell1-0/+3
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r85543 | russell | 2007-10-15 07:48:10 -0500 (Mon, 15 Oct 2007) | 8 lines Make sure that the base64 decoder returns a terminated string. (closes issue #10979) Reported by: ys Patches: util.c.diff uploaded by ys (license 281) - small mods by me ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@85544 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-09Merged revisions 85158 via svnmerge from tilghman1-2/+15
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r85158 | tilghman | 2007-10-09 16:55:06 -0500 (Tue, 09 Oct 2007) | 5 lines This commit fixes the following issues: - Deadlock in ast_write (issue #10406) - Deadlock in ast_read (issue #10406) - Possible mutex initialization error in lock.h (issue #10571) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@85176 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-01Merged revisions 84271 via svnmerge from russell1-4/+22
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r84271 | russell | 2007-10-01 16:07:06 -0500 (Mon, 01 Oct 2007) | 4 lines Fulfull a feature request from Qwell on the "core show locks" output. It will now note the lock type for each lock that a thread holds. (mutex, rdlock, or wrlock) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@84272 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-17Merged revisions 79904 via svnmerge from qwell1-0/+15
https://origsvn.digium.com/svn/asterisk/branches/1.4 (closes issue #10430) ........ r79904 | qwell | 2007-08-17 14:12:19 -0500 (Fri, 17 Aug 2007) | 11 lines Don't send a semicolon over the wire in sip notify messages. Caused by fix for issue 9938. I basically took the code that existed before 9938 was fixed, and copied it into a new function - ast_unescape_semicolon There should be very few places this will be needed (pbx_config does NOT need this (see issue 9938 for details)) Issue 10430, patch by me, with help/ideas from murf (thanks murf). ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@79905 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-03Merged revisions 78095 via svnmerge from russell1-9/+253
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r78095 | russell | 2007-08-03 14:39:49 -0500 (Fri, 03 Aug 2007) | 28 lines Add some improvements to lock debugging. These changes take effect with DEBUG_THREADS enabled and provide the following: * This will keep track of which locks are held by which thread as well as which lock a thread is waiting for in a thread-local data structure. A reference to this structure is available on the stack in the dummy_start() function, which is the common entry point for all threads. This information can be easily retrieved using gdb if you switch to the dummy_start() stack frame of any thread and print the contents of the lock_info variable. * All of the thread-local structures for keeping track of this lock information are also stored in a list so that the information can be dumped to the CLI using the "core show locks" CLI command. This introduces a little bit of a performance hit as it requires additional underlying locking operations inside of every lock/unlock on an ast_mutex. However, the benefits of having this information available at the CLI is huge, especially considering this is only done in DEBUG_THREADS mode. It means that in most cases where we debug deadlocks, we no longer have to request access to the machine to analyze the contents of ast_mutex_t structures. We can now just ask them to get the output of "core show locks", which gives us all of the information we needed in most cases. I also had to make some additional changes to astmm.c to make this work when both MALLOC_DEBUG and DEBUG_THREADS are enabled. I disabled tracking of one of the locks in astmm.c because it gets used inside the replacement memory allocation routines, and the lock tracking code allocates memory. This caused infinite recursion. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@78096 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-01Merged revisions 77867 via svnmerge from file1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r77867 | file | 2007-08-01 14:52:11 -0300 (Wed, 01 Aug 2007) | 2 lines Whoops, I meant R_5 not R5. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77868 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-01Merged revisions 77863 via svnmerge from file1-2/+2
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r77863 | file | 2007-08-01 14:22:35 -0300 (Wed, 01 Aug 2007) | 2 lines Extend autoconf logic to determine which version of gethostbyname_r is on the system. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77864 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-26Ensure that the read from /dev/urandom returns a positive resultrussell1-1/+1
(closes issue #10308, reported by yehavi, patched by me) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77268 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-21Add support for using /dev/urandom to get random numbers on systems that ↵file1-2/+24
support it. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@76296 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-18Merge in ast_strftime branch, which changes timestamps to be accurate to the ↵tilghman1-0/+27
microsecond, instead of only to the second git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75706 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-22Issue 9990 - New API ast_mkdir, which creates parent directories as ↵tilghman1-0/+37
necessary (and is faster than an outcall to mkdir -p) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@71040 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-06Issue 9869 - replace malloc and memset with ast_calloc, and other coding ↵tilghman1-1/+1
guidelines changes git-svn-id: http://svn.digium.com/svn/asterisk/trunk@67864 f38db490-d61c-443f-a65b-d21fe96a405b
2007-05-24Add a new API call for creating detached threads. Then, go replace all of therussell1-0/+26
places in the code where the same block of code for creating detached threads was replicated. (patch from bbryant) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@65968 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-23Cosmetic changes. Make main source files better conform to coding guidelines ↵file1-2/+2
and standards. (issue #8679 reported by johann8384) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@51486 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-17Merged revisions 51195 via svnmerge from tilghman1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r51195 | tilghman | 2007-01-17 14:56:15 -0600 (Wed, 17 Jan 2007) | 12 lines Merged revisions 51194 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r51194 | tilghman | 2007-01-17 14:52:21 -0600 (Wed, 17 Jan 2007) | 4 lines When ast_strip_quoted was called with a zero-length string, it would treat a NULL as if it were the quoting character (and would thus return the string in memory immediately following the passed-in string). ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@51196 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-16forgot this part...rizzo1-11/+7
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48520 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-15simplify the ast_dynamic_str_*.... routines byrizzo1-10/+10
renaming them to ast_str ... and putting the struct ast_threadstorage pointer into the struct ast_str. This makes the code a lot more readable. At this point we can use these routines also to replace ast_build_string(). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48510 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-15move the dynamic string support in a better place i.e. string.hrizzo1-14/+30
While doing this, add a bit of documentation, and slightly extend the functionality as follows: + a max_len of -1 means that we take whatever the current size is, and never try to extend the buffer; + add support for alloca()-ted dynamic strings, which is very useful for all cases where we do an ast_build_string() now. Next step is to simplify the interface by using shorter names (e.g. ast_str as a prefix) and removing the _thread variant of the functions by saving the threadstorage reference into the struct ast_str. This can be done by overloading the 'type' field. Finally, I will do my best to remove the convoluted interface that results from trying to support platforms without va_copy(). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48509 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-29Go ahead and make this write unconditional. Making it conditional is more workrussell1-10/+2
in both the append and non-append modes. Also, always truncating the partial write makes the behavior of the function more consistent, where in any type of write, no partial result is left in the buffer. Thanks for the feedback, luigi git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48109 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-29Remove an XXX command suggesting that this truncation should not be conditional,russell1-1/+8
and also add a more verbose comment explaining why it is only needed in the case of appending to the string for any curious readers that come along in the future. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48103 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-28some simplifications torizzo1-7/+9
ast_dynamic_str_thread_build_va_couldnt_we_choose_a_shorter_name() I am unsure whether the truncation of the string in case of a failed attempt should be done unconditionally. See the XXX mark. Russel, ideas ? git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48084 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-07A fair number of changes for the sake of bug 7506murf1-6/+15
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47290 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-07explain why ast_carefulwrite is written the way it is,rizzo1-0/+15
and also that it doesn't really work as claimed. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47242 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-31Merged revisions 46561 via svnmerge from russell1-0/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r46561 | russell | 2006-10-31 01:19:56 -0500 (Tue, 31 Oct 2006) | 11 lines Merged revisions 46560 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r46560 | russell | 2006-10-31 01:18:36 -0500 (Tue, 31 Oct 2006) | 3 lines When handling the case where the hostname is just an IPV4 numeric address, be sure to set the address type. (issue #8247, alexr) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@46562 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-25Merged revisions 46200 via svnmerge from kpfleming1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r46200 | kpfleming | 2006-10-25 09:32:08 -0500 (Wed, 25 Oct 2006) | 2 lines apparently developers are still not aware that they should be use ast_copy_string instead of strncpy... fix up many more users, and fix some bugs in the process ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@46201 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-23use autodetected support for gethostbyname_rrizzo1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45989 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-19Extend the thread storage API such that a custom initialization function canrussell1-1/+1
be called for each thread specific object after they are allocated. Note that there was already the ability to define a custom cleanup function. Also, if the custom cleanup function is used, it *MUST* call free on the thread specific object at the end. There is no way to have this magically done that I can think of because the cleanup function registered with the pthread implementation will only call the function back with a pointer to the thread specific object, not the parent ast_threadstorage object. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45623 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-13Merged revisions 45027 via svnmerge from kpfleming1-2/+2
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r45027 | kpfleming | 2006-10-13 10:41:14 -0500 (Fri, 13 Oct 2006) | 2 lines use a configure script test for PMTU discovery control instead of just assuming it's available on Linux ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45029 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-12Merged revisions 44956 via svnmerge from kpfleming1-0/+10
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r44956 | kpfleming | 2006-10-12 13:38:51 -0500 (Thu, 12 Oct 2006) | 10 lines Merged revisions 44955 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r44955 | kpfleming | 2006-10-12 13:31:26 -0500 (Thu, 12 Oct 2006) | 2 lines ensure that IAX2 and SIP sockets allow UDP fragmentation when running on Linux (thanks to Brian Candler on the asterisk-dev list for the tip) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44957 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-04Merged revisions 44390 via svnmerge from kpfleming1-0/+7
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r44390 | kpfleming | 2006-10-04 16:04:21 -0500 (Wed, 04 Oct 2006) | 2 lines make LOW_MEMORY builds actually work ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44391 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-04Merged revisions 44378 via svnmerge from kpfleming1-19/+24
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r44378 | kpfleming | 2006-10-04 14:47:22 -0500 (Wed, 04 Oct 2006) | 4 lines update thread creation code a bit reduce standard thread stack size slightly to allow the pthreads library to allocate the stack+data and not overflow a power-of-2 allocation in the kernel and waste memory/address space add a new stack size for 'background' threads (those that don't handle PBX calls) when LOW_MEMORY is defined ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44379 f38db490-d61c-443f-a65b-d21fe96a405b
2006-09-15Many Solaris fixes - this moves some of the stuff from utils.c to strcompat.cqwell1-260/+0
Every OS uses strcompat now - this was done on purpose. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@42982 f38db490-d61c-443f-a65b-d21fe96a405b
2006-09-07don't try to get the length of the string in the ast_dynamic_str object ↵kpfleming1-1/+1
unless we know there is actually one there git-svn-id: http://svn.digium.com/svn/asterisk/trunk@42185 f38db490-d61c-443f-a65b-d21fe96a405b
2006-09-03when calling this function to append to a dynamic string and the buffer was notrussell1-0/+3
large enough and had to be reallocated, cut off the partially appended data. Otherwise, the function will get called over and over again appending to the end every time and never thinking it has enough room. Thanks to jmls for access to his machine for debugging! (issue #7691) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@41944 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-25Off by one error in buffer length (issue 7379)tilghman1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@41103 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-21merge new_loader_completion branch, including (at least):kpfleming1-0/+1231
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b