Commit Graph

2892 Commits

Author SHA1 Message Date
Alexandre Julliard 5a19769245 configure: Remove no longer needed poll() checks.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:26:24 +02:00
Guillaume Charifi 5990f19bdc ntdll: Implement exclusive flag for IOCTL_AFD_POLL.
Signed-off-by: Guillaume Charifi <guillaume.charifi@sfr.fr>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 10:28:16 +02:00
Zebediah Figura c3b32dbccf server: Factor out a complete_async_poll() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 10:27:33 +02:00
Gabriel Ivăncescu 2fe70331d9 ntdll: Implement JobObjectBasicProcessIdList for NtQueryInformationJobObject.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-14 21:24:14 +02:00
Zebediah Figura cc7e3ec8e2 server: Create pseudo-fds as initially signaled.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-14 18:30:29 +02:00
Zebediah Figura 5af74129bd ntdll: Do not fill the IOSB if a device IRP failed synchronously.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-14 18:30:17 +02:00
Zebediah Figura 1ee382c706 server: Pass the async result size as part of apc_call_t.
Only really an optimization (plus it makes the code a little conceptually simpler).

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-14 18:30:09 +02:00
Zebediah Figura 4a73fbbd40 server: Do not signal completion if the async failed synchronously.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 11:33:22 +02:00
Zebediah Figura 097685aa9e ntoskrnl: Report separately whether an IRP was marked pending.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 11:33:19 +02:00
Zebediah Figura 484b78bda0 ntoskrnl: Report the initial status of an IRP separately from the IOSB status.
Based on a patch by Chip Davis.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30155
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 11:32:18 +02:00
Zebediah Figura 69ea35a954 ntoskrnl: Report IRP completion via get_next_device_request if possible.
Although there is arguably an advantage to saving a server request, the impetus
for this patch is make it easier for the server to process the IRP return status
before (or at the same time as) it processes the IOSB status. This allows
simpler handling of the case where the IRP handler returns STATUS_PENDING but
completes the IRP before returning.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 11:31:17 +02:00
Zebediah Figura a1c42293a2 server: Don't wake up always-blocking asyncs.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 22:30:45 +02:00
Zebediah Figura 386c4bcf2f server: Use a separate field to track whether an async is blocking.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 22:30:45 +02:00
Zebediah Figura 32347fcf08 server: Queue a cancel IRP in the device file cancel_async callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 22:30:45 +02:00
Zebediah Figura 4f1c7ba5f9 server: Cancel asyncs through fd_ops.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 22:30:45 +02:00
Zebediah Figura 08eaf8f481 server: Make sure that async_request_complete() is called in the case of a failed connection as well.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51726
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-07 10:16:27 +02:00
Zebediah Figura dd9eacff4e server: Fill the TimeZoneBias member of KSHARED_USER_DATA.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 14:53:27 +02:00
Zebediah Figura 09dd801291 server: Add helper functions to perform atomic stores.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 14:53:11 +02:00
Zebediah Figura b1e4d920c3 server: Return void from the ioctl callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:43 +02:00
Zebediah Figura a36e2769c9 server: Return void from the flush callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:41 +02:00
Zebediah Figura 377d18c7b1 server: Return void from the write callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:41 +02:00
Zebediah Figura 6d49991188 server: Return void from the read callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:40 +02:00
Zebediah Figura 6cc36a46ff server: Return void from the get_volume_info callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:39 +02:00
Zebediah Figura 15b8f91e24 server: Check the status code to determine whether the async has failed.
Instead of manually specifying success or failure.

Based on test_return_status() in ntoskrnl. The changes in this patch don't
affect device IRPs, but the tests show the heuristic that Windows uses, and in
practice it turns out to be correct for all known asyncs.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 23:19:36 +02:00
Zebediah Figura 285700a526 server: Mark the async as pending in IOCTL_AFD_EVENT_SELECT.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 21:43:04 +02:00
Zebediah Figura be3ff3d658 server: Mark the async as pending in IOCTL_AFD_BIND.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 21:43:04 +02:00
Zebediah Figura dd58bf9ce2 server: Use a separate function and flag to communicate that the initial status of an async is not known yet.
Mostly just to simplify the interface, so that we don't need to use the return
value to communicate this.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 21:43:04 +02:00
Zebediah Figura 298a1b296b server: Move the STATUS_ALERTED logic from async_request_complete() to async_terminate().
In particular, don't mark asyncs with output data as "alerted", i.e.
restartable.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:23:12 +02:00
Zebediah Figura 19d3923975 server: Use async_request_complete() in message_queue_read().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:23:00 +02:00
Zebediah Figura 559a8cea57 server: Add a helper to call async_request_complete() while allocating new memory.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:22:49 +02:00
Zebediah Figura 96593370cd server: Introduce a helper to fill an iosb and terminate the async.
For convenience, and to centralize the STATUS_ALERTED logic into one place.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:22:16 +02:00
Zebediah Figura fd4e7703e9 server: Do not create an iosb for IRP calls not associated with an async.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:21:18 +02:00
Zebediah Figura c4682cd928 server: Allow completing non-alerted asyncs with STATUS_PENDING.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:20:47 +02:00
Zebediah Figura 0f332fc039 server: Allow calling async_terminate() with STATUS_PENDING.
We still don't quite handle this completely correctly, but we should at least
avoid crashing the server due to a failed assertion.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-02 10:20:39 +02:00
Zebediah Figura 6cb5f66079 server: Use a simple boolean to track whether the async has been terminated.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 10:00:19 +02:00
Zebediah Figura da838c2ae5 server: Use a separate field to track whether the async has been alerted.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 10:00:11 +02:00
Zebediah Figura 8e7a5ec817 server: Use async->iosb->status instead of async->status in async_satisfied().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 10:00:06 +02:00
Zebediah Figura be07015407 server: Do not call async_terminate() when restarting an already terminated async.
At best this is a no-op. At worst this will emit an extra APC_ASYNC_IO where
the termination (e.g. cancellation) should already have emitted one.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 09:59:48 +02:00
Zebediah Figura e4a2bca47b server: Remove the async from the queue in async_set_result().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 09:59:33 +02:00
Luke Deller a87bafc5b9 server: Implement file access hints using posix_fadvise.
Signed-off-by: Luke Deller <luke@deller.id.au>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-24 20:51:42 +02:00
Zebediah Figura d4b13ef9d6 server: Remove a redundant NULL check for async->fd.
If the async has not been terminated yet, async->fd cannot be NULL.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 11:51:26 +02:00
Zebediah Figura 10ca57f4f5 server: Remove support for waiting on an IRP object.
This was initially used to let the client wait on IRP completion;
c56c42ff79 changed it to use the async handle
instead.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 11:49:44 +02:00
Alexandre Julliard d9ca9d455e server: Also set extended registers from the native context even in Wow64 mode.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 15:20:19 +02:00
Zebediah Figura eec47af638 ws2_32: Properly implement getsockopt(SO_CONNECT_TIME).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 11:33:47 +02:00
Huw Davies 68b840953d server: Remove check for macOS version < 10.5.
Our stated minimum requirement is 10.8.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 11:16:59 +02:00
Alexandre Julliard 6c478c304c server: Set YMM registers from the native context even in Wow64 mode.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-17 18:16:49 +02:00
Zebediah Figura 70e95447f9 server: Create the special Perflib\009 key.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 17:53:55 +02:00
Zebediah Figura acc1861ed0 server: Fix the parameter size check for IOCTL_AFD_EVENT_SELECT.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 17:53:55 +02:00
Francois Gouget a716b13974 server: Remove obsolete synthesized formats in release_clipboard().
Synthesized formats must be removed too if the format they depend on has
been removed.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51496
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 17:53:55 +02:00
Alexandre Julliard b08b4b8213 server: Store the entry point as image-relative in pe_image_info_t.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51539
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-30 12:14:30 +02:00
Zebediah Figura 9bc5bc7c66 server: Remove the socket from the polling loop if it was aborted.
Don't use rd_shutdown and wr_shutdown to determine this. On the one hand, it's
possible to have pending asyncs even if rd_shutdown && wr_shutdown, which will
be cheerfully completed upon receiving data. On the other hand, RST doesn't
cause WSAESHUTDOWN, but rather WSAECONNRESET.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 20:14:16 +02:00
Zebediah Figura 361435f609 server: Remove the socket from the polling loop if both it and the peer have SHUT_WR.
Based on a patch by Torge Matthies.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51319
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 20:14:14 +02:00
Zebediah Figura ec07f285e2 server: Separate SD_RECEIVE and hangup conditions.
This patch does result in one functional change: if we are selecting for
AFD_POLL_READ on a socket which has had SD_RECEIVE and there are no asyncs, we
will now respond to POLLIN instead of ignoring it. Neither this nor the previous
behaviour matches Windows, which instead puts the socket into an aborted state
and sends RST to the peer if any data is received after SD_RECEIVE or if
SD_RECEIVE is done while there is pending data.

Apart from this there is no functional change, as the places where rd_shutdown
alone is checked can't be reached if there was a hangup. It is instead for
semantic clarity.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 20:14:12 +02:00
Zebediah Figura a9ddbc0cbc server: Also return STATUS_PIPE_DISCONNECTED for shutdown nonblocking sockets.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 20:14:09 +02:00
Zebediah Figura d04c5f4b1b server: Do not accept sizeof(struct WS_sockaddr_in6_old).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-23 19:03:13 +02:00
Zebediah Figura c06e5693cb server: Validate the output size of IOCTL_AFD_BIND against the input address size rather than sizeof(struct sockaddr).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-23 19:02:55 +02:00
Zebediah Figura 06dd08ee44 server: Map ENODEV to STATUS_INVALID_ADDRESS_COMPONENT.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 13:16:27 +02:00
Zebediah Figura 9b257ed63f server: Support passing to bind a zero sin6_scope_id.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 13:16:20 +02:00
Zebediah Figura d3b64637a0 server: Avoid leaking the ifaddrs structure in bind_to_interface().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 13:15:45 +02:00
Alexandre Julliard 649f70aba7 server: Don't generate dll load event for native binaries on Wow64.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-09 22:15:30 +02:00
Zebediah Figura 3b33a6b487 server: Explicitly forbid connecting a listening or connected socket.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51381
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 11:33:17 +02:00
Zebediah Figura ddb9223915 server: Clear the connection error after a successful connection.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 11:33:04 +02:00
Zebediah Figura 53e69130cc server: Report AFD_POLL_CONNECT_ERR if a previous connection attempt failed.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51331
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51366
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-06 09:57:28 +02:00
Zebediah Figura c86ba5d09d server: Separate a poll_single_socket() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-06 09:57:15 +02:00
Zebediah Figura 026b192018 server: Return a Win32 error code from IOCTL_AFD_WINE_GET_SO_ERROR.
Fixes: fb3956fcf9
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-06 09:56:57 +02:00
Zebediah Figura e2b9131bd9 server: Remove special handling of STATUS_MORE_PROCESSING_REQUIRED.
This was used to implement AcceptEx() using multiple APCs, and made obsolete by
0bbd3f6617.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-05 19:55:18 +02:00
Zebediah Figura bedd92ca06 server: Explicitly return whether a select request was immediately signaled.
This fixes a regression introduced by 97afac469f.

If we make a request on an asynchronous device handle, and the IRP handler
returns STATUS_PENDING, wait_async() will return STATUS_PENDING, as intended.
However, if the async object is signaled before the user has a chance to call
wait_async() [e.g. if get_next_device_request is called quickly enough], select
will return STATUS_PENDING immediately, which causes server_select() to think
the object is not signaled, and wait for a select reply forever.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51277
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51295
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-05 19:55:18 +02:00
Zebediah Figura a17469b165 server: Call the close_handle callback and release_object_from_handle() in the same loop.
Several server objects check if the last handle is being closed in their
close_handle callback. If a process holds the last two handles to an object,
this code path currently won't be triggered.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-05 19:54:56 +02:00
Zebediah Figura 3f04fdd876 server: Don't check the user data for NULL in async_terminate().
This semantically reverts 481517178f.

That commit was used to implement NtFlushBuffersFile, which at the time didn't
use a callback function. 9050b58f07 changed it to
use irp_completion(), since the result of a blocking flush needed to be taken
from the IOSB.

As of 97afac469f that's not true anymore, but on
the other hand it is theoretically possible for a device driver to touch the
Information member of the IOSB, and we don't seem to lose anything by making
all asyncs take a common path.

Since all asyncs pass user data and there's no clear reason for them not to,
let's get rid of a bit of extra code complexity that's no longer used.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-05 19:54:53 +02:00
Alexandre Julliard eb69da2a9c ntdll: Implement NtQueryInformationToken(TokenSessionId).
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46595
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Alexandre Julliard 2b5cefc92e server: Store the session id in the process token.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Alexandre Julliard b20cbd0d57 ntdll: Return the session id in NtQuerySystemInformation(SystemProcessInformation).
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Alexandre Julliard bf4105b731 ntdll: Implement NtQueryInformationProcess(ProcessSessionInformation).
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Alexandre Julliard ad93413c71 server: Store session id in the process and return it at process init time.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Zebediah Figura 089b2528c2 server: Return STATUS_KEY_DELETED when trying to retrieve the full name of a deleted key.
This fixes a server crash that can be triggered by deleting a key and then
trying to retrieve its name. In that case key->parent is NULL.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Zebediah Figura e759da260e server: Use a separate request to retrieve the object name.
A deleted key returns STATUS_KEY_DELETED when ObjectNameInformation is
requested, but succeeds when ObjectBasicInformation is requested.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-01 22:34:31 +02:00
Zebediah Figura 4cca8b67d0 server: Create linked tokens as impersonation tokens.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51347
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-30 18:46:16 +02:00
Zebediah Figura 20c1990372 ws2_32: Handle SO_SNDTIMEO in the server.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-30 09:19:42 +02:00
Zebediah Figura 0072c72512 server: Introduce IOCTL_AFD_WINE_GET_SO_SNDBUF.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-30 09:19:37 +02:00
Zebediah Figura a0bb5564eb server: Introduce IOCTL_AFD_WINE_SET_SO_SNDBUF.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-30 09:19:29 +02:00
Zebediah Figura f4df896e06 ws2_32: Handle SO_RCVTIMEO in the server.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-29 19:55:22 +02:00
Alexandre Julliard cc63b76833 server: Remove the no longer used pid/tid fields in the init_thread request.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-29 15:25:42 +02:00
Qian Hong be55038f3d server: Forbid shrinking files which are mapped to memory.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-29 12:39:35 +02:00
Qian Hong 4e84a553a8 ntdll: Truncate files through the server.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-29 12:37:25 +02:00
Zebediah Figura 1a2b1d75a8 server: Introduce IOCTL_AFD_WINE_GET_SO_RCVBUF.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 19:43:28 +02:00
Zebediah Figura b83a8b2da5 server: Introduce IOCTL_AFD_WINE_SET_SO_RCVBUF.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 19:43:28 +02:00
Qian Hong 73d0bb7740 server: Forbid deleting files with an open mapping.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 19:43:27 +02:00
Alexandre Julliard 8ac411ed6d server: Support both native and wow64 register contexts.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-27 11:42:32 +02:00
Alexandre Julliard 6e2ca647ba server: Trace extended registers as 128-bit entities.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:44:49 +02:00
Alexandre Julliard 6b86b41912 server: Simplify the naming of the YMM regs.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:41:21 +02:00
Alexandre Julliard f626349c0a server: Use separate handles for thread and context in get_thread_context.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 11:00:24 +02:00
Alexandre Julliard 2ff7a7676c server: Add a native_machine global variable.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 11:00:24 +02:00
Zebediah Figura f7ffd71f3c server: Remove the no longer used get_socket_event request.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 10:27:05 +02:00
Zebediah Figura 8211c3ab36 server: Introduce IOCTL_AFD_WINE_GET_SO_ERROR.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 10:26:32 +02:00
Zebediah Figura 697f9e979e server: Introduce IOCTL_AFD_WINE_GET_SO_ACCEPTCONN.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 20:44:58 +02:00
Zebediah Figura 5b47e4ac0b server: Remove the no longer used get_socket_info request.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-21 10:45:15 +02:00
Zebediah Figura a4b3ed9f2a server: Introduce IOCTL_AFD_WINE_GET_INFO.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-21 10:45:05 +02:00
Zebediah Figura 9827081305 server: Remove the no longer used set_socket_deferred request.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 10:12:41 +02:00
Zebediah Figura 4d30a0e15c server: Introduce IOCTL_AFD_WINE_DEFER.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 10:12:21 +02:00
Zebediah Figura 93d001fa81 ws2_32: Check if the socket is bound in ConnectEx() in the server.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-17 09:19:19 +02:00
Zebediah Figura 5295cc273e ws2_32: Pass a Win32 socket address to IOCTL_AFD_WINE_CONNECT.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-17 09:19:13 +02:00
Zebediah Figura f0b42b2ffa ws2_32: Check if the socket is bound in listen() in the server.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-17 09:18:51 +02:00
Zebediah Figura 43a1a248c3 server: Correctly access the sir_lsap_sel field.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-17 09:18:41 +02:00
Zebediah Figura a997c3980f server: Return STATUS_ADDRESS_ALREADY_ASSOCIATED from IOCTL_AFD_BIND if the socket is already bound.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-16 09:03:20 +02:00
Zebediah Figura dd147ed65a server: Return the socket address from IOCTL_AFD_BIND.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-16 09:03:20 +02:00
Zebediah Figura 02309b72f7 server: Implement IOCTL_AFD_GETSOCKNAME.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-16 09:03:20 +02:00
Zebediah Figura f98ea26c67 server: Partially implement IOCTL_AFD_BIND.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-16 09:03:20 +02:00
Zebediah Figura 43e67ebddc server: Remove the no longer used set_socket_event request.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:43:18 +02:00
Zebediah Figura ce31d1253d server: Introduce IOCTL_AFD_WINE_MESSAGE_SELECT.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:43:05 +02:00
Zebediah Figura 2daf76432e server: Do not poll sockets for POLLPRI unless we are selecting for AFD_POLL_OOB.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:57 +02:00
Zebediah Figura 69549fc0c7 server: Implement IOCTL_AFD_GET_EVENTS.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:52 +02:00
Zebediah Figura 9bbf3ab96b server: Implement IOCTL_AFD_EVENT_SELECT.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-14 10:07:52 +02:00
Zebediah Figura e6258c544d server: Store the socket errors as an array of Unix errno values.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-14 10:07:45 +02:00
Zebediah Figura bbb126dc75 server: Use AFD_POLL_* flags internally.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-14 10:07:30 +02:00
Zebediah Figura aa61e519d5 server: Free the old process image name if a second process image is mapped (Valgrind).
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-14 10:07:06 +02:00
Zebediah Figura 00eb00f6d6 server: Do not bother clearing events in IOCTL_AFD_LISTEN.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:53:32 +02:00
Zebediah Figura 139e95df61 server: Do not bother clearing events in IOCTL_AFD_WINE_CONNECT.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:53:28 +02:00
Zebediah Figura a7577014fa server: Use an enum to store socket connection state.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:53:22 +02:00
Zebediah Figura 5eaba82a77 server: Use separate fields to track socket shutdown state.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:53:03 +02:00
Zebediah Figura 5ee78d3460 server: Make FD_WINE_NONBLOCKING into a separate field.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:52:51 +02:00
Zebediah Figura 830fc41fbb server: Do not return the socket state from get_socket_event.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-11 10:52:39 +02:00
Zebediah Figura 9344a490a4 server: Fail with WSAEINVAL or WSAEALREADY when trying to connect a socket that is already connecting via nonblocking connect().
Fixes connection in Mortal Kombat 11; reported by Thomas Crider.

Fixes: a891713f48
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-10 20:50:32 +02:00
Zebediah Figura 7326b21241 server: Return STATUS_INVALID_PARAMETER when trying to call connect() on a socket with an active ConnectEx() async.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-10 20:50:22 +02:00
Damjan Jovanovic 31e984a09d server: The owner of a securable object should have all the standard access rights.
Cygwin fork() fails in NtCreateSymbolicLinkObject(). We successfully
create the link but then fail to alloc_handle() with STATUS_ACCESS_DENIED,
because the requested access rights exceed what the owner is allowed.
Allow it more.

Thank you to Dmitry Timoshkov for debugging the security details from
alloc_handle() onwards.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48891
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-08 22:28:44 +02:00
Zebediah Figura 8c26fca5c2 server: Don't rely on async_is_blocking() to determine whether IOCTL_AFD_WINE_ADDRESS_LIST_CHANGE should block.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-07 21:41:15 +02:00
Zebediah Figura 810a9da935 server: Remove the no longer used enable_socket_event request.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-02 20:16:08 +02:00
Zebediah Figura bd2e5ff939 server: Introduce IOCTL_AFD_WINE_FIONBIO.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-02 20:16:07 +02:00
Rémi Bernon fc64aa7e7c server: Send HID report data with the WM_INPUT messages.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:31:21 +02:00
Rémi Bernon 109de60873 server: Support variable sized hardware_msg_data allocation.
The RIM_TYPEHID messages will have to carry the variable length HID
report.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:49 +02:00
Rémi Bernon 1128a37e77 user32: Implement WM_INPUT / RIM_TYPEHID message dispatch.
Without any HID report data for now.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:41 +02:00
Rémi Bernon e8498788e8 server: Add hardware_msg_data size for variable size messages.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:36 +02:00
Paul Gofman e1c3ee6d51 server: Do not allow parenting non-empty job.
Fixes a regression introduced by 21f5597de4

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:24:59 +02:00
Zebediah Figura 85a615f136 ntdll: Introduce IOCTL_AFD_WINE_SENDMSG.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 11:34:56 +02:00
Zebediah Figura e634cc7f48 server: Clear FD_OOB instead of FD_READ when receiving OOB data.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 11:34:27 +02:00
Zebediah Figura b5e264a4a2 server: Pass -1 to set_fd_events() if the socket is not yet initialized or a not yet used TCP socket.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 11:33:29 +02:00
Zebediah Figura 89f77a93a6 server: Mark the socket as cacheable when it is connected, marked listening, or created as connectionless.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 11:33:27 +02:00
Paul Gofman 385142bb9e server: Check for system regs before suspending for ptrace.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-26 21:30:30 +02:00
Alexandre Julliard e1716530d9 server: Use a standard user APC also for timers.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-25 21:13:00 +02:00
Zebediah Figura 834e2f04c6 ntdll: Implement IOCTL_AFD_POLL.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50975
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-25 09:35:23 +02:00
Zebediah Figura 30fd3019e1 server: Allow opening the Afd device with a file name.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50974
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-25 09:31:28 +02:00
Alexandre Julliard 4e8fcc41ca ntdll: Replace __wine_make_process_system by a Wine-specific NtSetInformationProcess() class.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-24 18:31:27 +02:00
Zebediah Figura b8f4061df0 ntdll: Implement IOCTL_AFD_RECV.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50366
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-24 11:34:32 +02:00
Zebediah Figura 97afac469f ntdll: Avoid accessing the I/O status block in wait_async().
Steam uses WSASend() with completion ports, reusing OVERLAPPED structures as
soon as they are returned from GetQueuedCompletionStatus(). Since completion is
queued during the select request in wait_async(), the I/O status block can be
reused even before the call to NtDeviceIoControl exits.

This works fine with current Wine, because WSASend() doesn't access the I/O
status block after queuing completion. However, a patch that changes it to use
wait_async() like other async requests causes NtDeviceIoControlFile to
consistently return garbage status codes.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-24 11:32:28 +02:00
Zebediah Figura a5b6e90d48 server: Don't change the status of an already terminated async.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-24 11:32:26 +02:00
Paul Gofman d430efb64a server: Support process job lists.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 21:48:57 +02:00
Paul Gofman ddd161f339 ntdll: Validate job handles at process creation.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 21:48:57 +02:00
Paul Gofman de0dc0e8ac server: Send completions for existing job processes when adding completion port.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-19 10:40:41 +02:00
Paul Gofman 21f5597de4 server: Support nested jobs.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-19 10:40:21 +02:00
Zebediah Figura e68f41e4fe server: Introduce IOCTL_AFD_WINE_SHUTDOWN.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-19 10:32:59 +02:00
Zebediah Figura 4256253419 server: Introduce IOCTL_AFD_WINE_CONNECT.
I was able to reverse-engineer a native CONNECT ioctl, with code 0x801; but I
was not able to find a valid set of parameters which would allow us to
implement either connect() or ConnectEx(). In particular, I could not find a
way to make the ioctl respect nonblocking mode, and I could not find a way to
specify an initial buffer to be sent.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 09:56:25 +02:00