diff --git a/td/telegram/net/NetQuery.cpp b/td/telegram/net/NetQuery.cpp index 851a9bdb3..10a8c5992 100644 --- a/td/telegram/net/NetQuery.cpp +++ b/td/telegram/net/NetQuery.cpp @@ -38,6 +38,21 @@ int32 NetQuery::tl_magic(const BufferSlice &buffer_slice) { return as(slice.begin()); } +void NetQuery::set_error(Status status, string source) { + if (status.code() == Error::Resend || status.code() == Error::Cancelled || + status.code() == Error::ResendInvokeAfter) { + return set_error_impl(Status::Error(200, PSLICE() << status), std::move(source)); + } + + if (status.message() == "INPUT_METHOD_INVALID") { + LOG(ERROR) << "Receive INPUT_METHOD_INVALID for query " << format::as_hex_dump<4>(Slice(query_.as_slice())); + } + if (status.message() == "BOT_METHOD_INVALID") { + LOG(ERROR) << "Receive BOT_METHOD_INVALID for query " << format::as_hex(tl_constructor()); + } + set_error_impl(std::move(status), std::move(source)); +} + void dump_pending_network_queries() { auto n = NetQueryCounter::get_count(); LOG(WARNING) << tag("pending net queries", n); diff --git a/td/telegram/net/NetQuery.h b/td/telegram/net/NetQuery.h index ba19d8e72..a2df1af7b 100644 --- a/td/telegram/net/NetQuery.h +++ b/td/telegram/net/NetQuery.h @@ -133,13 +133,7 @@ class NetQuery : public ListNode { void on_net_write(size_t size); void on_net_read(size_t size); - void set_error(Status status, string source = "") { - if (status.code() == Error::Resend || status.code() == Error::Cancelled || - status.code() == Error::ResendInvokeAfter) { - return set_error_impl(Status::Error(200, PSLICE() << status), std::move(source)); - } - set_error_impl(std::move(status), source); - } + void set_error(Status status, string source = ""); void set_error_resend() { set_error_impl(Status::Error()); diff --git a/td/telegram/net/NetQueryCreator.cpp b/td/telegram/net/NetQueryCreator.cpp index d95deb1eb..541bbfaae 100644 --- a/td/telegram/net/NetQueryCreator.cpp +++ b/td/telegram/net/NetQueryCreator.cpp @@ -23,8 +23,7 @@ NetQueryCreator::Ptr NetQueryCreator::create(uint64 id, const Storer &storer, Dc int32 tl_constructor = NetQuery::tl_magic(slice); if (gzip_flag == NetQuery::GzipFlag::On) { // TODO: try to compress files? - BufferSlice compressed; - compressed = gzencode(slice.as_slice()); + BufferSlice compressed = gzencode(slice.as_slice()); if (compressed.empty()) { gzip_flag = NetQuery::GzipFlag::Off; } else {