Skip to content

Commit c369127

Browse files
rldp2 support in rldp-http-proxy (#608)
Co-authored-by: SpyCheese <[email protected]>
1 parent 7a78ea3 commit c369127

File tree

8 files changed

+220
-64
lines changed

8 files changed

+220
-64
lines changed

rldp-http-proxy/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
22

33
add_executable(rldp-http-proxy rldp-http-proxy.cpp DNSResolver.h DNSResolver.cpp)
44
target_include_directories(rldp-http-proxy PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>)
5-
target_link_libraries(rldp-http-proxy PRIVATE tonhttp rldp dht tonlib git)
5+
target_link_libraries(rldp-http-proxy PRIVATE tonhttp rldp rldp2 dht tonlib git)

rldp-http-proxy/rldp-http-proxy.cpp

Lines changed: 198 additions & 63 deletions
Large diffs are not rendered by default.

rldp2/rldp-in.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class RldpIn : public RldpImpl {
9292

9393
void get_conn_ip_str(adnl::AdnlNodeIdShort l_id, adnl::AdnlNodeIdShort p_id, td::Promise<td::string> promise) override;
9494

95+
void set_default_mtu(td::uint64 mtu) override;
96+
9597
RldpIn(td::actor::ActorId<adnl::AdnlPeerTable> adnl) : adnl_(adnl) {
9698
}
9799

@@ -107,6 +109,8 @@ class RldpIn : public RldpImpl {
107109

108110
std::set<adnl::AdnlNodeIdShort> local_ids_;
109111

112+
td::optional<td::uint64> custom_default_mtu_;
113+
110114
td::actor::ActorId<RldpConnectionActor> create_connection(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst);
111115
};
112116

rldp2/rldp.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ class RldpConnectionActor : public td::actor::Actor, private ConnectionCallback
4444
connection_.receive_raw(std::move(data));
4545
yield();
4646
}
47+
void set_default_mtu(td::uint64 mtu) {
48+
connection_.set_default_mtu(mtu);
49+
}
4750

4851
private:
4952
td::actor::ActorId<RldpIn> rldp_;
@@ -129,6 +132,9 @@ td::actor::ActorId<RldpConnectionActor> RldpIn::create_connection(adnl::AdnlNode
129132
return it->second.get();
130133
}
131134
auto connection = td::actor::create_actor<RldpConnectionActor>("RldpConnection", actor_id(this), src, dst, adnl_);
135+
if (custom_default_mtu_) {
136+
td::actor::send_closure(connection, &RldpConnectionActor::set_default_mtu, custom_default_mtu_.value());
137+
}
132138
auto res = connection.get();
133139
connections_[std::make_pair(src, dst)] = std::move(connection);
134140
return res;
@@ -221,6 +227,13 @@ void RldpIn::get_conn_ip_str(adnl::AdnlNodeIdShort l_id, adnl::AdnlNodeIdShort p
221227
td::actor::send_closure(adnl_, &adnl::AdnlPeerTable::get_conn_ip_str, l_id, p_id, std::move(promise));
222228
}
223229

230+
void RldpIn::set_default_mtu(td::uint64 mtu) {
231+
custom_default_mtu_ = mtu;
232+
for (auto &connection : connections_) {
233+
td::actor::send_closure(connection.second, &RldpConnectionActor::set_default_mtu, mtu);
234+
}
235+
}
236+
224237
std::unique_ptr<adnl::Adnl::Callback> RldpIn::make_adnl_callback() {
225238
class Callback : public adnl::Adnl::Callback {
226239
private:

rldp2/rldp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class Rldp : public adnl::AdnlSenderInterface {
3737
virtual void send_message_ex(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst, td::Timestamp timeout,
3838
td::BufferSlice data) = 0;
3939

40+
virtual void set_default_mtu(td::uint64 mtu) = 0;
41+
4042
static td::actor::ActorOwn<Rldp> create(td::actor::ActorId<adnl::Adnl> adnl);
4143
};
4244

tl/generate/scheme/ton_api.tl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,11 +720,13 @@ storage.getPiece piece_id:int = storage.Piece;
720720
http.header name:string value:string = http.Header;
721721
http.payloadPart data:bytes trailer:(vector http.header) last:Bool = http.PayloadPart;
722722
http.response http_version:string status_code:int reason:string headers:(vector http.header) no_payload:Bool = http.Response;
723+
http.proxy.capabilities capabilities:long = http.proxy.Capabilities;
723724

724725
---functions---
725726

726727
http.request id:int256 method:string url:string http_version:string headers:(vector http.header) = http.Response;
727728
http.getNextPayloadPart id:int256 seqno:int max_chunk_size:int = http.PayloadPart;
729+
http.proxy.getCapabilities capabilities:long = http.proxy.Capabilities;
728730

729731
---types---
730732

tl/generate/scheme/ton_api.tlo

264 Bytes
Binary file not shown.

tl/generate/scheme/tonlib_api.tlo

-56 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)