WSL 2 ignorowana flaga MSG_OOB w funkcji "send"

1

Witam,
Piszę w C swój serwer rlogin na podstawie tego dokumentu: https://datatracker.ietf.org/doc/html/rfc1282 i zauważyłem, dziwne (moim zdaniem) zachowanie skompilowanego programu chodzącego pod "Ubuntu 20.04 on Windows" w WSL 2. Mianowicie, na normalnym Linuxie na osobnym komputerze wszystko jest ok, czyli klient rlogin (klienta sam nie piszę, pobrałem już gotowca) normalnie się podłącza i na wysłane żądanie serwera (opis w sekcji "From Server to Client" w rfc1282):

send(sockfd, "\200", 1, MSG_OOB);

odsyła w odpowiednim formacie rozmiar ekranu konsoli. Natomiast dokładnie ten sam kod programu serwera skompilowany i uruchomiony w WSL 2 nie działa, bo klient na to żądanie nie odsyła rozmiaru konsoli. Wg mnie wygląda na to, że ta flaga - MSG_OOB w funkcji send jest ignorowana. Czy też się spotkaliście z tym problemem?

2

Akurat Microsoftowi wielokrotnie zarzucano stosowanie strategii "embrace, extend, and exterminate": https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish#Examples_by_Microsoft

Nie inaczej było w przypadku WSL, w którego pierwszej wersji Microsoft wykorzystał mocno zmodyfikowane jądro Linux.

WSL2 to już "prawdziwe" jądro Linux uruchomione z wykorzystaniem wirtualizacji, jednak nie ufałbym do końca WSL. Z własnego doświadczenia wiem, że sieć może tam nie do końca prawidłowo działać.

edit: jeśli chcesz pracować na maszynie z Windows, to lepszym rozwiązaniem (jeśli chodzi o sieci) będzie zainstalowanie "normalnej" dystrybucji na maszynie wirtualnej Hyper-V

1

Ale chodzi Ci o to że ta funkcja ma różną sygnaturę na różnych jądrach?

1 użytkowników online, w tym zalogowanych: 0, gości: 1