From 3a917c1b03cbd920174bbd0d8cbf0a478341c1e3 Mon Sep 17 00:00:00 2001 From: Marijn Ophorst Date: Tue, 13 May 2014 08:57:56 +0200 Subject: [PATCH] wrap this in an isset check, callbacks is sometimes missing (prolly due to expired sessions?) --- src/DNode/Session.php | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/DNode/Session.php b/src/DNode/Session.php index e8ed636..2ea08c7 100644 --- a/src/DNode/Session.php +++ b/src/DNode/Session.php @@ -163,21 +163,23 @@ private function scrub($obj) private function unscrub($msg) { $args = $msg->arguments; $session = $this; - foreach ($msg->callbacks as $id => $path) { - if (!isset($this->wrapped[$id])) { - $this->wrapped[$id] = function() use ($session, $id) { - $session->request((int) $id, func_get_args()); - }; - } - $location =& $args; - foreach ($path as $part) { - if (is_array($location)) { - $location =& $location[$part]; - continue; + if (isset($msg->callbacks)) { + foreach ($msg->callbacks as $id => $path) { + if (!isset($this->wrapped[$id])) { + $this->wrapped[$id] = function() use ($session, $id) { + $session->request((int) $id, func_get_args()); + }; + } + $location =& $args; + foreach ($path as $part) { + if (is_array($location)) { + $location =& $location[$part]; + continue; + } + $location =& $location->$part; } - $location =& $location->$part; + $location = $this->wrapped[$id]; } - $location = $this->wrapped[$id]; } return $args; }