--
v3: ntdll: Combine the "if (alerted)" blocks in sock_transmit().
ntdll: Fill the IOSB in sock_transmit() only inside the "if (alerted)" block.
ntdll: Combine the "if (alerted)" blocks in sock_send().
ntdll: Fill the IOSB in sock_send() only inside the "if (alerted)" block.
ntdll: Combine the "if (alerted)" blocks in sock_recv().
ntdll: Fill the IOSB in sock_recv() only inside the "if (alerted)" block.
ntdll: The async handle passed to set_async_direct_result() cannot be NULL.
ws2_32/tests: Add more tests for iosb contents while a recv is pending.
https://gitlab.winehq.org/wine/wine/-/merge_requests/871
@julliard, did you intend merge this despite the failing conformance tests (see thread above from Marvin)?
I still think the fix is "correct", i.e. this *should* workand windows is just buggy too - but the conformance tests certainly showed my fix is not really justified (since this doesn't work on windows either) and our use that led me to make this change was just getting lucky in a weird way and needs to be changed.
I hadn't just closed it because I was going to eventually salvage the tests into a fix for the memleak they revealed. But I wasn't expecting you'd to accept it after Marvin shot me down...
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/897#note_9337
On Mon Sep 26 19:51:22 2022 +0000, **** wrote:
> Zebediah Figura replied on the mailing list:
> ```
> Hello Joel,
> I haven't looked at these patches in detail, largely because there's
> still outstanding test failures, but I do have one high-level comment,
> which is that I'd recommend starting with the basic implementation (i.e.
> just the first four patches), and leave the rest for separate merge
> requests. Since merge requests can only be applied as a whole I think it
> makes sense to narrow this down to a more minimal set, and try to get
> one thing done at a time.
> ```
Hi Zebediah - thanks for taking a look.
I don't mind narrowinging the commit series down.
This patch set is mainly trying to get these attribute flags working:
* `FILE_ATTRIBUTE_HIDDEN`
* `FILE_ATTRIBUTE_SYSTEM`
* `FILE_ATTRIBUTE_READONLY` (to a lesser extent - because this is already quite well represented by UNIX access permissions)
The trouble is that while we want to seamlessly integrate with the underlying filesystems, the availability of different methods varies between operating systems and filesystems. This version of the patch set offers three strategies, and I found a two more possible methods that should be added today ([1](https://man7.org/linux/man-pages/man2/ioctl_iflags.2.html) [2](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/… ).
The code attempts to store the flags by all available methods at once for a given file, and ORs the flags together from any available source, in the hopes we can deliver the most complete coverage to the user.
However, because there is no fallback method, it is currenly not possible to guaruantee that the attributes will always be stored and retrieved correctly in all scenaries.
If we only include the first four patches, the patch set will only support storage in Samba-formatted Extended File Attributes. If we unmark the associated test cases as `todo_wine`, the test will break on certain operating systems or certain mount flag choices. There is no support for Extended Attributes on FreeBSD or NetBSD, for example, and the MacOS Extended Atrribute APIs differ from the Linux ones.
One approach is to fall back to using a `.dosattributes` directory when no other storage method is available, and store the attributes in files inside there. However, I didn't want to implement this functionality before having a conversation with the Wine project developers.
I have been in conversation with @ehoover in the last couple of days concerning his work on Junction Points, which is a related topic to DOS attributes, and also causes issues for Msys2 in its own right. His strategy is to store the required metadata in a [`.REPARSE_POINT` hidden directory](https://github.com/wine-staging/wine-staging/blob/master/patches….
There is also the storage of [NT extended-attribute (EA)](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/n…) values to consider, when we move toward a non-stub implementation of this feature.
Perhaps it would be preferable to produce a design that can be encompass all these issues.
Do we need to resolve this design question here and now? Or can we just proceed with Linux-only Extended Attributes in the short term?
I think it would be good if we could get some feedback from the project maintainers on these questions. Do you have any thoughts?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/924#note_9292