]> git.meshlink.io Git - utcp/commitdiff
Fix warnings when compiling with -Wall -W.
authorGuus Sliepen <guus@meshlink.io>
Mon, 2 Oct 2017 20:24:32 +0000 (22:24 +0200)
committerGuus Sliepen <guus@meshlink.io>
Mon, 2 Oct 2017 20:24:32 +0000 (22:24 +0200)
selftest.c
test.c
utcp.c

index 8abf4cc6fdd56e3081ac0762c6bef78116ab489a..48d397c3d876ce1efaf3f20b4166a955a8af050b 100644 (file)
@@ -30,6 +30,7 @@ ssize_t do_recv(struct utcp_connection *x, const void *data, size_t len) {
 }
 
 bool do_pre_accept(struct utcp *utcp, uint16_t port) {
+       (void)utcp;
        fprintf(stderr, "pre-accept\n");
        if(port != 7)
                return false;
@@ -37,6 +38,7 @@ bool do_pre_accept(struct utcp *utcp, uint16_t port) {
 }
 
 void do_accept(struct utcp_connection *c, uint16_t port) {
+       (void)port;
        fprintf(stderr, "accept\n");
        utcp_accept(c, do_recv, NULL);
 }
@@ -55,6 +57,9 @@ ssize_t do_send(struct utcp *utcp, const void *data, size_t len) {
 }
 
 int main(int argc, char *argv[]) {
+       (void)argc;
+       (void)argv;
+
        srand(time(NULL));
 
        a = utcp_init(do_accept, do_pre_accept, do_send, NULL);
diff --git a/test.c b/test.c
index 4e65c1046344ab692d3489ef0f12cd3e763a9715..14747ffaeae9be4970019c67ad3961663de26b9e 100644 (file)
--- a/test.c
+++ b/test.c
@@ -47,10 +47,11 @@ void debug(const char *format, ...) {
        va_end(ap);
 }
 #else
-#define debug(...)
+#define debug(...) do {} while(0)
 #endif
 
 ssize_t do_recv(struct utcp_connection *c, const void *data, size_t len) {
+       (void)c;
        if(!data || !len) {
                if(errno) {
                        debug("Error: %s\n", strerror(errno));
@@ -76,6 +77,7 @@ ssize_t do_recv(struct utcp_connection *c, const void *data, size_t len) {
 }
 
 void do_accept(struct utcp_connection *nc, uint16_t port) {
+       (void)port;
        utcp_accept(nc, do_recv, NULL);
        c = nc;
        utcp_set_accept_cb(c->utcp, NULL, NULL);
diff --git a/utcp.c b/utcp.c
index 57b98135ad482b5cb29dbe6f9549db6ac6adaeaa..d990081a30cef77b858c2c5e300122f910a6c49f 100644 (file)
--- a/utcp.c
+++ b/utcp.c
@@ -1,6 +1,6 @@
 /*
     utcp.c -- Userspace TCP
-    Copyright (C) 2014 Guus Sliepen <guus@tinc-vpn.org>
+    Copyright (C) 2014-2017 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -103,8 +103,8 @@ static void print_packet(struct utcp *utcp, const char *dir, const void *pkt, si
        debug("\n");
 }
 #else
-#define debug(...)
-#define print_packet(...)
+#define debug(...) do {} while(0)
+#define print_packet(...) do {} while(0)
 #endif
 
 static void set_state(struct utcp_connection *c, enum state state) {
@@ -131,12 +131,6 @@ static bool is_reliable(struct utcp_connection *c) {
        return c->flags & UTCP_RELIABLE;
 }
 
-static inline void list_connections(struct utcp *utcp) {
-       debug("%p has %d connections:\n", utcp, utcp->nconnections);
-       for(int i = 0; i < utcp->nconnections; i++)
-               debug("  %u -> %u state %s\n", utcp->connections[i]->src, utcp->connections[i]->dst, strstate[utcp->connections[i]->state]);
-}
-
 static int32_t seqdiff(uint32_t a, uint32_t b) {
        return a - b;
 }
@@ -342,6 +336,13 @@ static struct utcp_connection *allocate_connection(struct utcp *utcp, uint16_t s
        return c;
 }
 
+static inline uint32_t absdiff(uint32_t a, uint32_t b) {
+       if(a > b)
+               return a - b;
+       else
+               return b - a;
+}
+
 // Update RTT variables. See RFC 6298.
 static void update_rtt(struct utcp_connection *c, uint32_t rtt) {
        if(!rtt) {
@@ -356,7 +357,7 @@ static void update_rtt(struct utcp_connection *c, uint32_t rtt) {
                utcp->rttvar = rtt / 2;
                utcp->rto = rtt + max(2 * rtt, CLOCK_GRANULARITY);
        } else {
-               utcp->rttvar = (utcp->rttvar * 3 + abs(utcp->srtt - rtt)) / 4;
+               utcp->rttvar = (utcp->rttvar * 3 + absdiff(utcp->srtt, rtt)) / 4;
                utcp->srtt = (utcp->srtt * 7 + rtt) / 8;
                utcp->rto = utcp->srtt + max(utcp->rttvar, CLOCK_GRANULARITY);
        }
@@ -709,7 +710,7 @@ static void handle_out_of_order(struct utcp_connection *c, uint32_t offset, cons
        debug("out of order packet, offset %u\n", offset);
        // Packet loss or reordering occured. Store the data in the buffer.
        ssize_t rxd = buffer_put_at(&c->rcvbuf, offset, data, len);
-       if(rxd < len)
+       if(rxd < 0 || (size_t)rxd < len)
                abort();
 
        // Make note of where we put it.
@@ -760,7 +761,7 @@ static void handle_in_order(struct utcp_connection *c, const void *data, size_t
 
        if(c->recv) {
                ssize_t rxd = c->recv(c, data, len);
-               if(rxd != len) {
+               if(rxd < 0 || (size_t)rxd != len) {
                        // TODO: handle the application not accepting all data.
                        abort();
                }
@@ -998,7 +999,7 @@ ssize_t utcp_recv(struct utcp *utcp, const void *data, size_t len) {
 
                // cut already accepted front overlapping
                if(rcv_offset < 0) {
-                       acceptable = len > -rcv_offset;
+                       acceptable = len > (size_t)-rcv_offset;
                        if(acceptable) {
                                data -= rcv_offset;
                                len += rcv_offset;