]> infiniteadaptability.org Git - seeder/commitdiff
...
authoralex <[email protected]>
Fri, 1 Apr 2022 01:02:33 +0000 (18:02 -0700)
committeralex <[email protected]>
Fri, 1 Apr 2022 01:02:33 +0000 (18:02 -0700)
inc/net.h
src/net/expected.c
src/peer/bitfield.c
src/peer/request.c

index e5f21c744cdb146ae597a4496fe0967eac71f7a3..96a85e35c77f2a357a2e41be3ebd0d978f83b7ff 100644 (file)
--- a/inc/net.h
+++ b/inc/net.h
@@ -36,6 +36,13 @@ struct net_info {
        hints.ai_next = NULL; \
 }
 
+#define BYTES_TO_UINT32_T(x) \
+       (uint32_t) \
+       (x[0]<<24) + \
+       (x[1]<<16) + \
+       (x[2]<<8) + \
+       x[3]
+
 int net_cache(void**,size_t*,void*,size_t);
 ssize_t net_expected(struct peer*,enum peer_message*);
 void net_handler(int,struct peer*);
index 9a4ba5ba264c6cda5ae09f13b886822442860c9a..6f2507b38dd0e776bcb5e28e9d06f8b969169968 100644 (file)
@@ -33,11 +33,7 @@ ssize_t net_expected(struct peer *info, enum peer_message *type) {
        
        if(buf[4]!=0xff) { (*type) = (uint8_t)buf[4]; }
 
-       i = 0;
-       for(size_t j=0;j<4;j++) {
-               i <<= 8;
-               i += buf[j];
-       }
+       i = BYTES_TO_UINT32_T(buf);
 
        return i+4;
 }
index 1c3e8eb194cbc1655349878ebaa89564d9cfaec7..cb79765350869790f17ee45450cd9f1c40a2e163 100644 (file)
@@ -1,7 +1,17 @@
 #include<peer.h>
 
 int peer_bitfield(struct peer *info) {
-       return -1;
+       uint8_t *buf;
+       buf = malloc(info->bitfield_size);
+       if(NULL==buf) { return -1; }
+
+       memset(buf,0xff,info->bitfield_size);
+
+       if(net_send(info,buf,info->bitfield_size)<0) { return -1; }
+
+       free(buf);
+
+       return 1;
 }
 
 int peer_bitfield_init(struct peer *info, size_t pieces) {
index 82a527b5a88fb85a523db87374af209796fd30e4..d7ce11dd611c512c17222c785ee17d0bfadf334d 100644 (file)
@@ -5,5 +5,24 @@ int peer_request(struct peer *info) {
 }
 
 int peer_request_received(struct peer *info, ssize_t len) {
+       unsigned char buf[17];
+//     struct peer_request *req;
+//     unsigned char *p;
+//     size_t index, begin, length;
+       
+       if(net_wait(info,buf,17)<0) { return -1; }
+       if(info->in!=NULL) { return 0; }
+
+/*     if(peer_request_init(&req)<0) { return -1; }
+
+       p = &(buf[5]);
+       req->index = BYTES_TO_UINT32_T(p);
+       p = &(buf[9]);
+       req->begin = BYTES_TO_UINT32_T(p);
+       p = &(buf[13]);
+       req->length = BYTES_TO_UINT32_T(p);
+
+       if(peer_piece_queue(info,req)<0) { return -1; }
+*/
        return -1;
 }