diff --git a/composer.json b/composer.json index a5cbcab6..4b6709a3 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "ext-fileinfo": "*", "amphp/amp": "^2.0", "amphp/websocket-client": "dev-master as 1.0.0-rc2", - "amphp/http-client": "^4", + "amphp/http-client": "dev-master as 4", "amphp/socket": "^1", "amphp/dns": "^1", "amphp/file": "^1", diff --git a/docs b/docs index 67daced5..4ed3a844 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 67daced51adb23487f77f5526a4ae9e0dbc841b5 +Subproject commit 4ed3a8447cf21c69322bcdaf149eb3ce0befe8c0 diff --git a/src/danog/MadelineProto/MTProtoSession/AckHandler.php b/src/danog/MadelineProto/MTProtoSession/AckHandler.php index 41ff52a9..170f5ac1 100644 --- a/src/danog/MadelineProto/MTProtoSession/AckHandler.php +++ b/src/danog/MadelineProto/MTProtoSession/AckHandler.php @@ -46,6 +46,10 @@ trait AckHandler public function gotResponseForOutgoingMessageId($message_id): bool { // The server acknowledges that it received my message + if (isset($this->new_outgoing[$message_id])) { + unset($this->new_outgoing[$message_id]); + } + if (!isset($this->outgoing_messages[$message_id])) { $this->logger->logger("WARNING: Couldn't find message id ".$message_id.' in the array of outgoing messages. Maybe try to increase its size?', \danog\MadelineProto\Logger::WARNING); @@ -57,9 +61,6 @@ trait AckHandler if (isset($this->outgoing_messages[$message_id]['serialized_body'])) { unset($this->outgoing_messages[$message_id]['serialized_body']); } - if (isset($this->new_outgoing[$message_id])) { - unset($this->new_outgoing[$message_id]); - } return true; } diff --git a/src/danog/MadelineProto/MTProtoSession/ResponseHandler.php b/src/danog/MadelineProto/MTProtoSession/ResponseHandler.php index 764bf072..b75c4fa7 100644 --- a/src/danog/MadelineProto/MTProtoSession/ResponseHandler.php +++ b/src/danog/MadelineProto/MTProtoSession/ResponseHandler.php @@ -398,7 +398,7 @@ trait ResponseHandler } $this->gotResponseForOutgoingMessageId($request_id); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); return; case 303: @@ -445,7 +445,7 @@ trait ResponseHandler \danog\MadelineProto\Tools::callFork((function () use (&$request, &$response) { yield $this->API->initAuthorization(); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); })()); return; @@ -457,7 +457,7 @@ trait ResponseHandler \danog\MadelineProto\Tools::callFork((function () use (&$request, &$response) { yield $this->API->initAuthorization(); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); })()); return; @@ -490,7 +490,7 @@ trait ResponseHandler \danog\MadelineProto\Tools::callFork((function () use (&$request, &$response) { yield $this->API->initAuthorization(); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); })()); return; @@ -515,7 +515,7 @@ trait ResponseHandler } $this->gotResponseForOutgoingMessageId($request_id); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); return; case 420: @@ -534,7 +534,7 @@ trait ResponseHandler default: $this->gotResponseForOutgoingMessageId($request_id); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException($response['error_message'], $response['error_code'], $request['_'] ?? '')); return; } @@ -567,7 +567,7 @@ trait ResponseHandler return; } $this->gotResponseForOutgoingMessageId($request_id); - $this->handleReject($request, new \danog\MadelineProto\RPCErrorException('Received bad_msg_notification: '.MTProto::BAD_MSG_ERROR_CODES[$response['error_code']], $response['error_code'], isset($request['_']) ? $request['_'] : '')); + $this->handleReject($request, new \danog\MadelineProto\RPCErrorException('Received bad_msg_notification: '.MTProto::BAD_MSG_ERROR_CODES[$response['error_code']], $response['error_code'], $request['_'] ?? '')); return; } @@ -578,6 +578,7 @@ trait ResponseHandler } if (!isset($request['promise'])) { + $this->gotResponseForOutgoingMessageId($request_id); $this->logger->logger('Response: already got response for '.(isset($request['_']) ? $request['_'] : '-').' with message ID '.$request_id); return; diff --git a/src/danog/MadelineProto/TL/TL.php b/src/danog/MadelineProto/TL/TL.php index 3ec8de3f..d268f183 100644 --- a/src/danog/MadelineProto/TL/TL.php +++ b/src/danog/MadelineProto/TL/TL.php @@ -987,7 +987,7 @@ class TL } if ($constructorData['type'] === 'Vector t') { $constructorData['connection'] = $type['connection']; - $constructorData['subtype'] = isset($type['subtype']) ? $type['subtype'] : ''; + $constructorData['subtype'] = $type['subtype'] ?? ''; $constructorData['type'] = 'vector'; return $this->deserialize($stream, $constructorData);