Minor fixes.
GitOrigin-RevId: b8276b548fca9ede4bd2caf27bd45ccc54c93dda
This commit is contained in:
parent
890855a4f0
commit
eecb70d006
@ -70,7 +70,7 @@ Changes in 1.6.0:
|
|||||||
* Improved support for chat backgrounds:
|
* Improved support for chat backgrounds:
|
||||||
- Added the classes `backgroundFillSolid` for solid color backgrounds and `backgroundFillGradient` for
|
- Added the classes `backgroundFillSolid` for solid color backgrounds and `backgroundFillGradient` for
|
||||||
gradient backgrounds.
|
gradient backgrounds.
|
||||||
- Added support for TGV (gzipped subset of SVG with mime-type "application/x-tgwallpattern") background patterns
|
- Added support for TGV (gzipped subset of SVG with MIME type "application/x-tgwallpattern") background patterns
|
||||||
in addition to PNG patterns. Background pattern thumbnails are still always in PNG format.
|
in addition to PNG patterns. Background pattern thumbnails are still always in PNG format.
|
||||||
- Replaced the field `color` in the class `backgroundTypePattern` with the field `fill` of type `BackgroundFill`.
|
- Replaced the field `color` in the class `backgroundTypePattern` with the field `fill` of type `BackgroundFill`.
|
||||||
- Replaced the class `backgroundTypeSolid` with the class `backgroundTypeFill`.
|
- Replaced the class `backgroundTypeSolid` with the class `backgroundTypeFill`.
|
||||||
|
@ -2113,7 +2113,7 @@ backgroundFillGradient top_color:int32 bottom_color:int32 rotation_angle:int32 =
|
|||||||
//@is_moving True, if the background needs to be slightly moved when device is tilted
|
//@is_moving True, if the background needs to be slightly moved when device is tilted
|
||||||
backgroundTypeWallpaper is_blurred:Bool is_moving:Bool = BackgroundType;
|
backgroundTypeWallpaper is_blurred:Bool is_moving:Bool = BackgroundType;
|
||||||
|
|
||||||
//@description A PNG or TGV (gzipped subset of SVG with mime-type "application/x-tgwallpattern") pattern to be combined with the background fill chosen by the user
|
//@description A PNG or TGV (gzipped subset of SVG with MIME type "application/x-tgwallpattern") pattern to be combined with the background fill chosen by the user
|
||||||
//@fill Description of the background fill
|
//@fill Description of the background fill
|
||||||
//@intensity Intensity of the pattern when it is shown above the filled background, 0-100
|
//@intensity Intensity of the pattern when it is shown above the filled background, 0-100
|
||||||
//@is_moving True, if the background needs to be slightly moved when device is tilted
|
//@is_moving True, if the background needs to be slightly moved when device is tilted
|
||||||
|
@ -55,7 +55,6 @@
|
|||||||
#include "td/utils/tl_parsers.h"
|
#include "td/utils/tl_parsers.h"
|
||||||
#include "td/utils/UInt.h"
|
#include "td/utils/UInt.h"
|
||||||
|
|
||||||
#include <functional>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
@ -203,8 +202,7 @@ Result<SimpleConfig> decode_config(Slice input) {
|
|||||||
template <class F>
|
template <class F>
|
||||||
static ActorOwn<> get_simple_config_impl(Promise<SimpleConfigResult> promise, int32 scheduler_id, string url,
|
static ActorOwn<> get_simple_config_impl(Promise<SimpleConfigResult> promise, int32 scheduler_id, string url,
|
||||||
string host, std::vector<std::pair<string, string>> headers, bool prefer_ipv6,
|
string host, std::vector<std::pair<string, string>> headers, bool prefer_ipv6,
|
||||||
F &&get_config,
|
F &&get_config, string content = string(), string content_type = string()) {
|
||||||
string content = string(), string content_type = string()) {
|
|
||||||
VLOG(config_recoverer) << "Request simple config from " << url;
|
VLOG(config_recoverer) << "Request simple config from " << url;
|
||||||
#if TD_EMSCRIPTEN // FIXME
|
#if TD_EMSCRIPTEN // FIXME
|
||||||
return ActorOwn<>();
|
return ActorOwn<>();
|
||||||
@ -243,7 +241,8 @@ ActorOwn<> get_simple_config_azure(Promise<SimpleConfigResult> promise, const Co
|
|||||||
<< "v2/config.txt";
|
<< "v2/config.txt";
|
||||||
const bool prefer_ipv6 = shared_config == nullptr ? false : shared_config->get_option_boolean("prefer_ipv6");
|
const bool prefer_ipv6 = shared_config == nullptr ? false : shared_config->get_option_boolean("prefer_ipv6");
|
||||||
return get_simple_config_impl(std::move(promise), scheduler_id, std::move(url), "tcdnb.azureedge.net", {},
|
return get_simple_config_impl(std::move(promise), scheduler_id, std::move(url), "tcdnb.azureedge.net", {},
|
||||||
prefer_ipv6, [](auto &http_query) -> Result<string> { return http_query.content_.str(); });
|
prefer_ipv6,
|
||||||
|
[](auto &http_query) -> Result<string> { return http_query.content_.str(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
static ActorOwn<> get_simple_config_dns(Slice address, Slice host, Promise<SimpleConfigResult> promise,
|
static ActorOwn<> get_simple_config_dns(Slice address, Slice host, Promise<SimpleConfigResult> promise,
|
||||||
|
@ -126,9 +126,6 @@ class Global : public ActorContext {
|
|||||||
bool is_server_time_reliable() const {
|
bool is_server_time_reliable() const {
|
||||||
return server_time_difference_was_updated_;
|
return server_time_difference_was_updated_;
|
||||||
}
|
}
|
||||||
double from_server_time(double date) const {
|
|
||||||
return date - get_server_time_difference();
|
|
||||||
}
|
|
||||||
double to_server_time(double now) const {
|
double to_server_time(double now) const {
|
||||||
return now + get_server_time_difference();
|
return now + get_server_time_difference();
|
||||||
}
|
}
|
||||||
|
@ -17484,8 +17484,10 @@ Result<int32> MessagesManager::get_message_schedule_date(
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (scheduling_state->get_id()) {
|
switch (scheduling_state->get_id()) {
|
||||||
case td_api::messageSchedulingStateSendWhenOnline::ID:
|
case td_api::messageSchedulingStateSendWhenOnline::ID: {
|
||||||
return static_cast<int32>(SCHEDULE_WHEN_ONLINE_DATE);
|
auto send_date = SCHEDULE_WHEN_ONLINE_DATE;
|
||||||
|
return send_date;
|
||||||
|
}
|
||||||
case td_api::messageSchedulingStateSendAtDate::ID: {
|
case td_api::messageSchedulingStateSendAtDate::ID: {
|
||||||
auto send_at_date = td_api::move_object_as<td_api::messageSchedulingStateSendAtDate>(scheduling_state);
|
auto send_at_date = td_api::move_object_as<td_api::messageSchedulingStateSendAtDate>(scheduling_state);
|
||||||
auto send_date = send_at_date->send_date_;
|
auto send_date = send_at_date->send_date_;
|
||||||
@ -26299,8 +26301,8 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
set_dialog_last_read_inbox_message_id(d, MessageId::min(), server_unread_count, local_unread_count, false,
|
set_dialog_last_read_inbox_message_id(d, MessageId::min(), server_unread_count, local_unread_count, false,
|
||||||
source);
|
source);
|
||||||
} else {
|
} else {
|
||||||
// if non-scheduled outgoing message has id one greater than last_read_inbox_message_id then definitely there are no
|
// if non-scheduled outgoing message has id one greater than last_read_inbox_message_id,
|
||||||
// unread incoming messages before it
|
// then definitely there are no unread incoming messages before it
|
||||||
if (message_id.is_server() && d->last_read_inbox_message_id.is_valid() &&
|
if (message_id.is_server() && d->last_read_inbox_message_id.is_valid() &&
|
||||||
d->last_read_inbox_message_id.is_server() &&
|
d->last_read_inbox_message_id.is_server() &&
|
||||||
message_id.get_server_message_id().get() == d->last_read_inbox_message_id.get_server_message_id().get() + 1) {
|
message_id.get_server_message_id().get() == d->last_read_inbox_message_id.get_server_message_id().get() + 1) {
|
||||||
|
@ -108,7 +108,6 @@ class AuthDataSharedImpl : public AuthDataShared {
|
|||||||
void log_auth_key(const mtproto::AuthKey &auth_key) {
|
void log_auth_key(const mtproto::AuthKey &auth_key) {
|
||||||
LOG(WARNING) << dc_id_ << " " << tag("auth_key_id", auth_key.id()) << tag("state", get_auth_key_state(auth_key))
|
LOG(WARNING) << dc_id_ << " " << tag("auth_key_id", auth_key.id()) << tag("state", get_auth_key_state(auth_key))
|
||||||
<< tag("created_at", auth_key.created_at());
|
<< tag("created_at", auth_key.created_at());
|
||||||
;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -250,8 +250,6 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
if (status.code() == 400 && status.message() == "ENCRYPTED_MESSAGE_INVALID") {
|
if (status.code() == 400 && status.message() == "ENCRYPTED_MESSAGE_INVALID") {
|
||||||
bool has_immunity =
|
bool has_immunity =
|
||||||
!G()->is_server_time_reliable() || G()->server_time() - auth_data_.get_main_auth_key().created_at() < 60;
|
!G()->is_server_time_reliable() || G()->server_time() - auth_data_.get_main_auth_key().created_at() < 60;
|
||||||
LOG(ERROR) << G()->is_server_time_reliable() << " "
|
|
||||||
<< G()->server_time() - auth_data_.get_auth_key().created_at();
|
|
||||||
if (!use_pfs_) {
|
if (!use_pfs_) {
|
||||||
if (has_immunity) {
|
if (has_immunity) {
|
||||||
LOG(WARNING) << "Do not drop main key, because it was created too recently";
|
LOG(WARNING) << "Do not drop main key, because it was created too recently";
|
||||||
@ -262,7 +260,7 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (has_immunity) {
|
if (has_immunity) {
|
||||||
LOG(WARNING) << "Do not check validate main key, because it was created too recently";
|
LOG(WARNING) << "Do not validate main key, because it was created too recently";
|
||||||
} else {
|
} else {
|
||||||
need_check_main_key_ = true;
|
need_check_main_key_ = true;
|
||||||
auth_data_.set_use_pfs(false);
|
auth_data_.set_use_pfs(false);
|
||||||
@ -274,15 +272,12 @@ void Session::on_bind_result(NetQueryPtr query) {
|
|||||||
auto r_flag = fetch_result<telegram_api::auth_bindTempAuthKey>(query->ok());
|
auto r_flag = fetch_result<telegram_api::auth_bindTempAuthKey>(query->ok());
|
||||||
if (r_flag.is_error()) {
|
if (r_flag.is_error()) {
|
||||||
status = r_flag.move_as_error();
|
status = r_flag.move_as_error();
|
||||||
} else {
|
} else if (!r_flag.ok()) {
|
||||||
auto flag = r_flag.move_as_ok();
|
status = Status::Error("Returned false");
|
||||||
if (!flag) {
|
|
||||||
status = Status::Error("Returned false");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (status.is_ok()) {
|
if (status.is_ok()) {
|
||||||
LOG(INFO) << "BOUND!" << tag("tmp_id", auth_data_.get_tmp_auth_key().id());
|
LOG(INFO) << "Bound temp auth key " << auth_data_.get_tmp_auth_key().id();
|
||||||
auth_data_.on_bind();
|
auth_data_.on_bind();
|
||||||
on_tmp_auth_key_updated();
|
on_tmp_auth_key_updated();
|
||||||
} else {
|
} else {
|
||||||
@ -331,7 +326,6 @@ void Session::on_result(NetQueryPtr query) {
|
|||||||
return on_check_key_result(std::move(query));
|
return on_check_key_result(std::move(query));
|
||||||
}
|
}
|
||||||
query->clear();
|
query->clear();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::return_query(NetQueryPtr &&query) {
|
void Session::return_query(NetQueryPtr &&query) {
|
||||||
@ -491,9 +485,8 @@ void Session::on_closed(Status status) {
|
|||||||
auth_data_.drop_main_auth_key();
|
auth_data_.drop_main_auth_key();
|
||||||
on_auth_key_updated();
|
on_auth_key_updated();
|
||||||
} else {
|
} else {
|
||||||
|
// log out if has error and or 1 minute is passed from start, or 1 minute has passed since auth_key creation
|
||||||
if (!use_pfs_) {
|
if (!use_pfs_) {
|
||||||
// Logout if has error and or 1 minute is passed from start, or 1 minute has passed
|
|
||||||
// since auth_key creation
|
|
||||||
auth_data_.set_use_pfs(true);
|
auth_data_.set_use_pfs(true);
|
||||||
} else if (need_check_main_key_) {
|
} else if (need_check_main_key_) {
|
||||||
LOG(WARNING) << "Invalidate main key";
|
LOG(WARNING) << "Invalidate main key";
|
||||||
@ -503,7 +496,7 @@ void Session::on_closed(Status status) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// resend all queries without ack.
|
// resend all queries without ack
|
||||||
for (auto it = sent_queries_.begin(); it != sent_queries_.end();) {
|
for (auto it = sent_queries_.begin(); it != sent_queries_.end();) {
|
||||||
if (!it->second.ack && it->second.connection_id == current_info_->connection_id) {
|
if (!it->second.ack && it->second.connection_id == current_info_->connection_id) {
|
||||||
// container vector leak otherwise
|
// container vector leak otherwise
|
||||||
|
Reference in New Issue
Block a user