Alexandre Julliard
e3049f11fa
server: Send the APC call data as vararg in the queue_apc request.
...
To make it possible to support a larger structure.
2023-06-06 21:51:37 +02:00
Rémi Bernon
88cbc08b7f
server: Don't reset cursor clipping on foreground thread exit.
...
It will be reset on foreground input changes, when it happens.
2023-06-02 21:08:34 +02:00
Jinoh Kang
078b0219aa
server: Update parent window region when exposing previously invisible window.
...
Fixes: 33617af814
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54949
2023-06-02 20:47:28 +02:00
Rémi Bernon
900ba82654
win32u: Use WM_WINE_CLIPCURSOR / TRUE for empty clipping rect.
2023-05-31 22:50:10 +02:00
Rémi Bernon
8f9610fdff
server: Use get_hardware_msg_bit consistently to classify messages.
2023-05-31 21:19:35 +02:00
Rémi Bernon
26c6386de9
server: Move set_cursor desktop local variable to wider scope.
2023-05-30 12:25:25 +02:00
Rémi Bernon
61dbfea452
server: Assume the internal clip message to be WM_WINE_CLIPCURSOR.
2023-05-30 12:25:25 +02:00
Paul Gofman
fce615a2c3
ntdll: Support MEM_PRESERVE_PLACEHOLDER in NtUnmapViewOfSectionEx().
2023-05-30 12:12:09 +02:00
Alexandre Julliard
30040cc9d7
ntdll: Also update the entry point address when loading an ARM64X binary.
2023-05-26 21:24:08 +02:00
Alexandre Julliard
f6f38e2490
server: Return STATUS_IMAGE_MACHINE_TYPE_MISMATCH when the mapping's machine differs from the process.
2023-05-25 16:21:17 +02:00
Alexandre Julliard
c306e76645
server: Add a separate request to create a memory view for an image mapping.
2023-05-25 16:21:17 +02:00
Alexandre Julliard
4356fe0d83
ntdll: Support the PS_ATTRIBUTE_MACHINE_TYPE attribute for new processes.
2023-05-24 15:43:54 +02:00
Alexandre Julliard
ebc1b09915
ntdll: Support the machine extended parameter in NtMapViewOfSectionEx().
2023-05-23 13:24:32 +02:00
Alexandre Julliard
1d368b3789
server: Move the Wine-specific flags out of the image_flags field.
2023-05-12 17:50:48 +02:00
Alexandre Julliard
8f9c0c825d
server: Add a separate request to create a memory view for a .so builtin.
2023-05-12 17:50:26 +02:00
Alexandre Julliard
4b8f3dd9a5
ntdll: Support extended address requirements in NtMapViewOfSectionEx().
2023-05-10 17:08:48 +02:00
Alexandre Julliard
17a0e19489
server: Make x86_64 a supported architecture on ARM64.
2023-05-09 14:28:04 +02:00
Alexandre Julliard
5b6e82f0f9
ntdll: Handle the extended memory attributes in NtAllocateVirtualMemoryEx().
2023-05-09 14:28:04 +02:00
Eric Pouech
4b28127157
wow64: Move filter of (un)load DLL debug events to client side.
...
Code is duplicated in ntdll.dll (for 32bit only and old Wow configuration)
and wow64.dll for new Wow64 configurations.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
2023-03-22 20:03:51 +01:00
Alexandre Julliard
fa47ea7400
server: Determine the native thread context flags on the client side.
2023-03-08 12:43:20 +01:00
Henry Goffin
0e85ac17a4
win32u: Invalidate all cached keys after input.
...
This patch addresses an issue in Second Life and potentially other
multi-threaded applications which process WM_KEYDOWN in one thread
and then verify that the key is "still down" with GetAsyncKeyState
from another thread. Wine uses a per-thread key cache, resulting
in inconsistent views of key status. Caches are now invalidated
when an input event is injected by the driver or via SendInput.
2023-03-02 10:20:01 +01:00
Alex Henrie
f3e1d897ca
server: Annotate allocation functions with __WINE_(ALLOC_SIZE|DEALLOC|MALLOC).
2023-03-01 21:39:30 +01:00
Alexandre Julliard
14967933ec
server: Fix another buffer overflow compiler warning.
2023-03-01 21:39:30 +01:00
Paul Gofman
74240a3545
server: Set TCP SYN count on sockets.
2023-02-21 11:21:27 +01:00
Paul Gofman
4e6a5d62ad
server: Retry socket connection on ECONNABORTED error.
2023-02-21 11:21:05 +01:00
Alexandre Julliard
1b9db99417
ntdll: Return the correct IOSB information when creating a named pipe.
2023-02-21 11:17:17 +01:00
Alexandre Julliard
d74b084e45
ntdll: Pass the NtCreateNamedPipeFile disposition to the server.
2023-02-21 10:48:16 +01:00
Brendan Shanks
93fde56b49
server: On macOS, fake debug registers when running under Rosetta.
...
Based on a patch by Tim Clem <tclem@codeweavers.com>.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54367
2023-02-17 11:18:52 +01:00
Alex Henrie
94d6e616e2
server: Fix buffer overrun in map_view handler.
...
Because of padding at the end of the struct, sizeof(*view) is greater
than offsetof(struct memory_view, name[0]). Change the allocation to
overallocate slightly instead of underallocating slightly.
2023-02-01 17:11:10 +01:00
Eric Pouech
e8c7920919
conhost.exe: Handle ctrl-\ in Wine.
...
Let conhost handle ctrl-\ instead of Unix tty, and pretend it's a
ctrl-pause/break key stroke. This allows CUI application in processed
input mode not to close upon ctrl-\.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54141
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
2023-01-25 10:04:02 +01:00
Eric Pouech
fda954dfd4
conhost.exe: Handle ctrl-pause/break key strokes.
...
Note: this patch should be extended by adding insertion
of the CTRL_BREAK_EVENT into processes' crtl handler
(as it's done for CTRL_C_EVENT).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
2023-01-25 10:04:00 +01:00
Zebediah Figura
03391aab24
server: Inherit the SO_RCVTIMEO value in accept_socket().
2022-12-13 12:47:21 +01:00
Zebediah Figura
418dff0c01
server: Inherit the SO_SNDTIMEO value in accept_socket().
2022-12-13 12:47:21 +01:00
Zebediah Figura
1ef2cc0f64
server: Inherit the SO_RCVBUF value in accept_socket().
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53911
2022-12-13 12:47:21 +01:00
Zebediah Figura
a58cd78ca9
server: Inherit the SO_SNDBUF value in accept_socket().
2022-12-13 12:47:21 +01:00
Zebediah Figura
ddc6c3fb23
server: Inherit address reuse flags in accept_socket().
2022-12-13 12:47:21 +01:00
Rémi Bernon
37478a8695
server: Set missing error status for get_process_image_name.
2022-11-22 18:27:31 +01:00
Sven Baars
fe8b10f8c8
server: Don't return the actual 32-bit Software\Classes key.
2022-11-18 13:55:21 +01:00
Sven Baars
b8d7434e33
server: Recursively obtain the Wow6432Node parent.
2022-11-18 13:55:21 +01:00
Aric Stewart
c937155ff6
server: Take into account extra_size in get_rawinput_buffer.
2022-11-17 21:51:42 +01:00
Rémi Bernon
9804210966
server: Remove no-op raw_msg.foreground release.
...
It's previously set to NULL and never updated.
2022-11-14 13:17:31 +01:00
Paul Gofman
17328f4f5c
ntdll: Support specified alignment in NtAllocateVirtualMemoryEx().
2022-11-11 17:21:18 +01:00
Paul Gofman
7e8bb68f95
ntdll: Support HighestEndingAddress in NtAllocateVirtualMemoryEx().
2022-11-10 22:00:35 +01:00
Jinoh Kang
33617af814
server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children.
...
This partly reverts e42eaaaf3a
.
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
2022-11-04 19:23:56 +01:00
Jinoh Kang
c310e975f4
server: Redraw composited window child when its z-order changes.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53153
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
2022-11-04 19:23:56 +01:00
Jinoh Kang
17e6ef6d7e
server: Correctly expose composited parent window and its child on position change.
...
Skip redrawing the composited child window when the window rect and
visible region stays the same, since we're taking the union of the old
and new visible regions.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53153
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
2022-11-04 19:23:56 +01:00
Paul Gofman
a9ae1e041c
server: Support SO_EXCLUSIVEADDRUSE socket option.
2022-11-04 19:23:55 +01:00
Paul Gofman
003ee6202b
server: Do not translate loopback addr in ipv4addr_from_v6().
2022-11-04 19:23:55 +01:00
Paul Gofman
0328ba93f3
server: Use htonl() with INADDR_ANY in ipv4addr_from_v6().
2022-11-04 19:23:55 +01:00
Paul Gofman
6992f2cba5
server: Set error in check_addr_usage().
2022-11-04 19:23:55 +01:00
Paul Gofman
9163d3420f
server: Use struct bound_addr as a key to bound_addresses_tree.
2022-11-04 19:23:54 +01:00
Paul Gofman
12b604926e
server: Make SO_REUSEADDR and SO_EXCLUSIVEADDRUSE mutually exclusive.
2022-11-04 19:23:54 +01:00
Paul Gofman
d656cb2024
ws2_32: Track SO_EXCLUSIVEADDRUSE option value.
2022-11-04 19:23:54 +01:00
Paul Gofman
ef7de1fc1f
server: Set Unix SO_REUSEADDR on all the TCP sockets.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50955
2022-10-31 20:41:45 +01:00
Paul Gofman
382ec78db3
server: Track SO_REUSEADDR value.
2022-10-31 20:41:45 +01:00
Paul Gofman
039f8b16f6
ntdll: Move SO_REUSEADDR handling to server.
2022-10-31 20:41:45 +01:00
Brendan Shanks
0d21e1cbcf
server: Only require THREAD_SET_LIMITED_INFORMATION access to set thread description.
2022-10-31 12:13:32 +01:00
Michael Stefaniuc
c2d800f1db
server: Use ARRAY_SIZE instead of open coding it.
2022-10-25 10:58:49 +02:00
Daniel Lehman
0a02b6a86a
ntdll: Implement NtCancelSynchronousIoFile.
...
Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
2022-10-17 11:22:41 +02:00
Brendan Shanks
5cf574998e
server: Use correct context struct and thread flavor when setting debug registers on macOS.
2022-09-15 13:47:45 +02:00
Brendan Shanks
774769671c
server: Write to correct context struct when getting debug registers on macOS.
2022-09-15 13:47:45 +02:00
Brendan Shanks
2075a78ed3
server: Report errors on macOS when getting/setting debug registers.
2022-09-15 13:47:45 +02:00
Brendan Shanks
28ec3090fa
server: Remove 32-bit-specific macOS #ifdefs.
2022-09-15 13:47:45 +02:00
Jinoh Kang
a115feab9c
server: Always prefer synchronous I/O in nonblocking mode.
...
foobar2000.exe's UPnP Media Renderer component (foo_out_upnp.dll)
expects that, if a select() call completes successfully with a non-empty
writefds set, any immediately following send() call on a socket in the
writefds set never fails with WSAEWOULDBLOCK.
On Wine, the Winsock select() and send() implementations both call the
Unix poll(2) under the hood to test if I/O is possible on the socket.
As it turns out, it's entirely possible that Linux poll() may yield
POLLOUT on the first call (by select) but *not* the second (by send),
even if no send() call has been made in the meanwhile.
On Linux (as of v5.19), a connected (ESTABLISHED) TCP socket that has
not been shut down indicates (E)POLLOUT only if the ratio of
sk_wmem_queued (the amount of bytes queued in the send buffer) to
sk_sndbuf (the size of send buffer size itself, which can be retrieved
via SO_SNDBUF) is below a certain threshold. Therefore, a falling edge
in POLLOUT can be triggered due to a number of reasons:
1. TCP fragmentation. Once a TCP packet is split out from a larger
sk_buff, it incurs extra bookkeeping overhead (e.g. sk_buff header)
that is counted in sk_wmem_queued alongside application data.
See also: tcp_fragment(), tso_fragment() (Linux 5.19).
2. Control packets (e.g. MTU probing). Such packets share the same
buffer with application-initiated packets, and thus counted in
sk_wmem_queued.
See also: sk_wmem_queued_add() callers (Linux 5.19).
3. Memory pressure. This causes sk_sndbuf to shrink.
See also: sk_stream_moderate_sndbuf() callers (Linux 5.19).
Fix this by always attempting synchronous I/O first if req->force_async
is unset and the nonblocking flag is set.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53486
2022-08-24 09:06:37 -05:00
Jinoh Kang
13fb500cbb
server: Use check_fd_events() instead of calling poll() directly.
2022-08-24 09:06:37 -05:00
Jinoh Kang
78f1dd8967
server: Use POLLIN instead of POLLPRI if the socket is in oobinline mode.
2022-08-24 09:06:37 -05:00
Rémi Bernon
28aa321f36
server: Avoid reallocating rawinput device array with zero size.
...
It actually frees the pointer.
2022-08-08 18:50:54 +02:00
Rémi Bernon
a2395ecf96
server: Use the client provided rawinput registered device array.
2022-07-28 20:08:58 +02:00
Rémi Bernon
1587e9db88
win32u: Implement NtUserGetRegisteredRawInputDevices on the client side.
2022-07-28 20:08:58 +02:00
Zebediah Figura
7961e00e74
server: Properly implement AFD_POLL_RESET.
2022-07-25 09:38:21 +02:00
Zebediah Figura
1d0e21db29
server: Move sock->error setting completely out of sock_dispatch_events().
2022-07-21 20:21:46 +02:00
Zebediah Figura
41cdc6674c
server: Report the socket error in sock_poll_event() on POLLERR or POLLHUP.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52815
2022-07-21 20:21:45 +02:00
Zebediah Figura
a2f2b773fb
server: Record the error for connected and connectionless sockets sockets in sock_error().
...
As long as we do it for connecting and listening sockets, do it here for the
remaining socket types as well.
2022-07-21 20:21:44 +02:00
Zebediah Figura
a1fd99cfbb
server: Clear sock->errors[AFD_POLL_BIT_CONNECT_ERR] in sock_poll_event().
...
Give sock_dispatch_events() a more consistent scope.
2022-07-21 20:21:42 +02:00
Zebediah Figura
236476417a
server: Use sock_poll_event() in poll_socket().
...
In multiple cases errors may be reported only once by the host socket
implementation, but should persist for Windows sockets. These cases are
currently not handled by poll_socket().
poll_socket() also does not include logic for filtering out events when asyncs
are queued or alerted on the relevant socket.
Hence, instead of duplicating more logic, remove the logic already duplicated,
and just call sock_poll_event(), so that there is one central place where events
are translated.
Mark the currently active poll async with a special "pending" field so that
poll_socket() does not attempt to complete it before all sockets are checked.
2022-07-20 22:33:44 +02:00
Zebediah Figura
f234341ca1
server: Always wake up pending read or write asyncs on POLLHUP or POLLERR.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52815
2022-07-20 22:33:44 +02:00
Zebediah Figura
07b66768b1
Revert "server: Explicitly shutdown destroyed sockets to force pending poll() calls to return.".
...
This reverts commit 24b64534e5
.
We no longer perform any blocking waits on the client side, so shutdown() is no
longer necessary.
Moreover, shutting down is not always correct. Under some conditions, closing a
TCP socket should trigger RST without FIN (namely, when SO_LINGER is on but has
a zero timeout). By reverting this commit we match Windows behaviour in this
respect.
2022-07-20 22:33:44 +02:00
Jinoh Kang
9090229e67
server: Use the token owner instead of the token user for default object owner.
...
Also, replace the token user with the token owner for the default DACL
as well. Wine currently selects domain_users_sid as the token owner, so
use that. This is required to pass the advapi32:security test which
expects the security descriptor owner SID to be referenced in the DACL
as well.
2022-07-20 22:33:44 +02:00
Zebediah Figura
8a4433d6a7
server: Do not set connectionless sockets into the CONNECTING or CONNECTED state.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53058
2022-07-19 20:02:15 +02:00
Paul Gofman
0f337f3d8e
ntdll: Fixup ICMP packet id if SOCK_DGRAM fallback is used.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2022-07-18 10:39:41 +02:00
Paul Gofman
1e35966eb5
ntdll: Support SOCK_RAW / IPPROTO_ICMP fallback over SOCK_DGRAM.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2022-07-18 10:39:26 +02:00
Zebediah Figura
869cbc4b4b
server: Set the connection time if connect() returns 0.
2022-07-15 11:31:51 +02:00
Zebediah Figura
ea6f88d83f
server: Do not set the socket state in complete_async_connect().
...
It's already set previously in sock_poll_event(). Moreover, complete_async_connect() will not always be called.
2022-07-15 11:31:50 +02:00
Zebediah Figura
647bed72f5
server: Remove the unused "flags" field from struct sock.
2022-07-15 11:31:48 +02:00
Zebediah Figura
41d16358dc
server: Remove the no longer used sock_queue_async() function.
2022-07-14 10:29:14 +02:00
Alexandre Julliard
bd5edbe1eb
server: Create new keys in the parent of a shared key.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53343
2022-07-13 12:50:07 +02:00
Alexandre Julliard
569c27945e
server: Use standard named object functions for registry keys.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-07 19:10:02 +02:00
Alexandre Julliard
b79ff648ef
server: Implement lookup_name() for registry keys.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-07 19:10:02 +02:00
Alexandre Julliard
6a7a7bbe97
server: Implement link_name() for registry keys.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-07 19:10:02 +02:00
Alexandre Julliard
721cd6e636
server: Move some functions to avoid forward declarations.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-07 19:10:02 +02:00
Alexandre Julliard
5414f648ee
server: Implement unlink_name() for registry keys.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-06 16:02:48 +02:00
Alexandre Julliard
617cc989f0
server: Store the key parent in the standard object name structure.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-06 16:02:48 +02:00
Alexandre Julliard
e3c32904b2
server: Use the standard object name for registry keys.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-06 16:02:48 +02:00
Alexandre Julliard
6bed417bb7
server: Store a pointer to the Wow6432Node subkey.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-06 16:02:48 +02:00
Alexandre Julliard
9c551448cb
server: Prevent infinite symlink recursion in lookup_named_object().
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 14:33:55 +02:00
Alexandre Julliard
248231468d
server: Avoid potential NULL dereference in create_named_object().
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 14:33:33 +02:00
Alexandre Julliard
68a69b51bb
server: Return the standard status code when the key exists in NtCreateKey.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 14:19:00 +02:00
Alexandre Julliard
ec8edb66df
server: Fix access check for NtQueryKey.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 14:08:43 +02:00
Paul Gofman
07d3c82395
server: Allow IOCTL_AFD_POLL for sockets without unix fd.
...
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
2022-07-05 10:00:18 +02:00
Alexandre Julliard
194e09baec
makefiles: Add separate variables for Unix flags and libraries.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-29 23:23:41 +02:00