Commit Graph

441 Commits

Author SHA1 Message Date
Steve Murphy 63f2f04cf4 This commits the performance mods that give the priority processing engine in the pbx, a 25-30% speed boost. The two updates used, are, first, to merge the ast_exists_extension() and the ast_spawn_extension() where they are called sequentially in a loop in the code, into a slightly upgraded version of ast_spawn_extension(), with a few extra args; and, second, I modified the substitute_variables_helper_full, so it zeroes out the byte after the evaluated string instead of demanding you pre-zero the buffer; I also went thru the code and removed the code that zeroed this buffer before every call to the substitute_variables_helper_full. The first fix provides about a 9% speedup, and the second the rest. These figures come from the 'PIPS' benchmark I describe in blogs, conf. reports, etc.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@88166 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-01 22:26:51 +00:00
Mark Michelson 3ffc123db9 Adding the more flexible QUEUE_MEMBER function to replace the QUEUE_MEMBER_COUNT function.
A deprecation notice will be issued the first time QUEUE_MEMBER_COUNT is used.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87395 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-29 20:13:23 +00:00
Mark Michelson cf861b38c7 Added queue strategy "linear". This strategy is useful for those who always wish for their
phones to be rung in a specific order.

(closes issue #7279, reported and initially patched by diLLec, patch reworked by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-26 15:19:46 +00:00
Mark Michelson a8cc80e36d Adding the general option "shared_lastcall" to queues so that a member's wrapuptime
may be used across multiple queues.

(closes issue #9777, reported and patched by eliel)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86985 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-24 21:26:27 +00:00
Jason Parker ebe4050128 Switch from AST_CLI (formerly NEW_CLI) to AST_CLI_DEFINE, since the former didn't make much sense
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86820 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-22 20:05:18 +00:00
Jason Parker b0f3e6097e Convert NEW_CLI to AST_CLI.
Closes issue #11039, as suggested by seanbright.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86536 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-19 18:29:40 +00:00
Mark Michelson 934b814add Merged revisions 86328 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r86328 | mmichelson | 2007-10-18 12:38:26 -0500 (Thu, 18 Oct 2007) | 5 lines

If a non-existent file is specified to be played either as a periodic announcement
or as a hold/position announcement, the caller would be kicked out of the queue.
No longer does this happen.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86329 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-18 17:40:45 +00:00
Mark Michelson 37c1943b87 Changed some spaces to tabs
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-18 16:16:51 +00:00
Mark Michelson d1a0d959a7 Merged revisions 86202 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r86202 | mmichelson | 2007-10-17 16:39:05 -0500 (Wed, 17 Oct 2007) | 6 lines

Changing the strategy field of the call_queue struct to be signed instead of unsigned,
since the code attempts to set the strategy to -1 if you specify a bogus strategy.
While this isn't a huge issue in 1.4, it could be a problem for someone who, say, tries
to use the roundrobin strategy in trunk (despite all the deprecation warnings in 1.4).


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86208 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-17 21:41:06 +00:00
Mark Michelson c438d76551 Removed the monitor-join option. If one wishes to mix audio, they should instead use
monitor-type=mixmonitor.

(related to issue #10885)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@86030 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-16 22:54:37 +00:00
Mark Michelson a39404fed2 Fixing the build.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85992 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-16 21:51:26 +00:00
Mark Michelson bece7e24f2 Merged revisions 85958 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r85958 | mmichelson | 2007-10-16 16:14:34 -0500 (Tue, 16 Oct 2007) | 5 lines

Trying to remove a non-dynamic queue member via dynamic means can lead to some
interesting (read nasty) situations. This patch clears up the issue by making
only dynamic queue members removable via dynamic methods.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85959 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-16 21:16:00 +00:00
Russell Bryant a586d03231 Merged revisions 85720 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r85720 | russell | 2007-10-15 16:10:02 -0500 (Mon, 15 Oct 2007) | 3 lines

Ensure that no pending state changes are leaked when the device state change
thread gets stopped on module unload.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-15 21:11:06 +00:00
Mark Michelson fbcd884e1b Allow for the position announcement to be turned off if desired.
(closes issue #8515, reported by bruno_rocha, initial patch by bruno_rocha, final patch by qwell)




git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-12 20:06:37 +00:00
Mark Michelson 310cfd3280 Patch to add one-touch parking for queues.
(closes issue #10869, reported and patched by bluecrow76)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@85177 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-09 22:35:11 +00:00
Mark Michelson 23ebcbc370 A two-in-one patch from the bugtracker
1) Fix some bad logic in the counting of statistics for QueueSummary manager event. Variables were not being
   reset for each additional queue, so cumulative totals were reported on each successive queue.

2) Add a longest hold time stat to QueueSummary manager event.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84726 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-04 22:58:26 +00:00
Mark Michelson 43e2818750 Merged revisions 84692 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r84692 | mmichelson | 2007-10-04 16:57:03 -0500 (Thu, 04 Oct 2007) | 5 lines

Don't allocate space for queue members unless it's needed. You end up deleting dynamic members on a reload. Not good.

closes issue (#10879, reported by dazza76, patched by me)


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-04 22:00:10 +00:00
Joshua Colp e835dd12e4 Merged revisions 84637 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r84637 | file | 2007-10-04 11:51:57 -0300 (Thu, 04 Oct 2007) | 4 lines

Create a duplicate of the channel's member name as the tab completion stuff will free it.
(closes issue #10884)
Reported by: adamg

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84638 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-04 14:54:30 +00:00
Mark Michelson 2d95565f53 interface_exists_global was never returning 1. Most likely an error from my merge on Friday.
(closes issue #10817, reported and patched by snar, patch simplified by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-24 17:00:57 +00:00
Tilghman Lesher b88902639a Fix some areas where we were still using '|' for an argument delimiter (closes issue #10793)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83484 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-21 18:41:36 +00:00
Russell Bryant e5c12bcf62 Update app_queue to use commas as application argument separators.
(closes issue #10793, snar)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83483 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-21 18:27:56 +00:00
Mark Michelson 25763e2573 Merging changes from queue_refcount_trunk into trunk. Refcounted queues now in place.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83350 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-20 21:21:28 +00:00
Jason Parker ac5332c674 More conversions to NEW_CLI
(issue #10724)
Patches:
      chan_zap.c.patch uploaded by moy (license 222)
      app_queue.c.patch uploaded by eliel (license 64)
      app_voicemail.c.patch uploaded by eliel (license 64)
      app_meetme.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83213 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-19 23:16:51 +00:00
Joshua Colp 39a6ecc228 Merged revisions 83074 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r83074 | file | 2007-09-19 10:47:59 -0300 (Wed, 19 Sep 2007) | 6 lines

Protect the CDR record from modification by pbx_exec so that the application data contains the Queue data.
(closes issue #10761)
Reported by: snar
Patches:
      app-queue-mixmonitor.patch uploaded by snar (license 245)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83075 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-19 13:49:47 +00:00
Joshua Colp bd8414eff6 Merged revisions 82961 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82961 | file | 2007-09-18 20:41:02 -0300 (Tue, 18 Sep 2007) | 2 lines

Initialize a variable to NULL to make the world happy.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82962 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 23:42:24 +00:00
Mark Michelson b33123cf87 Merged revisions 82865 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82865 | mmichelson | 2007-09-18 15:09:02 -0500 (Tue, 18 Sep 2007) | 4 lines

Moving the logic for handling an empty membername to the create_member function so that there is a common place
where this occurs instead of being spread out to several different places.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 20:10:59 +00:00
Kevin P. Fleming ef87383055 Merged revisions 82834 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82834 | kpfleming | 2007-09-18 13:59:52 -0500 (Tue, 18 Sep 2007) | 2 lines

there is no need for conditional logic to select ->interface or ->membername, snince ->membername will always be populated

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82835 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 19:06:34 +00:00
Jason Parker 9a5f7c5764 (closes issue #10755)
Reported by: snar
Patches:
      app-queue-cdr-trunk.patch uploaded by snar (license 245)
      queues.conf.patch uploaded by snar (license 245)

Add an updatecdr option to queues.conf, so that if a "member name" is specified,
 the cdr record will be updated with that, rather than the channel.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82800 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-18 16:16:36 +00:00
Russell Bryant 9388173f85 Make the MALLOC_DEBUG output for free() useful again. After changing calls to
free to be ast_free, astmm said all calls to free were coming from utils.h


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-17 18:57:56 +00:00
Kevin P. Fleming 6cdc9ced97 Merged revisions 82590,82592 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82590 | kpfleming | 2007-09-17 11:33:30 -0500 (Mon, 17 Sep 2007) | 2 lines

fix a couple of places where a logical member name (if specified) was not used, but instead the direct interface was listed

........
r82592 | kpfleming | 2007-09-17 11:40:12 -0500 (Mon, 17 Sep 2007) | 2 lines

revert a change that wasn't supposed to be committed... doh!

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82593 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-17 16:44:13 +00:00
Mark Michelson 38460271f2 Merged revisions 82396 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82396 | mmichelson | 2007-09-14 13:28:36 -0500 (Fri, 14 Sep 2007) | 5 lines

Adding member name field to manager events where they were missing before

(closes issue #10721, reported by snar)


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-14 18:34:53 +00:00
Mark Michelson 899ddcee92 Changed "in" to "queue" in "queue {pause|unpause} member" command to be more clear.
Also added check to be sure that sixth argument is the word "reason" if full command is given



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-13 21:53:01 +00:00
Mark Michelson eb39b71fba Added the ability to pause and unpause members via the CLI
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-13 21:23:32 +00:00
Mark Michelson c04887e428 Merged revisions 82346 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82346 | mmichelson | 2007-09-13 15:16:37 -0500 (Thu, 13 Sep 2007) | 4 lines

Preemptively fixing a possible segfault. It is possible that queuename is NULL 
(meaning pause ALL queues), so use q->name instead.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82347 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-13 20:17:41 +00:00
Mark Michelson 10d22b6e13 Merged revisions 82326 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82326 | mmichelson | 2007-09-13 11:25:59 -0500 (Thu, 13 Sep 2007) | 7 lines

Added logic to handle the unlikely case that someone has two queues with the same name.
Asterisk will log a warning message letting the user know that one was already defined with that
name and is it skipping all further instances. This also will work for realtime queues but in order
for that to happen, the user would have to trigger a perfectly timed reload as a realtime queue is being
looked up, which is highly unlikely (but taken care of nonetheless).


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82327 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-13 16:27:42 +00:00
Russell Bryant a0e8ee0a3d Fix a missing unref of a member struct. This was pointed out by Marta. Thanks!
This function in 1.4 didn't have the problem.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-13 13:34:24 +00:00
Mark Michelson 25e4377167 Removed an unneeded ao2_ref. This was a problem because unless get_member_status returned QUEUE_NORMAL, a NULL member
would be unreferenced. While this didn't cause any crashes or anything terrible, it still is incorrect



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82289 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-12 21:17:45 +00:00
Mark Michelson 8cd1f2effc Merged revisions 82274 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82274 | mmichelson | 2007-09-12 09:24:53 -0500 (Wed, 12 Sep 2007) | 6 lines

We should only initialize a realtime queue when it is allocated, not every time we access it. This prevents the members ao2_container
from being reallocated every time the queue is accessed.

I also removed a debug message I had accidentally left in on a previous commit.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-12 14:29:15 +00:00
Russell Bryant 38c2cd05fa Merged revisions 82267 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82267 | russell | 2007-09-11 17:37:17 -0500 (Tue, 11 Sep 2007) | 3 lines

Fix incorrect uses of ao2_find().  Every one of these calls was reading bogus
memory ...

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 22:38:02 +00:00
Russell Bryant c0bcb9f218 Merged revisions 82263 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82263 | russell | 2007-09-11 15:49:34 -0500 (Tue, 11 Sep 2007) | 5 lines

Fix another missing unref of member objects.  This one was pointed out by Marta.
When building the outgoing list in try_calling(), a member reference is stored
in each outgoing entry.  However, when this list got destroyed, the reference
was not released.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82264 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 20:50:42 +00:00
Mark Michelson 88a1ae75d5 Merged revisions 82252 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82252 | mmichelson | 2007-09-11 11:05:56 -0500 (Tue, 11 Sep 2007) | 6 lines

All instances of ao2_iterators which were just named 'i' have been renamed
to 'mem_iter' so that when refcounted queues are merged into trunk, there will be
little confusion regarding iterator names, especially when a queue and member iterator
are used in the same function.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82253 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 16:12:09 +00:00
Russell Bryant 20288b58af Merged revisions 82240 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82240 | russell | 2007-09-11 09:34:12 -0500 (Tue, 11 Sep 2007) | 2 lines

Add a couple more missing unrefs of queue member objects

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82241 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 14:35:06 +00:00
Russell Bryant 74044bbb88 Merged revisions 82238 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82238 | russell | 2007-09-11 09:21:17 -0500 (Tue, 11 Sep 2007) | 2 lines

Add a missing unref of a queue member in an error handling block

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82239 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 14:25:20 +00:00
Russell Bryant 02c8ceb4e5 Merged revisions 82236 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82236 | russell | 2007-09-11 09:09:43 -0500 (Tue, 11 Sep 2007) | 2 lines

Document why membercount can not simply be replaced by ao2_container_count()

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82237 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-11 14:10:17 +00:00
Mark Michelson ef2856adf0 Fixing a problem where NULL channels would cause a crash when calling indisposed queue members (i.e. paused, wrapup time not completed, etc.)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82185 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-10 19:10:46 +00:00
Tilghman Lesher e558260746 Merged revisions 82155 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r82155 | tilghman | 2007-09-10 13:02:02 -0500 (Mon, 10 Sep 2007) | 2 lines

Convert struct member to use refcounts (closes issue #10199)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82178 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-10 18:32:59 +00:00
Jason Parker ce12177952 Merged revisions 81923 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

(closes issue #10671)
........
r81923 | qwell | 2007-09-07 14:48:00 -0500 (Fri, 07 Sep 2007) | 5 lines

Allow the MEMBERINTERFACE variable to be used as the mixmonitor filename.
This moves the setting of the MEMBERINTERFACE variable to before mixmonitor.

Issue 10671, patch by sim.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81924 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-07 19:53:30 +00:00
Jason Parker 00da8c6dc7 Add an optional reason parameter to PauseQueueMember/UnpauseQueueMember applications and manager events.
Issue 8738, patch by rgollent


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81910 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-07 16:13:57 +00:00
Mark Michelson ba8c1b5243 Merged revisions 81713 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r81713 | mmichelson | 2007-09-06 11:25:40 -0500 (Thu, 06 Sep 2007) | 6 lines

Fixes an issue where valid DTMF had to be pressed twice to exit a queue if a member's phone
was ringing.

(closes issue #10655, reported by strider2k, patched by me)


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81730 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-06 16:31:30 +00:00
Mark Michelson e9548619cf Not having this epoll specific code in wait_for_answer was causing app_queue to infinitely loop.
This makes it so it doesn't. Thanks to file for pointing out where the problem was and showing
a similar function in app_dial as an example of how to fix it.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81632 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-05 21:59:52 +00:00