tint Channel::LEDBAT_DELAY_BIN = TINT_SEC*30;
tint Channel::MAX_POSSIBLE_RTT = TINT_SEC*10;
const char* Channel::SEND_CONTROL_MODES[] = {"keepalive", "pingpong",
- "slowstart", "standard_aimd", "ledbat"};
+ "slowstart", "standard_aimd", "ledbat", "closing"};
tint Channel::NextSendTime () {
cwnd_ += LEDBAT_GAIN * off_target / cwnd_;
if (cwnd_<1)
cwnd_ = 1;
+ if (owd_cur==TINT_NEVER || owd_min==TINT_NEVER)
+ cwnd_ = 1;
dprintf("%s #%u sendctrl ledbat %lli-%lli => %3.2f\n",
tintstr(),id_,owd_cur,owd_min,cwnd_);
return CwndRateNextSendTime();
}
if (data_in_.time!=TINT_NEVER) { // TODO: ACK NONE for corrupted data
AddTs(dgram);
- bin64_t pos = file().ack_out().cover(data_in_.bin);
+ bin64_t pos = data_in_.bin; // be precise file().ack_out().cover(data_in_.bin);
dgram.Push8(SWIFT_ACK);
dgram.Push32(pos.to32());
//dgram.Push64(data_in_.time);