diff --git a/core/null.c b/core/null.c index 2b99680..6867891 100644 --- a/core/null.c +++ b/core/null.c @@ -216,7 +216,7 @@ void* ipfs_null_listen (void *ptr) libp2p_logger_error("null", "Ipfs listening on %d\n", listen_param->port); for (;;) { - libp2p_logger_debug("null", "%s Attempting socket read\n", listen_param->local_node->identity->peer->id); + libp2p_logger_debug("null", "%s Attempting socket read with fd %d.\n", listen_param->local_node->identity->peer->id, socketfd); int numDescriptors = socket_read_select4(socketfd, 2); if (null_shutting_down) { libp2p_logger_debug("null", "%s null_listen shutting down.\n", listen_param->local_node->identity->peer->id); diff --git a/exchange/bitswap/message.c b/exchange/bitswap/message.c index 189de96..aaeb01d 100644 --- a/exchange/bitswap/message.c +++ b/exchange/bitswap/message.c @@ -4,6 +4,7 @@ #include "libp2p/utils/vector.h" #include "ipfs/blocks/block.h" #include "ipfs/exchange/bitswap/message.h" +#include "ipfs/exchange/bitswap/peer_request_queue.h" /*** * Allocate memory for a struct BitswapBlock @@ -656,15 +657,15 @@ int ipfs_bitswap_message_add_wantlist_items(struct BitswapMessage* message, stru return 0; } for(int i = 0; i < cids->total; i++) { - const struct Cid* cid = (const struct Cid*)libp2p_utils_vector_get(cids, i); + const struct CidEntry* cidEntry = (const struct CidEntry*)libp2p_utils_vector_get(cids, i); struct WantlistEntry* entry = ipfs_bitswap_wantlist_entry_new(); - entry->block_size = ipfs_cid_protobuf_encode_size(cid); + entry->block_size = ipfs_cid_protobuf_encode_size(cidEntry->cid); entry->block = (unsigned char*) malloc(entry->block_size); - if (!ipfs_cid_protobuf_encode(cid, entry->block, entry->block_size, &entry->block_size)) { + if (!ipfs_cid_protobuf_encode(cidEntry->cid, entry->block, entry->block_size, &entry->block_size)) { // TODO: we should do more than return a half-baked list return 0; } - entry->cancel = 0; + entry->cancel = cidEntry->cancel; entry->priority = 1; libp2p_utils_vector_add(message->wantlist->entries, entry); } diff --git a/test/exchange/test_bitswap.h b/test/exchange/test_bitswap.h index 5ecd7f7..d4e90db 100644 --- a/test/exchange/test_bitswap.h +++ b/test/exchange/test_bitswap.h @@ -269,6 +269,8 @@ int test_bitswap_retrieve_file_known_remote() { int remote_port = 4001; char* remote_peer_id = "QmZVoAZGFfinB7MQQiDzB84kWaDPQ95GLuXdemJFM2r9b4"; char* hello_world_hash = "QmTUFTVgkHT3Qdd9ospVjSLi2upd6VdkeNXZQH66cVmzja"; + pthread_t thread; + int thread_started = 0; /* libp2p_logger_add_class("dht_protocol"); @@ -304,6 +306,13 @@ int test_bitswap_retrieve_file_known_remote() { multiaddress_free(ma_peer1); ipfs_node_online_new(ipfs_path, &ipfs_node2); + // start the daemon in a separate thread + if (pthread_create(&thread, NULL, test_routing_daemon_start, (void*)ipfs_path) < 0) { + libp2p_logger_error("test_bitswap", "Unable to start thread 2\n"); + goto exit; + } + thread_started = 1; + if (!ipfs_cid_decode_hash_from_base58((unsigned char*)hello_world_hash, strlen(hello_world_hash), &cid)) goto exit; @@ -320,6 +329,9 @@ int test_bitswap_retrieve_file_known_remote() { retVal = 1; exit: + ipfs_daemon_stop(); + if (thread_started) + pthread_join(thread, NULL); if (peer_id_1 != NULL) free(peer_id_1); if (peer_id_2 != NULL)