mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 02:51:10 +00:00
* fix: the proot fast path finds unix sockets whose host path is longer than sun_path When a socket's host path did not fit sun_path, bind() went to proot, which bound it to a short temporary name the fast path cannot see. The fast path's own connect, stat and unlink then answered ENOENT, so FEXServer's socket under compatdata/<app>/fex-emu/Server could never be reached (#839, #579). Name such a socket through its directory (/proc/self/fd/N/<name>) instead, so it lives at its real host path for every process, and report the guest path back from getsockname, getpeername and accept. equiv3.py's long-path section binds, connects, stats, names and unlinks a socket there. * fix: key long socket names per socket and reset their lock after fork Review follow-up. A long name is now looked up by the socket's inode and the name, separately for its own and its peer's address, so two sockets with the same file name in different directories no longer mix up; a missing entry is left as the kernel reports it. The lock is re-initialised in the child after fork, and the copies use snprintf. equiv3.py binds a second socket with the same name in a sibling directory and checks both names.