From a3725374ca3a38fd80d10bdab92e5f36f2f18854 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 17 Jun 2017 07:35:09 -0600 Subject: [PATCH] rktio: repair for UDP disconnect --- racket/src/racket/src/network.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/racket/src/racket/src/network.c b/racket/src/racket/src/network.c index ade238836f..85ea0a74de 100644 --- a/racket/src/racket/src/network.c +++ b/racket/src/racket/src/network.c @@ -1893,13 +1893,15 @@ static Scheme_Object *udp_bind_or_connect(const char *name, int argc, Scheme_Obj if (SCHEME_FALSEP(argv[1]) && SCHEME_FALSEP(argv[2])) { /* DISCONNECT */ - if (!rktio_udp_disconnect(scheme_rktio, udp->s)) { - scheme_raise_exn(MZEXN_FAIL_NETWORK, - "%s: can't disconnect\n" - " system error: %R", - name); + if (udp->connected) { + if (!rktio_udp_disconnect(scheme_rktio, udp->s)) { + scheme_raise_exn(MZEXN_FAIL_NETWORK, + "%s: can't disconnect\n" + " system error: %R", + name); + } + udp->connected = 0; } - udp->connected = 0; return scheme_void; }