LPRng i ulimit -p unlimited

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Wto, 30 Paź 2001, 21:38:21 CET


Po dodaniu ulimit -p unlimited w daemon() przestało mi działać lpd
- gniazdko tworzy, ale żaden proces nie czyta z niego danych.

Doszedłem do tego, że lpd sprawdza RLIMIT_NPROC i na podstawie tego
wylicza ile maksymalnie serwerów może obsługiwać połączenia: jest to
limit_procesów/2, ograniczone przez opcję max_servers_active z lpd.conf.

Ponieważ limit jest zapisywany do zmiennej int, RLIM_INFINITY jest
traktowany jako -1, co po podzieleniu przez 2 daje 0 aktywnych serwerów.

Brzydki workaround to zmienić int na unsigned int (zmienna n w funkcji
Get_max_servers(), plik src/common/utilities.c) - wtedy nieskończony
limit będzie oznaczał 0x7FFFFFFF procesów - ale to zły pomysł, chyba
żeby do domyślnego lpd.conf dorzucić jakieś sensowne max_servers_active
(default jest 0, czyli bez ograniczeń).


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl