From e11d4e02db7f1fd529ae668ee8b14e4d5912cfde Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 1 Jun 2018 23:45:34 +0300 Subject: [PATCH] Fix HeaderCreator usage. GitOrigin-RevId: 1ac210190048ad2797751630a838f74541dda37d --- td/mtproto/HttpTransport.cpp | 4 +--- tdnet/td/net/Wget.cpp | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/td/mtproto/HttpTransport.cpp b/td/mtproto/HttpTransport.cpp index 2af6624e2..03c23c894 100644 --- a/td/mtproto/HttpTransport.cpp +++ b/td/mtproto/HttpTransport.cpp @@ -52,9 +52,7 @@ void Transport::write(BufferWriter &&message, bool quick_ack) { hc.set_keep_alive(); hc.set_content_size(message.size()); auto r_head = hc.finish(); - if (r_head.is_error()) { - UNREACHABLE(); - } + CHECK(r_head.is_ok()); Slice src = r_head.ok(); MutableSlice dst = message.prepare_prepend(); CHECK(dst.size() >= src.size()) << dst.size() << " >= " << src.size(); diff --git a/tdnet/td/net/Wget.cpp b/tdnet/td/net/Wget.cpp index 1818fa488..fb7f43c4e 100644 --- a/tdnet/td/net/Wget.cpp +++ b/tdnet/td/net/Wget.cpp @@ -38,21 +38,6 @@ Status Wget::try_init() { TRY_RESULT(ascii_host, idn_to_ascii(url.host_)); url.host_ = std::move(ascii_host); - IPAddress addr; - TRY_STATUS(addr.init_host_port(url.host_, url.port_)); - - TRY_RESULT(fd, SocketFd::open(addr)); - if (url.protocol_ == HttpUrl::Protocol::HTTP) { - connection_ = - create_actor("Connect", std::move(fd), std::numeric_limits::max(), 0, 0, - ActorOwn(actor_id(this))); - } else { - TRY_RESULT(ssl_fd, SslFd::init(std::move(fd), url.host_, CSlice() /* certificate */, verify_peer_)); - connection_ = - create_actor("Connect", std::move(ssl_fd), std::numeric_limits::max(), 0, - 0, ActorOwn(actor_id(this))); - } - HttpHeaderCreator hc; hc.init_get(url.query_); bool was_host = false; @@ -73,8 +58,24 @@ Status Wget::try_init() { if (!was_accept_encoding) { hc.add_header("Accept-Encoding", "gzip, deflate"); } + TRY_RESULT(header, hc.finish()); - send_closure(connection_, &HttpOutboundConnection::write_next, BufferSlice(hc.finish().ok())); + IPAddress addr; + TRY_STATUS(addr.init_host_port(url.host_, url.port_)); + + TRY_RESULT(fd, SocketFd::open(addr)); + if (url.protocol_ == HttpUrl::Protocol::HTTP) { + connection_ = + create_actor("Connect", std::move(fd), std::numeric_limits::max(), 0, 0, + ActorOwn(actor_id(this))); + } else { + TRY_RESULT(ssl_fd, SslFd::init(std::move(fd), url.host_, CSlice() /* certificate */, verify_peer_)); + connection_ = + create_actor("Connect", std::move(ssl_fd), std::numeric_limits::max(), 0, + 0, ActorOwn(actor_id(this))); + } + + send_closure(connection_, &HttpOutboundConnection::write_next, BufferSlice(header)); send_closure(connection_, &HttpOutboundConnection::write_ok); return Status::OK(); }