diff --git a/README.md b/README.md
index d3d336f..45d7f4e 100644
--- a/README.md
+++ b/README.md
@@ -5,3 +5,14 @@ getting started: https://github.com/ipfs/specs/blob/master/overviews/implement-i
specifications: https://github.com/ipfs/specs
getting started: https://github.com/ipfs/community/issues/177
libp2p: https://github.com/libp2p/specs
+
+Prerequisites: To compile the C version you will need:
+lmdb https://github.com/jmjatlanta/lmdb
+c-protobuf https://github.com/kenCode/c-protobuf
+c-multihash https://github.com/kenCode/c-multihash
+c-multiaddr https://github.com/kenCode/c-multiaddr
+c-libp2p https://github.com/kenCode/c-libp2p
+
+And of course this project at https://github.com/kenCode/c-ipfs
+
+The compilation at this point is simple, but not very flexible. Place all of these projects in a directory. Compile all (the order above is recommended) by going into each one and running "make all".
diff --git a/core/daemon.c b/core/daemon.c
index eeb6cf4..dadfeab 100644
--- a/core/daemon.c
+++ b/core/daemon.c
@@ -6,6 +6,7 @@
#include "libp2p/net/p2pnet.h"
#include "libp2p/peer/peerstore.h"
#include "ipfs/core/daemon.h"
+#include "ipfs/core/null.h" // for ipfs_null_shutdown
#include "ipfs/core/ipfs_node.h"
#include "ipfs/core/bootstrap.h"
#include "ipfs/repo/fsrepo/fs_repo.h"
@@ -18,6 +19,9 @@ int ipfs_daemon_start(char* repo_path) {
struct IpfsNodeListenParams listen_param;
struct MultiAddress* ma = NULL;
+ // Debugging JMJ
+ libp2p_logger_add_class("null");
+
libp2p_logger_info("daemon", "Initializing daemon...\n");
struct IpfsNode* local_node = NULL;
diff --git a/core/null.c b/core/null.c
index c13240e..45b7be6 100644
--- a/core/null.c
+++ b/core/null.c
@@ -61,7 +61,7 @@ void ipfs_null_connection (void *ptr)
libp2p_logger_log("null", LOGLEVEL_INFO, "Connection %d, count %d\n", connection_param->file_descriptor, *(connection_param->count));
- if (libp2p_net_multistream_negotiate(session)) {
+ if (libp2p_net_multistream_negotiate(&session)) {
for(;;) {
// check if they're looking for an upgrade (i.e. secio)
@@ -86,6 +86,7 @@ void ipfs_null_connection (void *ptr)
free(results);
break;
}
+ libp2p_logger_debug("null", "Secure IO connection successful.\n");
} else if (protocol_compare(results, bytes_read, "/nodeio")) {
libp2p_logger_debug("null", "Attempting a nodeio connection.\n");
if (!libp2p_nodeio_handshake(&session)) {
@@ -153,7 +154,7 @@ void ipfs_null_connection (void *ptr)
return;
}
-void *ipfs_null_listen (void *ptr)
+void* ipfs_null_listen (void *ptr)
{
int socketfd, s, count = 0;
threadpool thpool = thpool_init(25);
@@ -170,6 +171,7 @@ void *ipfs_null_listen (void *ptr)
libp2p_logger_error("null", "Ipfs listening on %d\n", listen_param->port);
for (;;) {
+ libp2p_logger_debug("null", "Attempting socket read\n");
int numDescriptors = socket_read_select4(socketfd, 2);
if (null_shutting_down) {
break;
diff --git a/core/ping.c b/core/ping.c
index 0a423ab..7d09267 100644
--- a/core/ping.c
+++ b/core/ping.c
@@ -96,10 +96,13 @@ int ipfs_ping (int argc, char **argv)
}
gettimeofday(&time2, NULL);
+ // calculate microseconds
time_us = (time2.tv_sec - time1.tv_sec) * 1000000;
time_us += (time2.tv_usec - time1.tv_usec);
fprintf (stderr, "Pong received: time=%d.%03d ms\n", time_us / 1000, time_us % 1000);
- usleep(1000000 - time_us);
+ if (time_us < 1000000) { // if the ping took less than a second...
+ sleep(1);
+ }
}
retVal = 1;
diff --git a/include/ipfs/routing/routing.h b/include/ipfs/routing/routing.h
index 59188dc..d32cd84 100644
--- a/include/ipfs/routing/routing.h
+++ b/include/ipfs/routing/routing.h
@@ -73,7 +73,7 @@ struct IpfsRouting {
* @returns true(1) on success, otherwise false(0)
*/
int (*Bootstrap) (struct IpfsRouting*);
- void (*Listen) (void*);
+ void* (*Listen) (void*);
int (*Shutdown) ();
};
typedef struct IpfsRouting ipfs_routing;
diff --git a/test/node/test_node.h b/test/node/test_node.h
index ccd57e2..aca3e34 100644
--- a/test/node/test_node.h
+++ b/test/node/test_node.h
@@ -1,5 +1,9 @@
#include "ipfs/merkledag/node.h"
+/***
+ * Testing of storage nodes. Nodes can be directories, files, or sections of a file.
+ */
+
int test_node() {
//Variables of link:
char * name = "Alex";