]> git.ipfire.org Git - thirdparty/opentracker.git/commitdiff
Fix: auto increment in += is not a post increment...
authorerdgeist <>
Sun, 7 Dec 2008 13:14:24 +0000 (13:14 +0000)
committererdgeist <>
Sun, 7 Dec 2008 13:14:24 +0000 (13:14 +0000)
ot_fullscrape.c
ot_livesync.c
trackerlogic.c

index 523d883f4bb0cd98086216ef835662cfd74fcf38..58546ca63cb9b25d745758b51e82c3186004a52c 100644 (file)
@@ -165,8 +165,7 @@ static void fullscrape_make( int *iovec_entries, struct iovec **iovector, ot_tas
 
         /* push hash as bencoded string */
         *r++='2'; *r++='0'; *r++=':';
-        for(i=0;i<20;i+=4) WRITE32(r+=4,0,READ32(hash,i));
-
+        for(i=0;i<20;i+=4) WRITE32(r,i,READ32(hash,i)); r+=20;
         /* push rest of the scrape string */
         r += sprintf( r, "d8:completei%zde10:downloadedi%zde10:incompletei%zdee", peer_list->seed_count, peer_list->down_count, peer_list->peer_count-peer_list->seed_count );
 
@@ -176,9 +175,10 @@ static void fullscrape_make( int *iovec_entries, struct iovec **iovector, ot_tas
         r += sprintf( r, ":%zd:%zd\n", peer_list->seed_count, peer_list->peer_count-peer_list->seed_count );
         break;
       case TASK_FULLSCRAPE_TPB_BINARY:
-        for(i=0;i<20;i+=4) WRITE32(r+=4,0,READ32(hash,i));
-        *(uint32_t*)(r+=4) = htonl( (uint32_t)  peer_list->seed_count );
-        *(uint32_t*)(r+=4) = htonl( (uint32_t)( peer_list->peer_count-peer_list->seed_count) );
+        for(i=0;i<20;i+=4) WRITE32(r,i,READ32(hash,i)); r+=20;
+        *(uint32_t*)(r+0) = htonl( (uint32_t)  peer_list->seed_count );
+        *(uint32_t*)(r+4) = htonl( (uint32_t)( peer_list->peer_count-peer_list->seed_count) );
+        r+=8;
         break;
       case TASK_FULLSCRAPE_TPB_URLENCODED:
         r += fmt_urlencoded( r, (char *)*hash, 20 );
index f61f0ecbbc4adc0251bf0acd175192fe8acde331..3cad1215e9b30e865b9763fbac9bcf1a38c2fdba 100644 (file)
@@ -101,10 +101,11 @@ static void livesync_issuepacket( ) {
 /* Inform live sync about whats going on. */
 void livesync_tell( ot_hash * const info_hash, const ot_peer * const peer ) {
   int i;
-  for(i=0;i<20;i+=4) WRITE32(livesync_outbuffer_pos+=4,0,READ32(info_hash,i));
-  WRITE32(livesync_outbuffer_pos+=4,0,READ32(peer,0));
-  WRITE32(livesync_outbuffer_pos+=4,0,READ32(peer,4));
-  
+  for(i=0;i<20;i+=4) WRITE32(livesync_outbuffer_pos,i,READ32(info_hash,i));
+  WRITE32(livesync_outbuffer_pos,20,READ32(peer,0));
+  WRITE32(livesync_outbuffer_pos,24,READ32(peer,4));
+  livesync_outbuffer_pos += 28;
+
   if( livesync_outbuffer_pos >= livesync_outbuffer_highwater )
     livesync_issuepacket();
 }
index d6a7a33319257c68bf2fc2670263f1e2396e9c8e..7d6294d51896fe2087cb180c17ccffb8f528fb7a 100644 (file)
@@ -164,8 +164,9 @@ static size_t return_peers_all( ot_peerlist *peer_list, char *reply ) {
     ot_peer * peers = (ot_peer*)bucket_list[bucket].data;
     size_t    peer_count = bucket_list[bucket].size;
     while( peer_count-- ) {
-      WRITE32(r+=4,0,READ32(peers,0));
-      WRITE16(r+=2,0,READ16(peers++,4));
+      WRITE32(r,0,READ32(peers,0));
+      WRITE16(r,4,READ16(peers++,4));
+      r+=6;
     }
   }
 
@@ -208,8 +209,9 @@ static size_t return_peers_selection( ot_peerlist *peer_list, size_t amount, cha
       bucket_index = ( bucket_index + 1 ) % num_buckets;
     }
     peer = ((ot_peer*)bucket_list[bucket_index].data) + bucket_offset;
-    WRITE32(r+=4,0,READ32(peer,0));
-    WRITE16(r+=2,0,READ16(peer,4));
+    WRITE32(r,0,READ32(peer,0));
+    WRITE16(r,4,READ16(peer,4));
+    r+=6;
   }
   return r - reply;
 }
@@ -294,7 +296,7 @@ size_t return_tcp_scrape_for_torrent( ot_hash *hash_list, int amount, char *repl
       } else {
         int j;
         *r++='2';*r++='0';*r++=':';
-        for(j=0;j<20;j+=4) WRITE32(r+=4,0,READ32(hash,j));
+        for(j=0;j<20;j+=4) WRITE32(r,j,READ32(hash,j)); r += 20;
         r += sprintf( r, "d8:completei%zde10:downloadedi%zde10:incompletei%zdee",
           torrent->peer_list->seed_count, torrent->peer_list->down_count, torrent->peer_list->peer_count-torrent->peer_list->seed_count );
       }