On Thu, 18 Jun 2009 15:08:31 +0200 Florian Lohoff <[email protected]> wrote:
> (...)
> Das ganze scheint daran zu liegen das ein "connect" auf einem socket
> nicht zurueckkehrt weil eben der versucht die gegenstelle zu erreichen.
> Man kann das schoen mit "ping" nachstellen ...
>
> hydra:~# ping 4.4.4.4
> PING 4.4.4.4 (4.4.4.4) 56(84) bytes of data.
> ^C
> --- 4.4.4.4 ping statistics ---
> 2 packets transmitted, 0 received, 100% packet loss, time 1013ms
>
> Ist eine nicht erreichbare/nicht existente adresse - Die adresse zu hause:
>
> hydra:~# ping 193.189.251.193
> ^C
>
> D.h. nicht mal der header wird ausgegeben. Strace:
>
> socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
> connect(4, {sa_family=AF_INET, sin_port=htons(1025),
> sin_addr=inet_addr("193.189.251.193")}, 16^C <unfinished ...>
>
> Und es blockt bis in alle ewigkeiten - das scheint der bind gar nicht zu
> moegen.
>
> Hat jemand da eine loesung fuer?
Du könntest die Stelle im Source suchen und so modifizieren, daß der
Socket non-blocking ist. connect() sollte in dem Fall EINPROGRESS zurück
liefern wenn er nicht gleich eine Antwort bekommt. Laut man-page kannst
du dann mit select() auf den Socket losgehen, dem man ja bekanntlich
einen Timeout mitgeben kann. Wenn der Socket dann nach n Sekunden nicht
signalisiert wird, weg damit und Fehler zurückgeben, in der Hoffnung,
daß der named damit umgehen kann ;-)
Gruß, Andre
--
Andre Landwehr, Ricklinger Stadtweg 42, D-30459 Hannover
Phone: +49-(0)511-1054932, Mobile: +49-(0)175-4648375
signature.asc
Description: PGP signature
-- Linux mailing list [email protected] subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo
