diff --git a/HttpServer/Events/OnClose.php b/HttpServer/Events/OnClose.php index 22e65d5a..9c8e7db4 100644 --- a/HttpServer/Events/OnClose.php +++ b/HttpServer/Events/OnClose.php @@ -32,8 +32,14 @@ class OnClose extends Callback */ public function onHandler(Server $server, int $fd) { - $this->execute($server, $fd); - fire(Event::SYSTEM_RESOURCE_RELEASES); + try { + $this->execute($server, $fd); + } catch (\Throwable $exception) { + $this->addError($exception); + } finally { + fire(Event::SYSTEM_RESOURCE_RELEASES); + logger()->insert(); + } } @@ -45,18 +51,11 @@ class OnClose extends Callback */ private function execute(Server $server, int $fd): void { - try { - if (!$this->isWebsocket($server, $fd)) { - $client = $server->getClientInfo($fd); - fire($this->name($client['server_port']), [$server, $fd]); - } else { - $this->loadNode($server, $fd); - } - } catch (\Throwable $exception) { - $this->addError($exception); - } finally { - fire(Event::SYSTEM_RESOURCE_RELEASES); - logger()->insert(); + if (!$this->isWebsocket($server, $fd)) { + $client = $server->getClientInfo($fd); + fire($this->name($client['server_port']), [$server, $fd]); + } else { + $this->loadNode($server, $fd); } } diff --git a/HttpServer/Events/OnConnect.php b/HttpServer/Events/OnConnect.php index 98239f9e..8cd63032 100644 --- a/HttpServer/Events/OnConnect.php +++ b/HttpServer/Events/OnConnect.php @@ -30,9 +30,13 @@ class OnConnect extends Callback $clientInfo = $server->getClientInfo($fd); - $name = 'listen ' . $clientInfo['server_port'] . ' ' . Event::RECEIVE_CONNECTION; + try { + $name = 'listen ' . $clientInfo['server_port'] . ' ' . Event::RECEIVE_CONNECTION; - $event->trigger($name, [$server, $fd, $reactorId]); + $event->trigger($name, [$server, $fd, $reactorId]); + } catch (\Throwable $throwable) { + $this->addError($throwable, 'connect'); + } fire(Event::SYSTEM_RESOURCE_RELEASES); logger()->insert(); diff --git a/HttpServer/Events/OnPacket.php b/HttpServer/Events/OnPacket.php index c5f8117a..3fee2f95 100644 --- a/HttpServer/Events/OnPacket.php +++ b/HttpServer/Events/OnPacket.php @@ -50,6 +50,8 @@ class OnPacket extends Callback return $server->sendto($host, $port, $dispatch); } catch (\Throwable $exception) { + $this->addError($exception, 'packet'); + $response = Json::encode(['state' => 500, 'message' => $exception->getMessage()]); return $server->sendto($clientInfo['address'], $clientInfo['port'], $response); diff --git a/HttpServer/Events/OnReceive.php b/HttpServer/Events/OnReceive.php index 4a37a572..7ace506b 100644 --- a/HttpServer/Events/OnReceive.php +++ b/HttpServer/Events/OnReceive.php @@ -48,6 +48,8 @@ class OnReceive extends Callback return $server->send($fd, $dispatch); } catch (\Throwable $exception) { + $this->addError($exception, 'receive'); + return $server->send($fd, Json::encode(['state' => 500, 'message' => $exception->getMessage()])); } finally { $event = Snowflake::app()->getEvent(); diff --git a/System/Abstracts/Pool.php b/System/Abstracts/Pool.php index 555b8a65..31ae59fd 100644 --- a/System/Abstracts/Pool.php +++ b/System/Abstracts/Pool.php @@ -288,7 +288,6 @@ abstract class Pool extends Component $this->pop($channel, $name, 0); if ($this->creates > -1) { Timer::clear($this->creates); - $this->debug('clean timer.'); } $this->_items[$name] = null; }