Front page | perl.ldap |
Postings from February 2012
Re: How determine if persistent Net::LDAP object is alive?
Thread Previous
|
Thread Next
From:
Larry Lile
Date:
February 23, 2012 00:29
Subject:
Re: How determine if persistent Net::LDAP object is alive?
Message ID:
CAFdB3ffVU1ZteuJTZCrocXmOANS5z9FQVaBUGBOjsTyN=Nbamg@mail.gmail.com
On Wed, Feb 22, 2012 at 6:14 PM, Larry Lile <larry.lile@dreamworks.com>wrote:
>
>
> On Wed, Feb 22, 2012 at 5:22 PM, Nick Urbanik <
> nick.urbanik@optusnet.com.au> wrote:
>
>> Dear Quanah,
>>
>>
>> On 22/02/12 16:56 -0800, Quanah Gibson-Mount wrote:
>>
>>> --On Thursday, February 23, 2012 11:48 AM +1100 Nick Urbanik <
>>> nick.urbanik@optusnet.com.au> wrote:
>>>
>>>> idletimeout 300
>>>>
>>>
>>> This means that you are telling the server to disconnect all persistent
>>> connections after they have been idle for 5 minutes. Given that you seem
>>> to want your persistent connections to persist, this may not be the wisest
>>> of settings.
>>>
>>
>> Okay, so if I change this to 24 hours, then (as I understand it; am I
>> wrong?) there would be a failure every day. How do I verify that the
>> connection still works then?
>
>
>
> I've always just trapped for the disconnect at the operation,
> this is also a convenient place to check for referrals.
>
> # XXX Check for I/O Error on update, reconnect and
> # XXX retry if possible. This could be much more sophisticated.
> $ldap = ldap_open($ldap) and $result = $entry->update($ldap)
> if $result->code == LDAP_OPERATIONS_ERROR and
> $result->error =~ m!I/O Error!i;
>
> ldap_open is the same function I use to open an LDAP server
> normally. When passed an existing LDAP object it will attempt
> to shut it down as cleanly as possible. I haven't tested this code
> in a while, $result->error =~ m!I/O Error!i may not be correct
> since the latest updates to Net::LDAP.
>
>
> sub ldap_open
> {
> my $ldap = shift;
>
> ...
>
> if ($ldap)
> {
> warn "\nConnection to ", $ldap->{net_ldap_host},
> " broken, attempting to reconnect.\n"
> if $opt_v;
>
> # XXX Try to close the socket as best we can.
> close $ldap->{net_ldap_socket};
>
> foreach my $server (split(/\s+/, $ldap_opt{'host'}))
> {
> ($server, my $port) = split(/:/, $server, 2);
> $port = $ldap_opt{'port'} if ! $port;
> last if lc $server eq lc $ldap->{net_ldap_host};
> push @servers, shift @servers;
> }
> }
>
> The remainder of the code builds a connection to the LDAP server as usual
> returning it's object to the c
Pardon the interruption there. =)
The remainder of the code builds a connection to the LDAP server as usual
returning it's object to the caller.
--
Larry
Hi Mom! [Just in case my e-mail ever ends up in the Wall Street Journal
Thread Previous
|
Thread Next