aboutsummaryrefslogtreecommitdiffstats
path: root/main/utils.c
AgeCommit message (Collapse)AuthorFilesLines
2007-12-17Do not try to access information about a lock when printing out a trylock ↵file1-1/+1
attempt. It is possible for the lock that it references to no longer be valid. This would have caused segfaults or deadlocks. (issue #BE-263) (closes issue #11080) Reported by: callguy (closes issue #11100) Reported by: callguy git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@93377 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-07Make the lock protecting each thread's list of locks it currently holdsrussell1-1/+6
recursive. I think that this will fix the situation where some people have said that "core show locks" locks up the CLI. (related to issue #11080) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@91830 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-05When DEBUG_THREADS is enabled, we only have the details about who is holdingrussell1-0/+4
a lock that we are waiting on for a mutex, not rwlocks. This should fix the problem where people have reported "core show locks" crashing sometimes. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@91074 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-13Debugging is running into the 16-lock limit. Increase to avoid.tilghman1-1/+1
(This define is only effective when debugging is turned on, so there's no effect for most installations.) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@89239 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-29Add some more details to the output of "core show locks". When a threadrussell1-0/+15
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/branches/1.4@87396 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-29Fix issue with ast_unescape_semicolon going into an endless loop.file1-0/+2
(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/branches/1.4@87294 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-18Revert a change that I made for issue #10979 which, as has been pointed out torussell1-3/+0
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/branches/1.4@86237 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15Be pedantic about handling memory allocation failure.russell1-1/+14
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@85649 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15The loop in the handler for the "core show locks" could potentially block forrussell1-7/+16
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/branches/1.4@85647 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-15Make sure that the base64 decoder returns a terminated string.russell1-0/+3
(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/branches/1.4@85543 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-10The thread ID should be unsigned.mmichelson1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@85315 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-09This commit fixes the following issues:tilghman1-2/+15
- 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/branches/1.4@85158 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-01Fulfull a feature request from Qwell on the "core show locks" output. It willrussell1-4/+22
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/branches/1.4@84271 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-17Don't send a semicolon over the wire in sip notify messages.qwell1-0/+15
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/branches/1.4@79904 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-03Add some improvements to lock debugging. These changes take effectrussell1-6/+248
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/branches/1.4@78095 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-01Whoops, I meant R_5 not R5.file1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@77867 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-01Extend autoconf logic to determine which version of gethostbyname_r is on ↵file1-2/+2
the system. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@77863 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-29Use !defined(HAVE_GETHOSTBYNAME_R) to check for absencerizzo1-1/+1
of the function. This was already done in trunk. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@72665 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-17Merged revisions 51194 via svnmerge from tilghman1-1/+1
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/branches/1.4@51195 f38db490-d61c-443f-a65b-d21fe96a405b
2007-01-04add support for tracking thread-local-storage objects that exist via ↵kpfleming1-1/+8
'threadstorage' CLI commands git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@49553 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-07These mods are to solve the problem in bug 7506. It's a lot of rework to ↵murf1-6/+15
solve a fairly small problem... such is life. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@47303 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-31Merged revisions 46560 via svnmerge from russell1-0/+1
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/branches/1.4@46561 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-25apparently developers are still not aware that they should be use ↵kpfleming1-1/+1
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/branches/1.4@46200 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-13use a configure script test for PMTU discovery control instead of just ↵kpfleming1-2/+2
assuming it's available on Linux git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@45027 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-12Merged revisions 44955 via svnmerge from kpfleming1-0/+10
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/branches/1.4@44956 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-04make LOW_MEMORY builds actually workkpfleming1-0/+7
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@44390 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-04update thread creation code a bitkpfleming1-19/+24
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/branches/1.4@44378 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