]> git.meshlink.io Git - meshlink/commitdiff
Register the signal passing proper data
authorSaverio Proto <zioproto@gmail.com>
Sun, 1 Jun 2014 15:04:26 +0000 (17:04 +0200)
committerSaverio Proto <zioproto@gmail.com>
Sun, 1 Jun 2014 15:04:26 +0000 (17:04 +0200)
src/meshlink.c
src/meshlink.h
src/net.c

index 122afa58dd2763ed6d6dc3e102295def5ae62aae..3790117939fee5f5503a45da16df0cb0c9a08218 100644 (file)
@@ -862,9 +862,15 @@ bool meshlink_send(meshlink_handle_t *mesh, meshlink_node_t *destination, const
        signal_trigger(&(mesh->loop),&(mesh->datafromapp));
 }
 
-bool meshlink_send_from_queue (meshlink_handle_t *mesh,outpacketqueue_t* p) {
+bool meshlink_send_from_queue(meshlink_handle_t *mesh) {
        vpn_packet_t packet;
        meshlink_packethdr_t *hdr = (meshlink_packethdr_t *)packet.data;
+
+       outpacketqueue_t* p = list_get_tail(mesh->outpacketqueue);
+       if (p)
+       list_delete_tail(mesh->outpacketqueue);
+       else return false;
+
        if (sizeof(meshlink_packethdr_t) + p->len > MAXSIZE) {
                //log something
                return false;
index 342657db0f03fc06852827340a8a0680e219f044..076c7ac7872b65a31fa3c618c885878a0e5b046b 100644 (file)
@@ -196,7 +196,7 @@ extern void meshlink_set_log_cb(meshlink_handle_t *mesh, meshlink_log_level_t le
  */
 extern bool meshlink_send(meshlink_handle_t *mesh, meshlink_node_t *destination, const void *data, unsigned int len);
 
-extern bool meshlink_send_from_queue (meshlink_handle_t *mesh,outpacketqueue_t* p);
+extern bool meshlink_send_from_queue (meshlink_handle_t *mesh);
 
 /// Get a handle for a specific node.
 /** This function returns a handle for the node with the given name.
index 2c24f10c6d8c6e41d7cc5e6df29ca8bf6cee09f0..39bd2dc49b7717913c7d997ac7228045239fd302 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -271,7 +271,7 @@ int main_loop(meshlink_handle_t *mesh) {
 
        //Add signal handler
        mesh->datafromapp.signum = 0;
-       signal_add(&(mesh->loop),&(mesh->datafromapp), meshlink_send_from_queue,NULL, mesh->datafromapp.signum);
+       signal_add(&(mesh->loop),&(mesh->datafromapp), meshlink_send_from_queue,mesh, mesh->datafromapp.signum);
 
        if(!event_loop_run(&mesh->loop)) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Error while waiting for input: %s", strerror(errno));