At this point it becomes clear there ACKs and ACKs
authorVictor Grishchenko <victor.grishchenko@gmail.com>
Wed, 10 Feb 2010 13:51:17 +0000 (14:51 +0100)
committerVictor Grishchenko <victor.grishchenko@gmail.com>
Wed, 10 Feb 2010 13:51:17 +0000 (14:51 +0100)
send_control.cpp
sendrecv.cpp

index 609ddfc..d2052b2 100644 (file)
@@ -19,7 +19,7 @@ float Channel::LEDBAT_GAIN = 1.0/LEDBAT_TARGET;
 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 () {
@@ -161,6 +161,8 @@ tint Channel::LedbatNextSendTime () {
     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();
index 278fd71..a0a1968 100644 (file)
@@ -243,7 +243,7 @@ void    Channel::AddAck (Datagram& dgram) {
     }
     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);