dect
/
asterisk
Archived
13
0
Fork 0
Commit Graph

61 Commits

Author SHA1 Message Date
rizzo 36be3451e8 Add a new API function, written at least twice in app_voicemail.c
and likely in other places too.

This is quite useful when placing mail/html stuff in config files.

 /*!
   \brief Convert some C escape sequences (\b\f\n\r\t) into the
        equivalent characters.
   \brief s The string to be converted (will be modified).
   \return The converted string.
  */
 char *ast_unescape_c(char *s);
 




git-svn-id: http://svn.digium.com/svn/asterisk/trunk@93950 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-19 17:09:01 +00:00
file 7556c359de Merged revisions 93377 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r93377 | file | 2007-12-17 18:28:09 -0400 (Mon, 17 Dec 2007) | 7 lines

Do not try to access information about a lock when printing out a trylock 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/trunk@93378 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-17 22:29:56 +00:00
tilghman 8a1ce32239 Conversions of free to ast_free, where applicable, and several other formatting fixes.
Reported by: eliel
Patch by: eliel,tilghman
(Closes issue #11209)


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@92594 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-12 20:05:13 +00:00
russell f37338b8d4 Merged revisions 91830 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r91830 | russell | 2007-12-07 15:24:33 -0600 (Fri, 07 Dec 2007) | 5 lines

Make the lock protecting each thread's list of locks it currently holds
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/trunk@91831 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-07 21:25:03 +00:00
russell 75f71be838 Merged revisions 91074 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r91074 | russell | 2007-12-04 18:48:47 -0600 (Tue, 04 Dec 2007) | 4 lines

When DEBUG_THREADS is enabled, we only have the details about who is holding
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/trunk@91077 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-05 00:49:19 +00:00
file 942e20012a Ensure the value returned from ast_random is between 0 and RAND_MAX on 64-bit platforms.
(closes issue #11348)
Reported by: sperreault


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89637 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-27 17:01:19 +00:00
file 60d6d5e6e4 Revert change for 11348 until it can be looked at even more.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89582 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-26 16:20:04 +00:00
file 5219dc885e Make the behavior of using /dev/urandom for random numbers the same as random().
(closes issue #11348)
Reported by: sperreault
Patches:
      ast_random2.diff uploaded by sperreault (license 252)


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89576 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-26 15:28:13 +00:00
rizzo de2db05332 remove a bunch of useless #include "options.h"
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89511 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-21 23:09:02 +00:00
mmichelson 40ff1f7b41 There existed about a 1 in 4 billion chance that reading from /dev/urandom
would return LONG_MIN (1 in 9 quintillion if using 64-bit longs). Since there
is no positive equivalent of LONG_MIN, the result of labs() in this case is
unpredictable. This fixes that situation.

(closes issue #11336, reported and patched by sperreault)



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89487 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-21 18:19:22 +00:00
rizzo 0cc47e4221 another bunch of include removals (errno.h and asterisk/logger.h)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89425 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-19 19:09:03 +00:00
rizzo fb8143ad31 start using asterisk/network.h for network related headers.
Also remove some unnecessary includes.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89380 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-17 14:11:53 +00:00
rizzo 8fde063b48 netdb.h is used for gethostbyname, and it was not included in some
platforms.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89365 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-17 09:44:14 +00:00
rizzo 883346d64a Start untangling header inclusion in a way that does not affect
build times - tested, there is no measureable difference before and
after this commit.

In this change:

use asterisk/compat.h to include a small set of system headers:
inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h,
stdlib.h, alloca.h, stdio.h

Where available, the inclusion is conditional on HAVE_FOO_H as determined
by autoconf.

Normally, source files should not include any of the above system headers,
and instead use either "asterisk.h" or "asterisk/compat.h" which does it
better. 

For the time being I have left alone second-level directories
(main/db1-ast, etc.).



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89333 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-16 20:04:58 +00:00
tilghman 9f485cd0a3 If we're going to be passing a negative value for the size of a stringfield,
in order to indicate something, then using an UNSIGNED parameter is bad,
mmmmmkay?


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89312 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-15 23:50:15 +00:00
tilghman 5f2ad1136a Merged revisions 89239 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89239 | tilghman | 2007-11-13 07:51:53 -0600 (Tue, 13 Nov 2007) | 4 lines

Debugging is running into the 16-lock limit.  Increase to avoid.
(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/trunk@89240 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-13 14:03:34 +00:00
rizzo 5c6adf7951 Simplify the implementation and the API for stringfields;
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-04 19:44:31 +00:00
tilghman 0ef4927a34 Conditionally free lock_info->thread_name to avoid a useless warning
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-11-01 06:12:08 +00:00
russell 525cd3a0d9 Merged revisions 87396 via svnmerge from
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-29 20:24:47 +00:00
file 96322a96fe Merged revisions 87294 via svnmerge from
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-29 14:29:18 +00:00
qwell 7756b987a0 Switch from AST_CLI (formerly NEW_CLI) to AST_CLI_DEFINE, since the former didn't make much sense
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@86820 f38db490-d61c-443f-a65b-d21fe96a405b
2007-10-22 20:05:18 +00:00
qwell d542122e6a Convert NEW_CLI to AST_CLI.
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-19 18:29:40 +00:00
russell 892cec0821 Merged revisions 86237 via svnmerge from
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-18 04:41:33 +00:00
russell 8381ecb240 Merged revisions 85649 via svnmerge from
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-15 19:25:56 +00:00
russell bc130eab84 Merged revisions 85647 via svnmerge from
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-15 19:19:01 +00:00
russell e4b6e79198 Merged revisions 85543 via svnmerge from
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-15 12:49:31 +00:00
tilghman 921ddf8e94 Merged revisions 85158 via svnmerge from
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-09 22:21:49 +00:00
russell d2715cdd41 Merged revisions 84271 via svnmerge from
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-10-01 21:15:57 +00:00
qwell 3a9bc6fc81 Merged revisions 79904 via svnmerge from
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-17 19:13:25 +00:00
russell 62b554cc89 Merged revisions 78095 via svnmerge from
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-03 19:41:42 +00:00
file c161546c0f Merged revisions 77867 via svnmerge from
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-01 17:53:09 +00:00
file 7ed3cf54d1 Merged revisions 77863 via svnmerge from
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-08-01 17:27:09 +00:00
russell e8f2c22546 Ensure that the read from /dev/urandom returns a positive result
(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-26 13:20:36 +00:00
file 712969305d Add support for using /dev/urandom to get random numbers on systems that support it.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@76296 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-21 14:39:52 +00:00
tilghman 74c2948c22 Merge in ast_strftime branch, which changes timestamps to be accurate to the microsecond, instead of only to the second
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75706 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-18 19:47:20 +00:00
tilghman ed2b193e6c Issue 9990 - New API ast_mkdir, which creates parent directories as 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-22 04:35:12 +00:00
tilghman eb5d461ed4 Issue 9869 - replace malloc and memset with ast_calloc, and other coding guidelines changes
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@67864 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-06 21:20:11 +00:00
russell a42bc96f14 Add a new API call for creating detached threads. Then, go replace all of the
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-05-24 18:30:19 +00:00
file cd15e6156e Cosmetic changes. Make main source files better conform to coding guidelines 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-23 00:11:32 +00:00
tilghman 0b428448af Merged revisions 51195 via svnmerge from
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
2007-01-17 20:57:51 +00:00
rizzo 91101a1b97 forgot this part...
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48520 f38db490-d61c-443f-a65b-d21fe96a405b
2006-12-16 11:23:07 +00:00
rizzo b68b240ef8 simplify the ast_dynamic_str_*.... routines by
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-15 23:10:42 +00:00
rizzo 5343b4f73d move the dynamic string support in a better place i.e. string.h
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-12-15 22:08:46 +00:00
russell 700f9d585c Go ahead and make this write unconditional. Making it conditional is more work
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-29 17:37:31 +00:00
russell 02a84d116b Remove an XXX command suggesting that this truncation should not be conditional,
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-29 05:08:19 +00:00
rizzo b24855a833 some simplifications to
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-28 14:07:09 +00:00
murf 4d6996c27a A fair number of changes for the sake of bug 7506
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47290 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-07 21:47:49 +00:00
rizzo fe2183abb8 explain why ast_carefulwrite is written the way it is,
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-11-07 08:34:26 +00:00
russell adea8b21bc Merged revisions 46561 via svnmerge from
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-31 06:21:40 +00:00
kpfleming 470f688a28 Merged revisions 46200 via svnmerge from
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-25 14:44:50 +00:00