X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXUser.pm;fp=perl%2FDXUser.pm;h=d7a433261acef9a182b4556a5018ded24dc34c39;hb=8423d02ad83db3cdc9504dc574c3d16d7c6a3092;hp=84b6df3dd721ee99704c0a8867ece5c09dd8235a;hpb=6951e5c6623c813b5f3da77796aa22c7e0848e44;p=spider.git diff --git a/perl/DXUser.pm b/perl/DXUser.pm index 84b6df3d..d7a43326 100644 --- a/perl/DXUser.pm +++ b/perl/DXUser.pm @@ -368,30 +368,37 @@ sub get # is it in the LRU cache? my $ref = $lru->get($call); - return $ref if $ref && ref $ref eq 'DXUser'; + return $ref if $ref && UNIVERSAL::isa($ref, 'DXUser'); # search for it if ($v4) { if ($data = _select($call)) { $ref = bless decode_json($data), 'DXUser'; + unless ($ref) { + dbg("DXUser::get: no reference returned from decode of $call $!"); + return undef; + } } } else { unless ($dbm->get($call, $data)) { $ref = decode($data); + unless ($ref) { + dbg("DXUser::get: no reference returned from decode of $call $!"); + return undef; + } } } if ($ref) { - if (UNIVERSAL::isa($ref, 'DXUser')) { + if (!UNIVERSAL::isa($ref, 'DXUser')) { dbg("DXUser::get: got strange answer from decode of $call". ref $ref. " ignoring"); return undef; } + # we have a reference and it *is* a DXUser - } else { - dbg("DXUser::get: no reference returned from decode of $call $!"); - return undef; + $lru->put($call, $ref); + return $ref; } - $lru->put($call, $ref); return undef; }