postfix + libinet6
Jakub Bogusz
qboosh w prioris.mini.pw.edu.pl
Pią, 24 Sie 2001, 09:53:23 CEST
On Thu, Aug 23, 2001 at 07:47:26PM +0200, Arkadiusz Miskiewicz wrote:
> Jakub Bogusz <qboosh w prioris.mini.pw.edu.pl> writes:
> > Problem w tym, że funkcja ta dodaje zarówno 0.0.0.0 jak
> > i 127.0.0.1 (w przypadku braku v6 w jajku) lub :: jak i 0.0.0.0
> > (a może i jeszcze 127.0.0.1) (w przypadku obecności v6);
> > potem przy bindowaniu lista adresów != 0 i wtedy usiłuje podbindować
> > wszystkie adresy z listy jednocześnie.
> Cóż. Takie to są kwiatki... jakoś to musisz rozwiązać :)
Ale dlaczego ja? Ja nie wrzuciłem postfiksa z zepsutym patchem v6 na
ftp ;>
Jakieś propozycje?
Właściwie do czego jest potrzebne wildcard_inet_addr_init()?
Czy są sytuacje, kiedy nie wystarczy jeden "wildcard" (czyli "::"
w przypadku działającego IPv6 lub "0.0.0.0" w przypadku braku v6)?
A jeżeli jednak funkcja jest potrzebna - to jak najprościej wykryć
który adres zawiera się w innym?
W praktyce zauważyłem, że getaddrinfo() zwraca adresy w kolejności
::, 0.0.0.0, 127.0.0.1 - ale czy można tak zakładać?
Jeżeli tak, to można traktować EADDRINUSE w przypadku >=2. bindowania
jako non-fatal.
> > > > Przy "localhost" z kolei wywala się w innym miejscu:
> > > > fatal: parameter inet_interfaces: no local interface found for localhost
> > >
> > > A to bez zmian po tej jednej poprawce.
> >
> > A tutaj inet_addr_host() poprzez getaddrinfo("localhost",...)
> > dodaje do listy adresów także jeden z... AF_UNIX.
> > A inet_addr_local() już takiego nie zwraca i stąd ten komunikat.
> W funkcji która dodaje adresy (inet_addr_host()?) trzeba by wrzucić
> olewanie adresów o af != AF_INET && af != AF_INET6 (tzn. continue
> wtedy).
W inet_addr_host() łatwo to dorobić. Po tym "localhost" już działa.
--
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl