Hallo zusammen, ich habe hier eine Client Applikation (Linux, in C/C++) entwickelt welche eine Authentifizierung auf einem LDAP Server macht. Die Authentifizierung an sich läuft problemlos, was mir Probleme verursacht ist wenn keine Verbindung mit dem Server besteht (z.b. weil das Netzwerkkabel nicht angeschlossen ist). ldap_init(..) funktioniert dann nämlich trotzdem, aber eine Abfrage zB. über ldap_search_ext_s oder ldap_bind_s(..) dauert ewig lange bevor sie in ein Timeout läuft (Die Timeouts setzen bringt hier irgendwie gar nix). Meine Frage: Kann man irgendwie schnell feststellen ob eine Verbindung zum LDAP-Server besteht? Bei Bedarf kann ich morgen auch Code posten. Danke, Matthias
>Kann man irgendwie schnell feststellen ob eine Verbindung zum >LDAP-Server besteht? ping ... >ldap_init(..) funktioniert dann nämlich trotzdem, aber eine Abfrage zB. Ja, steht ja auch so in der LDAP-Beschreibung so drin: http://www.openldap.org/software//man.cgi?query=ldap_init&sektion=3&apropos=0&manpath=OpenLDAP+2.4-Release ldap_open() opens a connection to an LDAP server and allocates an LDAP structure which is used to identify the connection and to maintain per- connection information. ldap_init() allocates an LDAP structure but does not open an initial connection. Da gibt's paar Timeouts - vielleicht ist ja das richtige dabei: http://www.openldap.org/software//man.cgi?query=ldap_set_option&sektion=3&apropos=0&manpath=OpenLDAP+2.4-Release
Erstmal mit 2x Ping (ICMP Echo + ICMP Reply) testen ob IP erreichbar ist. (2x wegen ARP.) Dann einfach einen zero-connect auf den Port machen. Wenn der misslingt kannst Du das ldap-init auch lassen.
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag #5027919: > Erstmal mit 2x Ping (ICMP Echo + ICMP Reply) testen ob IP > erreichbar ist. (2x wegen ARP.) nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht sinnvoll ping an irgendwelche Server zu senden.
Jens hat oben schon drauf gestupst:
1 | LDAP_OPT_CONNECT_ASYNC |
2 | Sets/gets the status of the asynchronous connect flag. invalue |
3 | should either be LDAP_OPT_OFF or LDAP_OPT_ON; outvalue must be |
4 | int *. When set, the library will call connect(2) and return, |
5 | without waiting for response. This leaves the handle in a |
6 | connecting state. Subsequent calls to library routines will |
7 | poll for completion of the connect before performing further |
8 | operations. As a consequence, library calls that need to |
9 | establish a connection with a DSA do not block even for the |
10 | network timeout (option LDAP_OPT_NETWORK_TIMEOUT). This option |
11 | is OpenLDAP specific. |
Vielen Dank für Eure Unterstützung! werde das ausprobieren und dann Rückmelden.
Hallo zusammen, habe mich jetzt dazu entschieden bei jeder Authentifizierung die Verbindung zum LDAP-Server mittels ldap_initialize() neu aufzubauen und danach wieder zu beenden. Dies brachte für mich das zufriedenstellendste Ergebnis Matthias
> nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht > sinnvoll ping an irgendwelche Server zu senden. Das ist mir herzlich egal. ICMP ist der Teil von IP, der zur Diagnose und Kontrolle des IP-Stacks implementiert ist. Wer den ohne Not einfach ausschaltet ist ziemlich hirntot.
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag #5034686: > nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht > sinnvoll ping an irgendwelche Server zu senden. > > Das ist mir herzlich egal. > > ICMP ist der Teil von IP, der zur Diagnose und Kontrolle des > IP-Stacks implementiert ist. > Wer den ohne Not einfach ausschaltet ist ziemlich hirntot. Warum, ein Ping ist ein Angriffsvektor mehr...
> ...und nein, es ist nur ein Protokoll!
Eigentlich stand hier mal was.
Aber es ist mir zu doof auf so duemmliches Gekwake zu antworten.
50c schrieb: >> ICMP ist der Teil von IP > > ...und nein, es ist nur ein Protokoll! ICMP ist ein obligatorischer Teil der TCP/IP Protokollfamilie. Implementierung ist Pflicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.