Skip to content

Commit

Permalink
dirty hack by hypnosis-i2p aka nonlin-chaos-etc-etal allowing to deli…
Browse files Browse the repository at this point in the history
…ver 420 FLOOD_WAIT_N and other 420 error messages to the result value of td_json_client_receive(); seems to work perfectly however who knows the codebase of tdlib...
  • Loading branch information
user committed Jan 30, 2020
1 parent 4083b4c commit a5360c1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
14 changes: 14 additions & 0 deletions td/telegram/net/NetQueryDelayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@ void NetQueryDelayer::delay(NetQueryPtr query) {
return;
}

// dirty hack {} by Hypnosis-i2p
/*{
auto msg = error.message();
auto prefix = Slice("MSG_");
if (code == 420 && !begins_with(msg, prefix)) {
LOG(WARNING) << "Hypnosis-i2p dirty fix: Setting status 420: " << query << " " << tag("timeout", timeout) << tag("total_timeout", query->total_timeout)
<< " because of " << error << " from " << query->source_;
query->debug("NetQueryDelayer: Hypnosis-i2p dirty fix send");
query->set_error(Status::Error(420, PSLICE() << "MSG_" << msg));
G()->net_query_dispatcher().dispatch(std::move(query));
return;
}
}*/

LOG(WARNING) << "Delay: " << query << " " << tag("timeout", timeout) << tag("total_timeout", query->total_timeout)
<< " because of " << error << " from " << query->source_;
query->debug(PSTRING() << "delay for " << format::as_time(timeout));
Expand Down
10 changes: 8 additions & 2 deletions td/telegram/net/NetQueryDispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,14 @@ void NetQueryDispatcher::dispatch(NetQueryPtr net_query) {
} else if (code == NetQuery::Resend) {
net_query->resend();
} else if (code < 0 || code == 500 || code == 420) {
net_query->debug("sent to NetQueryDelayer");
return send_closure(delayer_, &NetQueryDelayer::delay, std::move(net_query));
// hypnosis-i2p dirty hack to specially handle 420 {
if (code == 420) {
net_query->set_error(Status::Error(420, std::move(net_query->error().message())));
return complete_net_query(std::move(net_query));
} else {
net_query->debug("sent to NetQueryDelayer");
return send_closure(delayer_, &NetQueryDelayer::delay, std::move(net_query));
}
}
}
}
Expand Down

0 comments on commit a5360c1

Please sign in to comment.