X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=utcp.c;h=13f46584484bef5fd71ae74a77792671c1fb7637;hb=16ecd6d75bfabb97193581bcc8095652759cdb8e;hp=f2354b1b8d181fd103edcfff3b7b4c7bbf44b9ec;hpb=ab52e5aeafdda3721a3843f489f2c43c05c45033;p=utcp diff --git a/utcp.c b/utcp.c index f2354b1..13f4658 100644 --- a/utcp.c +++ b/utcp.c @@ -173,7 +173,7 @@ static ssize_t buffer_put_at(struct buffer *buf, size_t offset, const void *data } else { do { newsize *= 2; - } while(newsize < buf->used + len); + } while(newsize < required); } if(newsize > buf->maxsize) newsize = buf->maxsize; @@ -857,8 +857,10 @@ ssize_t utcp_recv(struct utcp *utcp, const void *data, size_t len) { // In case this is for a CLOSED connection, ignore the packet. // TODO: make it so incoming packets can never match a CLOSED connection. - if(c->state == CLOSED) + if(c->state == CLOSED) { + debug("Got packet for closed connection\n"); return 0; + } // It is for an existing connection. @@ -1294,7 +1296,7 @@ int utcp_shutdown(struct utcp_connection *c, int dir) { } int utcp_close(struct utcp_connection *c) { - if(utcp_shutdown(c, SHUT_RDWR)) + if(utcp_shutdown(c, SHUT_RDWR) && errno != ENOTCONN) return -1; c->recv = NULL; c->poll = NULL;