Use HttpHeaderCreator::get_host_header in WebhookActor.

main
levlam 5 months ago
parent 6f63136a5f
commit 3f075e9cc6

@ -62,6 +62,7 @@ WebhookActor::WebhookActor(td::ActorShared<Callback> 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_));
}

@ -78,22 +78,24 @@ class WebhookActor final : public td::HttpOutboundConnection::Callback {
static std::atomic<td::uint64> total_connection_count_;
td::ActorShared<Callback> 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<const ClientParameters> parameters_;
double last_error_time_ = 0;
td::string last_error_message_ = "<none>";
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<td::ActorOwn<>> pending_sockets_;
td::vector<td::BufferedFd<td::SocketFd>> ready_sockets_;
td::int32 max_connections_ = 0;
td::string secret_token_;
const td::int32 max_connections_ = 0;
const td::string secret_token_;
td::Container<Connection> connections_;
td::ListNode ready_connections_;
td::FloodControlFast active_new_connection_flood_;

Loading…
Cancel
Save