[PATCH 0/1] Recognizing native Windows AF_UNIX sockets

Ken Brown kbrown@cornell.edu
Sat Jan 30 20:58:30 GMT 2021


On 1/30/2021 11:34 AM, Ken Brown via Cygwin-patches wrote:
> This patch attempts to fix the problem reported here:
> 
>    https://cygwin.com/pipermail/cygwin/2020-September/246362.html
> 
> See also the followup here:
> 
>    https://cygwin.com/pipermail/cygwin/2021-January/247666.html
> 
> The problem, briefly, is that on certain recent versions of Windows
> 10, including 2004 but not 1909, native Windows AF_UNIX sockets are
> represented by reparse points that Cygwin doesn't recognize.  As a
> result, tools like 'ls' and 'rm' don't work.
> 
> I will get access to a machine running 2004 so I can test my patch,
> but I'm posting it now in case someone else wants to test it before I
> can.  To test it, compile and run the program native_unix_socket.c
> appended below, and then try to remove the file foo.sock that it
> creates.  This should fail on W10 2004 without my patch, but it should
> succeed like this with the patch:

I've just tested on W10 20H2.  In Cygwin 3.1.7 I see the problem:

$ ./native_unix_socket.exe
getsockname works
fam = 1, len = 11
offsetof clen = 9
strlen = 8
name = foo.sock

$ ls -l foo.sock
-rw-r----- 1 Unknown+User Unknown+Group 0 2021-01-30 15:51 foo.sock

$ rm foo.sock
rm: remove write-protected regular empty file 'foo.sock'? y
rm: cannot remove 'foo.sock': Permission denied

After I apply the patch, all is well:

$ ./native_unix_socket.exe
getsockname works
fam = 1, len = 11
offsetof clen = 9
strlen = 8
name = foo.sock

$ ls -l foo.sock
-rwxr-xr-x 1 kbrown None 0 2021-01-30 15:52 foo.sock*

$ rm foo.sock

$ ls -l foo.sock
ls: cannot access 'foo.sock': No such file or directory

Ken


More information about the Cygwin-patches mailing list