]> Untitled Git - dev/commitdiff
Исправлен баг в результате котогоро AsyncAGI могло зависнуть в случае если на канале...
authorsleepy <sleepy@vvsu.ru>
Tue, 8 Sep 2020 05:24:59 +0000 (15:24 +1000)
committersleepy <sleepy@vvsu.ru>
Tue, 8 Sep 2020 05:24:59 +0000 (15:24 +1000)
astapilib/baseagi.php

index da7fbc51236372c1b5174b7afaae65bcea5276b6..732705f93c98fa34ed26602b50fef9d28056c2e1 100644 (file)
@@ -54,6 +54,10 @@ trait callioAGI
            $line = array_shift($this->RxBuffer);\r
            if ($line === NULL)\r
            {\r
+               if (!$this->IsAlive())\r
+               {\r
+                   return '';\r
+               }\r
                usleep(250000);\r
            }\r
            else\r
@@ -66,8 +70,19 @@ trait callioAGI
 \r
     protected function TxData($cmd)\r
     {\r
-       $this->AmiInstance->SendAsyncAGICmd($this->GetRequest('agi_channel'), $cmd);\r
-       return TRUE;\r
+       if (!$this->IsAlive())\r
+       {\r
+           return FALSE;\r
+       }\r
+       $result = $this->AmiInstance->SendAsyncAGICmd($this->GetRequest('agi_channel'), $cmd);\r
+       if ($result)\r
+       {\r
+           return TRUE;\r
+       }\r
+       else\r
+       {\r
+           return FALSE;\r
+       }\r
     }\r
 }\r
 \r
@@ -119,12 +134,11 @@ trait baseAGI
     //обработка комманды\r
     protected function ProcessCmd($cmd)\r
     {\r
-       if (!$this->IsAlive())\r
+       if ($this->TxData($cmd) === FALSE)\r
        {\r
+           $this->last_response = FALSE;\r
            return FALSE;\r
        }\r
-\r
-       $this->TxData($cmd);\r
        $line = $this->RxData();\r
        $parse_result = preg_match('/(\d+)(?:.)(.*)/', $line, $parsed_line);\r
        if ($parse_result === 1)\r