postfix + libinet6

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Czw, 23 Sie 2001, 15:17:52 CEST


On Thu, Aug 23, 2001 at 01:03:20PM +0200, Jakub Bogusz wrote:
> On Thu, Aug 23, 2001 at 10:36:27AM +0200, Jakub Bogusz wrote:

hm... zaczynam ze sobą rozmawiać.

> > On Wed, Aug 22, 2001 at 11:49:01PM +0200, Arkadiusz Miskiewicz wrote:
> > > > ...powoduje fatal error "config variable inet_interfaces: host not found: ::".
> > > > 
> > > > Prób tworzenia socketa tutaj nie ma.
> > > > Może w przypadku powodzenia getnameinfo() a niepowodzenia
> > > > inet_addr_host() też robić continue? Tylko czy to nie popsuje wykrywania
> > > > niektórych błędów konfiguracji?
> > > Nie. Nic nie rób. Jeśli ktoś wpisze sobie adres IPv6 do
> > > inet_interfaces, a nie ma supportu w kernelu to jest tylko i wyłącznie
> > > jego problem.
> > 
> > To znaczy nic nie robić, czy zamienić msg_fatal na continue?
> > Bo "all" to nie jest adres tylko IPv6, a przy tym właśnie ten fatal
> > jest wywoływany.
> 
> Dodam jeszcze, że sama zamiana na continue nie wystarczy.
> Wtedy przez tamten fragment przechodzi, ale wywala się dalej
> prawie tak samo, jak przy "inet_interfaces = all" ze skonfigurowanym
> IPv6: najpierw binduje 0.0.0.0:25, potem próbuje 127.0.0.1:25, dostaje
> EADDRINUSE i uznaje to za fatal error.

To już mniej więcej namierzyłem - oryginalnie wildcardy były
rozpoznawane po wpisanym 0 zamiast adresów; w patchu IPv6 jest
dodawana lista adresów przez funkcję wildcard_inet_addr_init().
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.

> > 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.

No i jak te dwie rzeczy poprawić?


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



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