PFS fixes
This commit is contained in:
parent
4fa1e606a3
commit
5ffae641d2
@ -80,6 +80,9 @@ class DataCenter
|
||||
return false;
|
||||
}
|
||||
$ctxs = $this->generate_contexts($dc_number);
|
||||
if (empty($ctxs)) {
|
||||
return false;
|
||||
}
|
||||
foreach ($ctxs as $ctx) {
|
||||
try {
|
||||
if (isset($this->sockets[$dc_number]->old)) {
|
||||
@ -242,12 +245,10 @@ class DataCenter
|
||||
|
||||
foreach ($ipv6 as $ipv6) {
|
||||
if (!isset($this->dclist[$test][$ipv6][$dc_number]['ip_address'])) {
|
||||
unset($this->sockets[$dc_number]);
|
||||
|
||||
$this->API->logger->logger("No info for DC $dc_number", \danog\MadelineProto\Logger::ERROR);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
$address = $this->dclist[$test][$ipv6][$dc_number]['ip_address'];
|
||||
$port = $this->dclist[$test][$ipv6][$dc_number]['port'];
|
||||
|
||||
@ -307,6 +308,13 @@ class DataCenter
|
||||
$ctxs = array_merge($ctxs, $this->generate_contexts($dc_number.'_bk'));
|
||||
}
|
||||
|
||||
if (empty($ctxs)) {
|
||||
unset($this->sockets[$dc_number]);
|
||||
|
||||
$this->API->logger->logger("No info for DC $dc_number", \danog\MadelineProto\Logger::ERROR);
|
||||
|
||||
}
|
||||
|
||||
return $ctxs;
|
||||
}
|
||||
|
||||
|
@ -292,7 +292,7 @@ class WriteLoop extends ResumableSignalLoop
|
||||
|
||||
$connection->http_req_count++;
|
||||
|
||||
$API->logger->logger("Sent encrypted payload to DC {$datacenter}, speed ".((($len * 8) / (microtime(true) - $t)) / 1000000).' mbps!', \danog\MadelineProto\Logger::ULTRA_VERBOSE);
|
||||
$API->logger->logger("Sent encrypted payload to DC {$datacenter}", \danog\MadelineProto\Logger::ULTRA_VERBOSE);
|
||||
|
||||
$sent = time();
|
||||
|
||||
|
@ -898,7 +898,7 @@ class MTProto implements TLCallback
|
||||
}
|
||||
$curdc = $this->datacenter->curdc;
|
||||
$this->logger->logger('Got new DC options, reconnecting');
|
||||
yield $this->connect_to_all_dcs();
|
||||
yield $this->connect_to_all_dcs_async();
|
||||
$this->datacenter->curdc = $curdc;
|
||||
}
|
||||
|
||||
|
@ -556,7 +556,7 @@ trait AuthKeyHandler
|
||||
};
|
||||
}
|
||||
yield array_shift($dcs)();
|
||||
foreach ($dcs as &$dc) {
|
||||
foreach ($dcs as $id => &$dc) {
|
||||
$dc = $dc();
|
||||
}
|
||||
yield $dcs;
|
||||
@ -592,6 +592,7 @@ trait AuthKeyHandler
|
||||
$cdn = strpos($id, 'cdn');
|
||||
$media = strpos($id, 'media');
|
||||
|
||||
|
||||
if ($socket->temp_auth_key === null || $socket->auth_key === null) {
|
||||
$dc_config_number = isset($this->settings['connection_settings'][$id]) ? $id : 'all';
|
||||
if ($socket->auth_key === null && !$cdn && !$media) {
|
||||
|
@ -308,12 +308,13 @@ trait ResponseHandler
|
||||
unset($this->datacenter->sockets[$datacenter]->incoming_messages[$response_id]['content']);
|
||||
$request = &$this->datacenter->sockets[$datacenter]->outgoing_messages[$request_id];
|
||||
|
||||
if (isset($request['method']) && $request['method'] && $request['_'] !== 'auth.bindTempAuthKey' && $this->datacenter->sockets[$datacenter]->temp_auth_key !== null && (!isset($this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited']) || $this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] === false)) {
|
||||
$this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] = true;
|
||||
}
|
||||
if (isset($response['_'])) {
|
||||
switch ($response['_']) {
|
||||
case 'rpc_error':
|
||||
if (isset($request['method']) && $request['method'] && $request['_'] !== 'auth.bindTempAuthKey' && $this->datacenter->sockets[$datacenter]->temp_auth_key !== null && (!isset($this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited']) || $this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] === false)) {
|
||||
$this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] = true;
|
||||
}
|
||||
|
||||
if (in_array($response['error_message'], ['PERSISTENT_TIMESTAMP_EMPTY', 'PERSISTENT_TIMESTAMP_OUTDATED', 'PERSISTENT_TIMESTAMP_INVALID'])) {
|
||||
$this->got_response_for_outgoing_message_id($request_id, $datacenter);
|
||||
$this->handle_reject($datacenter, $request, new \danog\MadelineProto\PTSException($response['error_message']));
|
||||
@ -488,7 +489,6 @@ trait ResponseHandler
|
||||
break;
|
||||
case 'bad_server_salt':
|
||||
case 'bad_msg_notification':
|
||||
|
||||
$this->logger->logger('Received bad_msg_notification: '.self::BAD_MSG_ERROR_CODES[$response['error_code']], \danog\MadelineProto\Logger::WARNING);
|
||||
switch ($response['error_code']) {
|
||||
case 48:
|
||||
@ -516,6 +516,10 @@ trait ResponseHandler
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($request['method']) && $request['method'] && $request['_'] !== 'auth.bindTempAuthKey' && $this->datacenter->sockets[$datacenter]->temp_auth_key !== null && (!isset($this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited']) || $this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] === false)) {
|
||||
$this->datacenter->sockets[$datacenter]->temp_auth_key['connection_inited'] = true;
|
||||
}
|
||||
|
||||
if (!isset($request['promise'])) {
|
||||
$this->logger->logger('Response: already got response for '.(isset($request['_']) ? $request['_'] : '-').' with message ID '.$this->unpack_signed_long($request_id));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user