Alexandre Julliard
72bff2e445
server: Add support for restarting an async I/O when the client side couldn't finish it right away.
2007-04-10 17:07:27 +02:00
Alexandre Julliard
0cb29f47ca
server: Add support for associating a file descriptor to a message queue.
2007-04-04 18:02:01 +02:00
Alexandre Julliard
3d39c620da
make_requests: More aggressive grepping for status values.
2007-04-04 18:01:22 +02:00
Alexandre Julliard
c16eb8efd9
server: Add support for queuing a user APC upon async I/O completion.
2007-03-27 16:42:27 +02:00
Alexandre Julliard
28a9374323
server: Print the callback function in the APC_ASYNC_IO trace.
2007-03-23 11:49:59 +01:00
Alexandre Julliard
de1866d4fd
server: Implement the open_file method for named pipes.
...
Get rid of the open_named_pipe request, we can now use a normal open_file_object.
2007-03-22 16:47:46 +01:00
Alexandre Julliard
806bb49eda
server: Implement the open_file method for mailslots.
...
Get rid of the open_mailslot request, we can now use a normal open_file_object.
2007-03-22 16:36:54 +01:00
Alexandre Julliard
94655c8493
server: Implemented the open_file method for named pipe and mailslot devices.
2007-03-22 11:52:40 +01:00
Alexandre Julliard
2082a97d45
server: Use a standard async I/O event to signal directory changes.
2007-03-21 14:50:15 +01:00
Alexandre Julliard
fa4679fea6
server: Add support for storing an event to signal upon async I/O completion.
2007-03-21 14:27:52 +01:00
Alexandre Julliard
111610c45e
server: Add an async_data_t structure to store parameters for async I/O requests.
2007-03-20 20:21:12 +01:00
Alexandre Julliard
50975c81f0
server: Return the status from an async I/O APC call to the server.
2007-03-20 19:27:10 +01:00
Alexandre Julliard
eb3728d34e
server: Use the common pattern for async I/O parameters in named pipe requests.
2007-03-20 19:21:15 +01:00
Andrew Talbot
b1788c8462
server: Replace inline static with static inline.
2007-03-17 20:05:05 +01:00
Juan Lang
c2cb296277
ntdll: Implement NtAllocateLocallyUniqueId with server call.
2007-03-07 13:45:11 +01:00
Alexandre Julliard
1767b4558a
server: Expose areas revealed by changes to the window region.
2007-03-05 16:43:27 +01:00
Rob Shearman
d342d1413c
server: Add get_token_impersonation_level server call for retrieving the impersonation level from a token.
...
Add tests for GetTokenInformation(TokenImpersonationLevel).
2007-02-21 19:49:37 +01:00
Alexandre Julliard
89faee0194
server: Added support for the PM_QS_* flags in PeekMessage.
2007-02-21 15:21:05 +01:00
Vitaliy Margolen
b0e9d7e0b5
ntdll/server: Implement NtSetSecurityObject. With tests.
2007-02-15 14:19:24 +01:00
Vitaliy Margolen
bae75024a4
server/ntdll: Simplistic implementation of NtQueryObject(ObjectBasicInformation).
2007-01-25 12:48:35 +01:00
Alexandre Julliard
f3cb4f7d94
ntdll: Avoid inter-process APCs when called for the process itself.
2007-01-18 15:41:05 +01:00
Alexandre Julliard
02e2fa7798
ntdll: Implementation of inter-process NtMapViewOfSection and NtUnmapViewOfSection.
2007-01-18 15:17:51 +01:00
Alexandre Julliard
8025f79ce1
ntdll: Implementation of inter-process RtlCreateUserThread.
2007-01-18 15:02:55 +01:00
Alexandre Julliard
3410354d61
ntdll: Fix NtDuplicateObject to only close the file descriptor if it's in the same process.
2007-01-18 12:18:51 +01:00
Alexandre Julliard
c122260b9d
ntdll: Implemented NtLockVirtualMemory and NtUnlockVirtualMemory.
2007-01-16 09:50:08 +01:00
Alexandre Julliard
5a1ad74a67
ntdll: Implementation of inter-process NtFlushVirtualMemory.
2007-01-15 22:31:07 +01:00
Alexandre Julliard
1ea968016f
ntdll: Implementation of inter-process VirtualProtectEx.
2007-01-15 22:30:04 +01:00
Alexandre Julliard
3d00239586
ntdll: Implementation of inter-process VirtualQueryEx.
2007-01-15 22:28:42 +01:00
Alexandre Julliard
6ca1d1b081
server: Support queuing some APCs to a process instead of a thread.
2007-01-15 22:26:32 +01:00
Alexandre Julliard
fb40dc4099
server: Added mechanism for returning results of APC calls.
...
Defined APC_VIRTUAL_ALLOC and APC_VIRTUAL_FREE requests.
2007-01-15 22:24:40 +01:00
Alexandre Julliard
4cbe867a85
ntdll: Duplicate the mapping handle on the server side for NtMapViewOfSection.
2007-01-12 14:55:31 +01:00
Dmitry Timoshkov
ced2e56ddc
server: Map ESPIPE to STATUS_ILLEGAL_FUNCTION for consistency with ntdll.
2007-01-08 12:51:37 +01:00
Alexandre Julliard
60d6518c82
make_requests: Grab status names from async_terminate calls too.
2007-01-04 13:51:12 +01:00
Alexandre Julliard
5c8421d3e7
server: Add a generic apc_call structure to make it easier to extend, and more type-safe.
2007-01-04 13:40:09 +01:00
Alexandre Julliard
49b49c30fc
server: Notify the server that an APC has completed in the next get_apc call.
2007-01-04 13:17:53 +01:00
Ulrich Czekalla
4bdf4345b8
winex11.drv: Store window and drawable rects in X11DRV_PDEVICE.
2006-12-12 13:45:10 +01:00
Alexandre Julliard
8930427b21
server: Return an fd type in the get_handle_fd request.
2006-11-20 14:14:04 +01:00
Alexandre Julliard
02fc886302
ntdll: Retrieve mailslot message info from the client side.
2006-11-03 17:53:04 +01:00
Alexandre Julliard
8700c4341b
server: Get rid of the server-side file descriptor cache management.
2006-11-02 20:52:05 +01:00
Alexandre Julliard
28418cc919
ntdll: Maintain a file descriptor cache on the client side.
2006-11-02 20:48:19 +01:00
Alexandre Julliard
30b878b3b6
server: Compute the removable device flag on the server side.
2006-11-01 13:28:05 +01:00
Alexandre Julliard
85f518ac6b
server: A window timer id should be an unsigned long.
2006-10-16 17:03:44 +02:00
Alexandre Julliard
2f80fcd88d
server: Changed the get_next_hook request to allow retrieving the current hook too.
2006-10-05 14:05:48 +02:00
Alexandre Julliard
533f519950
user32: Store the prev_unicode hook flag on the client side.
2006-10-05 14:04:25 +02:00
Alexandre Julliard
81c1472449
user32: The per-window user data must be a DWORD_PTR.
2006-10-04 21:49:11 +02:00
Alexandre Julliard
e0dcf4fddb
server: Rearrange a few fields to avoid wasting padding space on 64 bits.
2006-10-04 21:41:32 +02:00
Alexandre Julliard
3ad9798263
server: Pass the data for message callbacks as vararg from the client side.
2006-10-04 20:25:42 +02:00
Alexandre Julliard
59dc456822
server: Return the data for winevent hooks in the varargs part of the get_message request.
2006-10-04 16:04:53 +02:00
Eric Pouech
8cb932ea89
ntdll: Implemented AmILastThread information class for NtQueryInformationThread.
2006-10-03 20:20:13 +02:00
Michael Stefaniuc
5664b8eeef
server: Win64 printf format warning fixes.
2006-10-02 11:55:01 +02:00
Alexandre Julliard
753c8706f5
server: Only call gettimeofday once per poll loop.
2006-08-10 16:42:09 +02:00
Alexandre Julliard
672bfc2d62
server: Make the message extra info 64 bits on Win64.
2006-08-09 17:10:14 +02:00
Alexandre Julliard
d3b3096756
server: Split the queuing of hardware messages into a separate send_hardware_message request.
2006-08-09 16:45:26 +02:00
Alexandre Julliard
2c2299685f
user: Implementation of Get/SetWindowLongPtr for 64-bit platforms.
...
Also use the same code for Get/SetWindowWord.
Based on a patch by Ge van Geldorp.
2006-08-02 21:59:00 +02:00
Alexandre Julliard
c627601c3b
server: Convert the server start time to the abs_time_t type.
2006-07-26 14:50:55 +02:00
Alexandre Julliard
3095a48d6f
server: Convert thread creation/exit times to the abs_time_t type.
2006-07-26 14:49:55 +02:00
Alexandre Julliard
ce40ef18df
server: Rename the wait_input_idle request to better reflect what it does.
...
Also get rid of the unused timeout field.
2006-07-26 11:48:25 +02:00
Alexandre Julliard
0f273c17ff
server: Added data_size_t type to represent sizes in the server protocol.
...
Make it an unsigned int to save some space on Win64, if we need to
transfer more than 4Gb over the server pipe something is seriously
wrong.
2006-07-26 11:11:03 +02:00
Stefan Siebert
026dd2d88a
ntdll: Implementation of process CreationTime and ExitTime.
2006-07-21 13:27:16 +02:00
Alexandre Julliard
c316f0e47f
server: Simplify process creation.
...
Pass the socket for the new process from the parent through the
environment.
Perform initialisations during the new_process request.
2006-07-19 14:00:10 +02:00
Ge van Geldorp
54afeb02de
user32: Implement Get/SetClassLongPtrA/W.
2006-07-12 20:04:18 +02:00
Dmitry Timoshkov
19e7fab981
user: Improve SetActiveWindow test, add SetForegroundWindow test, make them pass under Wine.
2006-07-10 11:47:44 +02:00
Alexandre Julliard
5558652ea3
server: Don't report a fatal protocol error for things that we can recover from.
2006-06-08 10:26:02 +02:00
Mike McCormack
fac494c822
server: open_console's from field should be a handle.
2006-06-07 14:30:28 +02:00
Mike McCormack
f386950fdd
server: Use unsigned long for request types that are 64bit in win64.
2006-06-07 14:21:12 +02:00
Eric Pouech
1d6e2590e0
ntdll/kernel32: Pipe information.
...
- implemented ntdll.NtQueryInformationFile's FilePipeLocalInformation control code
- reimplemented kernel32.GetNamedPipeInfo on top of it
- enhance current features to make this work both on client and server handles
- now also returning the number of instances
2006-05-27 12:31:01 +02:00
Jonathan Ernst
360a3f9142
Update the address of the Free Software Foundation.
2006-05-23 14:11:13 +02:00
Robert Shearman
3396a66ee7
server: Retrieve the groups for a token from the server.
2006-05-15 14:25:43 +02:00
Alexandre Julliard
959bbf8b75
server: Get rid of alignment requirements in write_process_memory request.
...
All the alignment handling is now done in the write_process_memory
function inside the server.
2006-04-07 18:41:58 +02:00
Alexandre Julliard
3d531f1bb5
server: Fixed length check in dump_inline_unicode_string.
2006-03-07 14:59:49 +01:00
Alexandre Julliard
1a4f6e579b
user: Launch explorer to manage the desktop window.
2006-03-07 11:42:35 +01:00
Alexandre Julliard
4be3d4c12b
server: Return real parent and owner in the create_window request.
...
Remove computing of parent and owner handles on the client side.
2006-03-06 15:00:37 +01:00
Eric Pouech
6b95c0e4b4
kernel32: ClearCommError.
...
ClearCommError should only deal with *communication* errors (are being
seen on the serial interface) rather than API errors (which can be
reported to the caller by the API itself). I then removed all the
stuff related to storing the error status in the server object.
2006-02-27 13:54:43 +01:00
Alexandre Julliard
e27358ea5c
server: Remove no longer needed fields in the init_process_done request.
2006-02-21 20:08:19 +01:00
Mike McCormack
e4faabfa64
server: Track created and removed directories in the tree of inodes for inotify.
...
Add them to or remove them from existing recursive watches.
2006-02-21 11:13:23 +01:00
Alexandre Julliard
e0330145d8
server: Remove the no longer needed exe_file parameter in the
...
init_process_done request.
2006-02-08 15:25:12 +01:00
Mike McCormack
0790f95589
kernel32: ReadDirectoryChangesW fixes.
...
ReadDirectoryChangesW remembers whether it's recording changes or not.
Don't initialize overlapped->InternalHigh.
The hEvent is cleared when ReadDirectoryChanges is called.
2006-02-07 16:50:36 +01:00
Mike McCormack
0193211946
server: Fill in NtNotifyChangeDirectoryFile's buffer with change data.
2006-02-06 11:58:55 +01:00
Alexandre Julliard
2a36dd239c
server: Remove no longer used create_flags from get_startup_info request.
2006-02-05 12:33:24 +01:00
Mike McCormack
08351071fd
server: Fix the file notification interface to use directory handles.
2006-01-27 12:13:56 +01:00
Alexandre Julliard
58273ea9c6
server: More generic mechanism for adding typecasts in server traces.
...
Added casts for size_t values.
2006-01-23 16:40:57 +01:00
Robert Shearman
a40ce39340
user: Fix WM_QUIT message ordering from PostQuitMessage.
...
Added a new server call as PostQuitMessage should set a flag in the
message queue to return the WM_QUIT message when there are no other
pending messages, rather than posting a message to the thread queue as
it does at the moment.
2006-01-17 13:14:31 +01:00
Alexandre Julliard
2878d99216
ntdll: Add debug registers to the context of all exceptions.
...
Maintain a local cache of the debug registers to avoid server calls
where possible.
2006-01-13 13:58:14 +01:00
Alexandre Julliard
2654be08d5
ntdll: Handle NtSetContextThread on the client side (as far as
...
possible) when setting the context of the current thread.
2006-01-11 20:20:32 +01:00
Eric Pouech
b7607aebdc
ntdll: Correct implementation for atom query functions.
2006-01-03 17:34:43 +01:00
Vitaliy Margolen
b05340a523
ntdll: Implement FSCTL_PIPE_WAIT NtFsControlFile ioctl.
...
Implement FSCTL_PIPE_WAIT NtFsControlFile ioctl.
Modify WaitNamedPipeW to use NtFsControlFile.
Replace struct overlapped with event.
2005-12-14 11:14:02 +01:00
Alexandre Julliard
67505c00af
server: Support for opening devices.
...
Added support for opening devices directly with the server when they
don't correspond to a Unix file.
2005-12-12 14:27:45 +01:00
Alexandre Julliard
2017555b06
server: Use a better error code for a zero-size mapped file.
2005-12-12 13:38:43 +01:00
Alexandre Julliard
03b040c51d
server: Added object attributes to a few more requests.
2005-12-09 14:52:04 +01:00
Alexandre Julliard
7b910f40f2
server: Use attributes instead of inherit flag in dup_handle request.
2005-12-09 12:21:35 +01:00
Alexandre Julliard
836d07c369
server: Use attributes instead of inherit flag in token requests.
...
Also use the specified access rights in the open_token request.
2005-12-09 12:17:19 +01:00
Alexandre Julliard
f2d7dd645e
server: Use attributes instead of inherit flag in process and thread requests.
2005-12-09 12:13:11 +01:00
Alexandre Julliard
f11d0a375f
server: Use attributes instead of inherit flag in snapshot requests.
2005-12-09 12:09:44 +01:00
Alexandre Julliard
7a096601e3
server: Use attributes instead of inherit flag in console requests.
2005-12-09 12:05:20 +01:00
Alexandre Julliard
27b1aec925
server: Use attributes instead of inherit flag in file requests.
2005-12-09 12:00:48 +01:00
Alexandre Julliard
bc30303c56
server: Use attributes instead of inherit flag in socket requests.
2005-12-09 11:58:55 +01:00
Vitaliy Margolen
cf21d4d7ca
Move mailslot devices into directory name space.
2005-12-05 13:30:26 +01:00
Vitaliy Margolen
babfa79436
Move named pipe objects into directory name space.
...
Change tests accordingly.
Add small test for WaitNamedPipe.
2005-12-05 13:09:35 +01:00
Vitaliy Margolen
348a3d912b
Move mapping (section) objects into directory name space.
2005-12-02 16:13:13 +01:00
Vitaliy Margolen
7c5cb7a229
Move timer objects into directory name space.
2005-12-02 16:05:54 +01:00
Vitaliy Margolen
5daae3dfa9
Move semaphore objects into directory name space.
2005-12-02 16:01:17 +01:00
Vitaliy Margolen
f676bc8d85
Move event and mutex objects into directory name space.
2005-12-02 15:55:48 +01:00
Vitaliy Margolen
80444dfe51
Implement symbolic link object in wineserver.
...
Implement Nt[Create|Open|Query]SymbolicLinkObject.
Change tests accordingly.
2005-11-30 19:22:57 +01:00
Vitaliy Margolen
3c6bdcce53
Implement directory object in wineserver.
...
Implement Nt[Create|Open]DirectoryObject.
Change tests accordingly.
2005-11-29 17:21:05 +01:00
Ge van Geldorp
1a1583a364
Match PSDK STATUS_* definitions.
2005-11-28 17:32:54 +01:00
Vitaliy Margolen
893987b871
Return correct error on name collision when creating new named
...
objects.
Check for correct error in affected places.
2005-11-21 16:27:03 +00:00
Alexandre Julliard
86397e1d43
Fixed handling of mailslot read timeout to avoid compiler warnings.
2005-11-21 15:23:49 +00:00
Vitaliy Margolen
83ef91ce2d
Replace inherit flag with object attributes in winstation and desktop
...
create & open. Use OBJ_OPENIF flag to create winstation & desktop.
2005-11-21 12:05:38 +00:00
Alexandre Julliard
73c72390f8
Fixed Get/SetThreadContext to work properly on suspended threads.
...
Added a test case.
2005-11-02 20:54:12 +00:00
Vitaliy Margolen
a996000ad5
- Send whole OBJECT_ATTRIBUTES.Attributes to the server not just an
...
inherit flag.
- Pass DesiredAccess to the server when creating mailslot.
2005-10-27 18:30:37 +00:00
Eric Pouech
b09582a890
Implemented kernel32 process affinity handling on top on ntdll.
2005-09-27 10:52:10 +00:00
Eric Pouech
e21aa6a184
- now passing access rights when creating a named pipe in NTDLL
...
- reimplemented Kernel32.CreatePipe purely on top of NTDLL APIs
- anonymous pipe handles should have the SYNCHRONIZE bit set
2005-09-26 11:02:45 +00:00
Ivan Leo Puoti
f0db7ab06b
Added FSCTL_PIPE_LISTEN support.
2005-09-06 14:09:42 +00:00
Alexandre Julliard
f62f6e8fe1
Don't cache file descriptors open on removable devices.
2005-08-24 18:33:50 +00:00
Alexandre Julliard
38502f70eb
Added a separate set_handle_cached_fd request instead of abusing
...
set_handle_info for that.
2005-08-23 18:43:50 +00:00
Alexandre Julliard
964815bc42
Added an unmount_device request that invalidates all file descriptors
...
open on a given Unix device.
2005-08-08 15:11:03 +00:00
Alexandre Julliard
830d1edb9d
Automatically generate the list of error names in make_requests.
2005-07-29 14:49:05 +00:00
Robert Shearman
91eaea53ae
- Change the default user SID to match what was previously returned by
...
NtQueryInformationToken.
- Implement TokenUser for NtQueryInformationToken.
- Add a function for getting the user's registry path from a SID.
2005-07-18 13:22:55 +00:00
Alexandre Julliard
9ad5628639
Moved the server start time to the init_thread request and got rid of
...
the init_process request (based on a patch by Felix Nawothnig).
2005-07-14 10:32:46 +00:00
Alexandre Julliard
11ad6a0ac4
Return the startup info size in the init_thread request, and allocate
...
the process parameters structure in ntdll instead of kernel.
2005-07-13 19:43:35 +00:00
Alexandre Julliard
4391be583e
Get rid of the boot_done request.
2005-07-13 14:20:13 +00:00
Alexandre Julliard
0424f38169
Already initialize the process in the first init_thread request
...
instead of waiting for the init_process request.
2005-07-13 12:12:43 +00:00
Alexandre Julliard
01caa5e645
Moved the fields that depends on startup info from the init_process
...
request to get_startup_info.
2005-07-12 20:27:09 +00:00
Alexandre Julliard
6aa0cc5e3c
Load the HKEY_CURRENT_USER branch at server startup too.
2005-07-11 20:44:59 +00:00
Alexandre Julliard
8c518808b8
Put in place the basic infrastructure to allow supporting multiple
...
desktop windows.
2005-07-08 11:37:40 +00:00
Dmitry Timoshkov
86af38c8ca
Make IsWindowUnicode work in the case when window belongs to another
...
process.
2005-07-07 12:02:31 +00:00
Robert Shearman
4bba21643c
Add support for impersonating a token.
2005-06-20 13:18:38 +00:00
Mike McCormack
66e5ce3066
Remove unnecessary includes.
2005-06-20 10:35:36 +00:00
Robert Shearman
dacc3dbfa5
Fix size used to validate the sids in aces.
2005-06-14 19:15:58 +00:00
Robert Shearman
e51dd36453
Implement overlapped I/O with named pipes.
2005-06-08 19:11:46 +00:00
Alexandre Julliard
1bf96e09a9
Beginnings of support for window stations and desktops.
2005-06-08 18:44:50 +00:00
Alexandre Julliard
db412aaf60
Added a from_child parameter to the get_update_region request to allow
...
restarting the search from a given child, in order to avoid looping
forever on windows that don't repaint correctly.
2005-05-31 13:37:16 +00:00
Robert Shearman
616b293e1d
- Print commas between ACE's.
...
- Dump access masks from all ACE's.
2005-05-25 09:54:05 +00:00
Robert Shearman
4ad93416a8
Implement NtAccessCheck.
2005-05-24 12:32:18 +00:00
Robert Shearman
7bff35428b
- Add new server type "struct security_descriptor".
...
- Add tracing for this new type.
2005-05-23 16:33:00 +00:00
Alexandre Julliard
9e73cdde39
Allow passing a string to the window property server requests instead
...
of an atom to avoid redundant server round-trips.
2005-05-11 19:01:10 +00:00
Alexandre Julliard
63342353bc
Store a bitmap of active hooks on the client side to try to avoid
...
server calls for hooks that are not set.
2005-05-11 13:03:15 +00:00
Eric Pouech
e6267369b2
- changed ATOM support in wineserver to match NTDLL needs
...
- adapted accordingly kernel32 atom support
2005-05-10 15:15:50 +00:00
Mike McCormack
abe70f7648
Implemented GetLastInputInfo.
2005-04-28 12:04:14 +00:00
Mike McCormack
f92fff66a2
Implemented NtSignalAndWaitForSingleObject.
2005-04-24 17:35:52 +00:00
Robert Shearman
d2ea92d14e
- Clean up well-known privileges.
...
- Implement checking tokens for privileges in the server.
- Implement NtPrivilegeCheck.
2005-04-22 21:17:15 +00:00
Alexandre Julliard
3e2f2a5265
Allow nested hardware message processing by storing a unique id in
...
every message and using it to manage the current queue position.
Better filtering of hardware messages to avoid returning messages that
have no chance to match the filter.
2005-04-20 13:03:59 +00:00
Eric Pouech
5a2591d96d
- moved named pipe creation to ntdll
...
- server now handles the named pipe flags as the NTDLL values (not the
KERNEL32 ones)
- named pipes in server now use the async IO mechanism for
connect/wait ops
2005-04-18 14:57:04 +00:00
Alexandre Julliard
bc75f2f6c9
Return the coordinates information needed to setup the DC parameters
...
in the get_visible_region request instead of requiring the client to
compute it again.
2005-03-31 15:36:57 +00:00
Mike McCormack
2ab6a775bd
Implement mailslots.
2005-03-30 19:02:15 +00:00
Alexandre Julliard
4d32a475a8
Replace the link_window request by a set_parent request since that is
...
all link_window is used for at this point.
Get rid of the WIN_LinkWindow/UnlinkWindow functions.
2005-03-25 10:38:56 +00:00
Alexandre Julliard
0bc8377bc2
Create a new server request for accepting hardware messages instead of
...
abusing reply_message.
Allow passing the determined window for a hardware message back to the
server to have it redispatch the message to the correct thread.
2005-03-23 10:33:17 +00:00
Alexandre Julliard
5054c79880
Try to always keep the server window Z-order in sync with the X11 one
...
using a heuristic based on mouse and expose events.
2005-03-21 12:37:00 +00:00
Alexandre Julliard
f75609087a
Make the server know about the visible area of a window, which is the
...
window rect minus the caption and borders when they are handled by the
window manager.
2005-03-17 19:10:41 +00:00
Alexandre Julliard
4e47afb36f
Compute the top clipping window directly on the server side.
2005-03-17 14:02:06 +00:00