hacking
authorvictor <victor@e16421f0-f15b-0410-abcd-98678b794739>
Tue, 10 Nov 2009 09:48:31 +0000 (09:48 +0000)
committervictor <victor@e16421f0-f15b-0410-abcd-98678b794739>
Tue, 10 Nov 2009 09:48:31 +0000 (09:48 +0000)
git-svn-id: https://ttuki.vtt.fi/svn/p2p-next/TUD/p2tp/trunk@522 e16421f0-f15b-0410-abcd-98678b794739

ext/seq_picker.cpp
sendrecv.cpp
transfer.cpp

index 17d4a94..58ca215 100644 (file)
@@ -52,6 +52,11 @@ public:
             return hint; // TODO: end-game mode
         while (hint.layer()>layer)
             hint = hint.left();
+        assert(ack_hint_out_.get(hint)==bins::EMPTY);
+        if (file().ack_out().get(hint)!=bins::EMPTY) {
+            eprintf("bogus hint: (%i,%lli)\n",(int)hint.layer(),hint.offset());
+            exit(1);
+        }
         ack_hint_out_.set(hint);
         return hint;
         /*for (int l=layer; l>=0; l--) {
index 01d799f..5ad627b 100644 (file)
@@ -149,7 +149,7 @@ void        Channel::AddHint (Datagram& dgram) {
         } else {
             int status = file().ack_out().get(f.bin);
             if (status==bins::EMPTY) {
-                transfer().picker().Received(f.bin);
+                transfer().picker().Expired(f.bin);
                 break;
             } else if (status==bins::FILLED) {
                 hint_out_.pop_front();
@@ -178,7 +178,7 @@ void        Channel::AddHint (Datagram& dgram) {
     dprintf("%s #%i hinted %lli peer_cwnd %lli/%lli=%f\n",
             tintstr(),id,hinted,rtt_avg_,dip_avg_,((float)rtt_avg_/dip_avg_));
 
-    if ( 8*peer_cwnd > hinted ) { //hinted*1024 < peer_cwnd*4 ) {
+    if ( 4*peer_cwnd > hinted ) { //hinted*1024 < peer_cwnd*4 ) {
         
         uint8_t layer = 2; // actually, enough
         bin64_t hint = transfer().picker().Pick(ack_in_,layer);
@@ -221,6 +221,7 @@ bin64_t             Channel::AddData (Datagram& dgram) {
     dgram.Push(buf,r);
     dprintf("%s #%i +data (%lli)\n",tintstr(),id,tosend.base_offset());
     data_out_.push_back(tosend);
+    ack_in_.set(tosend);
        return tosend;
 }
 
@@ -310,6 +311,7 @@ bin64_t Channel::OnData (Datagram& dgram) {
             tint dip = NOW - last_recv_time_;
             dip_avg_ = ( dip_avg_*3 + dip ) >> 2;
         }
+        transfer().picker().Received(pos); // so dirty; FIXME FIXME FIXME
         return pos;
     } else
         return bin64_t::NONE;
@@ -355,6 +357,7 @@ void Channel::OnTs (Datagram& dgram) {
 void   Channel::OnHint (Datagram& dgram) {
        bin64_t hint = dgram.Pull32();
        hint_in_.push_back(hint);
+    ack_in_.set(hint,bins::EMPTY);
     //RequeueSend(cc_->OnHintRecvd(hint));
     dprintf("%s #%i -hint (%i,%lli)\n",tintstr(),id,hint.layer(),hint.offset());
 }
index b1effc0..8ee9d0c 100644 (file)
@@ -35,7 +35,7 @@ FileTransfer::FileTransfer (const char* filename, const Sha1Hash& _root_hash) :
         files.resize(fd()+1);
     files[fd()] = this;
     picker_ = new SeqPiecePicker(this);
-    picker_->Randomize(rand()&63);
+    //picker_->Randomize(rand()&63);
 }