diff --git a/telegram-bot-api/WebhookActor.cpp b/telegram-bot-api/WebhookActor.cpp index fbf6388..3a70a3f 100644 --- a/telegram-bot-api/WebhookActor.cpp +++ b/telegram-bot-api/WebhookActor.cpp @@ -62,6 +62,7 @@ WebhookActor::WebhookActor(td::ActorShared callback, td::int64 tqueue_ if (r_ascii_host.is_ok()) { url_.host_ = r_ascii_host.move_as_ok(); } + host_header_ = td::HttpHeaderCreator::get_host_header(url_.protocol_, url_.host_, url_.port_); LOG(INFO) << "Set webhook for " << tqueue_id << " with certificate = \"" << cert_path_ << "\", protocol = " << (url_.protocol_ == td::HttpUrl::Protocol::Http ? "http" : "https") @@ -552,12 +553,7 @@ td::Status WebhookActor::send_update() { td::HttpHeaderCreator hc; hc.init_post(url_.query_); - if ((url_.protocol_ == td::HttpUrl::Protocol::Https && url_.port_ == 443) || - (url_.protocol_ == td::HttpUrl::Protocol::Http && url_.port_ == 80)) { - hc.add_header("Host", url_.host_); - } else { - hc.add_header("Host", PSLICE() << url_.host_ << ':' << url_.port_); - } + hc.add_header("Host", host_header_); if (!url_.userinfo_.empty()) { hc.add_header("Authorization", PSLICE() << "Basic " << td::base64_encode(url_.userinfo_)); } diff --git a/telegram-bot-api/WebhookActor.h b/telegram-bot-api/WebhookActor.h index 7400547..16e128a 100644 --- a/telegram-bot-api/WebhookActor.h +++ b/telegram-bot-api/WebhookActor.h @@ -78,22 +78,24 @@ class WebhookActor final : public td::HttpOutboundConnection::Callback { static std::atomic total_connection_count_; td::ActorShared callback_; - td::int64 tqueue_id_; + const td::int64 tqueue_id_; bool tqueue_empty_ = false; std::size_t last_pending_update_count_ = MIN_PENDING_UPDATES_WARNING; + td::HttpUrl url_; + td::string host_header_; const td::string cert_path_; std::shared_ptr parameters_; double last_error_time_ = 0; td::string last_error_message_ = ""; - bool fix_ip_address_ = false; + const bool fix_ip_address_ = false; bool stop_flag_ = false; bool was_checked_ = false; - bool from_db_flag_ = false; + const bool from_db_flag_ = false; class Update { public: @@ -168,8 +170,8 @@ class WebhookActor final : public td::HttpOutboundConnection::Callback { td::Container> pending_sockets_; td::vector> ready_sockets_; - td::int32 max_connections_ = 0; - td::string secret_token_; + const td::int32 max_connections_ = 0; + const td::string secret_token_; td::Container connections_; td::ListNode ready_connections_; td::FloodControlFast active_new_connection_flood_;