gXbfB#) ۻbis_IIߪ ۻbis_IIߪ ۻbis_IIߪ ۻbis_II4&D.5;Aϳކ:}Wۻp%7ޔ_#5L@?ss\,fa\eChɛ+MMX,-\_[6Eq_uC^avh ->]+/Wg׿>|"d2D^1=]mwgFN5K]OElf5F \wgFN5K]OwgFN5K]OwgFN5K]O[_׮|S 6 iS&XVŰįwgFN5K]OwgFN5K]OwgFN5K]O!d.~}p>s=~ |LYtY.3݌?"3ylG]B wgFN5K]OQ+RŞԲ&M.x ۻbis_IIߪ ۻbis_IIߪ ۻbis_II߄}BkH1<,CmFHQ3ҹ]f )&0!LwgFN5K]Oyr30eE9VCdt{g6}D #F _PRMwgFN5K]OT y/5Oڪ ۻbis_IIߪ ۻbis_IIߪ ۻbis_II=o@h7p̢V)"fQ{;NɌzQ;B^噐egxr`Fsos˷gF|"gsGl{ݭs2uZS"=H mYb3MP`Fx;2}Bb&@%7>6X&"N§ X,ue{xqqy iԣ͐=dBz8i{B al"Pgxaja|V.嵋pF W%)nº4yH=?3)ϗ|d*:K)RYET1LCßnY SHhD:yQn&o>ޯ%|UԄGwݹNxkʏ{ @np/@t 5dW;m>j FC I|RDTf hM[%|YΓgx8ҭK}Xo![t[NZ6'[+\XW\h؂/t'0-|#:BJcrwgFN5K]O 6tA$M]\}N<1FZ =0M GJ %A`]AThwЋdXn?gB0- 'inKzçOB"xQ~)D0F8ΦZGF Qp+d{䟦~iBb|cCH^aӧK\֝xѥ/XK^l\[WL<^#UX[QkdWа^ߞVcF+̤+ PF|HjT-*Ybng(8SAUrڹhu .`@-d7)c|(qsG ӸԆ[JG +1n$vmq E\J=A/1*LabJO|_2 #K)Q5қ,4m ?đ{lS"GK ]Yv-kľzY(G 2 *,@Zz\.ZY.986%S0*2,"{ƿVZ0puxS)´K\z!s$vUeτe)2SD E/i;O)v Ae,CnF&nAb,I)`Mc'7ؚga345R< ]@`:2 A\se-iF;bspʬW'8`H^"dd@uA&n(9QЭmfq!:*f/Tg$ryݢD) ?eoH i=a|e(rƚd;rݜ\" }[j>o)=͝P۝[!?MJ 'հB_U;R;dv1i~xAϗfOb^͠Łt&hkꚝ^rXu%ި1ܛsg="9DZ?.^sZg1c󭉬 QuJly#}{7v{"xB?, 2G84iÈ}:[D~GG'5wEwgFN5K]Ox-VHyG/ ܎1EW4*`cDYyl>f ?{_5::ԐzkԽ.S/s$vUeτe)2SD lPYOo .s 0&+vDw 3ɓ 2hUX[Qkr"!8 ]e0,*:Ih%X͔}iatϜ_]U;ߔD[`ّu@)2?㩻Kʻb,k.s9M;C oW Nw3R$(eƴݝp EXQWo)c]AˊMذ|+4;+!q4eĐLT#Fce˔Om43[7UBpbHe;z^ 8"IG{)F "RQ_Y(C=3SRoÓg[R\j^rSVӬ%Amͣ!ߕsz{[\uo_lxٸl=赹WN<1FZ =sd_;r85 dchanged > $this->lifetime / 3) { $data = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $newvars]); $result = false; try { $result = $this->redis->setex($key, $this->lifetime + 60, $data); } catch (Exception $e) { rcube::raise_error($e, true, true); } if ($this->debug) { $this->debug('set', $key, $data, $result); } return $result; } return true; } /** * Write data to redis store * * @param string $key Session identifier * @param array $vars Session data * * @return bool True on success, False on failure */ public function write($key, $vars) { if ($this->ignore_write) { return true; } $result = false; $data = null; try { $data = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $vars]); $result = $this->redis->setex($key, $this->lifetime + 60, $data); } catch (Exception $e) { rcube::raise_error($e, true, true); } if ($this->debug) { $this->debug('set', $key, $data, $result); } return $result; } /** * Write memcache debug info to the log * * @param string $type Operation type * @param string $key Session identifier * @param string $data Data to log * @param bool $result Operation result */ protected function debug($type, $key, $data = null, $result = null) { $line = strtoupper($type) . ' ' . $key; if ($data !== null) { $line .= ' ' . $data; } rcube::debug('redis', $line, $result); } }