X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=sidebyside;f=src%2Futcp-test.c;h=a7c0534f5703530b3d3204bea19012be5a96c93f;hb=57d7814d3c211a46f6a6fe7dd995307cb9a6f41e;hp=992e6f0f9b1952673705a5015601e866ceb12bda;hpb=8d4b96efb7955eaa96174af4804597f92e124041;p=meshlink diff --git a/src/utcp-test.c b/src/utcp-test.c index 992e6f0f..a7c0534f 100644 --- a/src/utcp-test.c +++ b/src/utcp-test.c @@ -1,16 +1,25 @@ -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include -#include -#include -#include +/* + utcp-test.c -- Test application for UTCP + Copyright (C) 2014-2020 Guus Sliepen + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "system.h" #include - +#include #include "utcp.h" @@ -96,8 +105,8 @@ static void do_accept(struct utcp_connection *nc, uint16_t port) { c = nc; if(bufsize) { - utcp_set_sndbuf(c, bufsize); - utcp_set_rcvbuf(c, bufsize); + utcp_set_sndbuf(c, NULL, bufsize); + utcp_set_rcvbuf(c, NULL, bufsize); } utcp_set_accept_cb(c->utcp, NULL, NULL); @@ -148,11 +157,17 @@ static ssize_t do_send(struct utcp *utcp, const void *data, size_t len) { } static void set_mtu(struct utcp *u, int s) { +#ifdef IP_MTU + if(!mtu) { socklen_t optlen = sizeof(mtu); getsockopt(s, IPPROTO_IP, IP_MTU, &mtu, &optlen); } +#else + (void)s; +#endif + if(!mtu || mtu == 65535) { mtu = 1500; } @@ -255,6 +270,11 @@ int main(int argc, char *argv[]) { return 1; } } else { +#ifdef SO_NOSIGPIPE + int nosigpipe = 1; + setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, &nosigpipe, sizeof(nosigpipe)); +#endif + if(connect(s, ai->ai_addr, ai->ai_addrlen)) { debug("Could not connect: %s\n", strerror(errno)); return 1; @@ -279,8 +299,8 @@ int main(int argc, char *argv[]) { c = utcp_connect_ex(u, 1, do_recv, NULL, flags); if(bufsize) { - utcp_set_sndbuf(c, bufsize); - utcp_set_rcvbuf(c, bufsize); + utcp_set_sndbuf(c, NULL, bufsize); + utcp_set_rcvbuf(c, NULL, bufsize); } }