From 36b94fb78670b6e6c9fb3bc121df70d4eefd76b8 Mon Sep 17 00:00:00 2001
From: Mark Harfouche <mark.harfouche@gmail.com>
Date: Mon, 25 May 2020 15:29:45 -0400
Subject: [PATCH] From: Min RK <benjaminrk@gmail.com> Date: Tue, 1 Oct 2019
 16:26:16 +0200 Subject: [PATCH] revert test-udp-multicast-join to 1.31

new test fails on macOS

created with

```
git checkout v1.32.0
git checkout v1.31.0 test/test-udp-multicast-join.c
git commit
git format-patch v1.32.0
```
---
 test/test-udp-multicast-join.c | 76 ++++++++++------------------------
 1 file changed, 22 insertions(+), 54 deletions(-)

diff --git a/test/test-udp-multicast-join.c b/test/test-udp-multicast-join.c
index cb3ff871..053d2f79 100644
--- a/test/test-udp-multicast-join.c
+++ b/test/test-udp-multicast-join.c
@@ -29,12 +29,8 @@
 #define CHECK_HANDLE(handle) \
   ASSERT((uv_udp_t*)(handle) == &server || (uv_udp_t*)(handle) == &client)
 
-#define MULTICAST_ADDR "239.255.0.1"
-
 static uv_udp_t server;
 static uv_udp_t client;
-static uv_udp_send_t req;
-static uv_udp_send_t req_ss;
 
 static int cl_recv_cb_called;
 
@@ -66,26 +62,7 @@ static void sv_send_cb(uv_udp_send_t* req, int status) {
 
   sv_send_cb_called++;
 
-  if (sv_send_cb_called == 2)
-    uv_close((uv_handle_t*) req->handle, close_cb);
-}
-
-
-static int do_send(uv_udp_send_t* send_req) {
-  uv_buf_t buf;
-  struct sockaddr_in addr;
-  
-  buf = uv_buf_init("PING", 4);
-
-  ASSERT(0 == uv_ip4_addr(MULTICAST_ADDR, TEST_PORT, &addr));
-
-  /* client sends "PING" */
-  return uv_udp_send(send_req,
-                     &client,
-                     &buf,
-                     1,
-                     (const struct sockaddr*) &addr,
-                     sv_send_cb);
+  uv_close((uv_handle_t*) req->handle, close_cb);
 }
 
 
@@ -97,6 +74,8 @@ static void cl_recv_cb(uv_udp_t* handle,
   CHECK_HANDLE(handle);
   ASSERT(flags == 0);
 
+  cl_recv_cb_called++;
+
   if (nread < 0) {
     ASSERT(0 && "unexpected error");
   }
@@ -111,37 +90,18 @@ static void cl_recv_cb(uv_udp_t* handle,
   ASSERT(nread == 4);
   ASSERT(!memcmp("PING", buf->base, nread));
 
-  cl_recv_cb_called++;
-
-  if (cl_recv_cb_called == 2) {
-    /* we are done with the server handle, we can close it */
-    uv_close((uv_handle_t*) &server, close_cb);
-  } else {
-    int r;
-    char source_addr[64];
-
-    r = uv_ip4_name((const struct sockaddr_in*)addr, source_addr, sizeof(source_addr));
-    ASSERT(r == 0);
-
-    r = uv_udp_set_membership(&server, MULTICAST_ADDR, NULL, UV_LEAVE_GROUP);
-    ASSERT(r == 0);
-
-#if !defined(__OpenBSD__) && !defined(__NetBSD__)
-    r = uv_udp_set_source_membership(&server, MULTICAST_ADDR, NULL, source_addr, UV_JOIN_GROUP);
-    ASSERT(r == 0);
-#endif
-
-    r = do_send(&req_ss);
-    ASSERT(r == 0);
-  }
+  /* we are done with the client handle, we can close it */
+  uv_close((uv_handle_t*) &client, close_cb);
 }
 
 
 TEST_IMPL(udp_multicast_join) {
   int r;
+  uv_udp_send_t req;
+  uv_buf_t buf;
   struct sockaddr_in addr;
 
-  ASSERT(0 == uv_ip4_addr("0.0.0.0", TEST_PORT, &addr));
+  ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
 
   r = uv_udp_init(uv_default_loop(), &server);
   ASSERT(r == 0);
@@ -150,19 +110,27 @@ TEST_IMPL(udp_multicast_join) {
   ASSERT(r == 0);
 
   /* bind to the desired port */
-  r = uv_udp_bind(&server, (const struct sockaddr*) &addr, 0);
+  r = uv_udp_bind(&client, (const struct sockaddr*) &addr, 0);
   ASSERT(r == 0);
 
   /* join the multicast channel */
-  r = uv_udp_set_membership(&server, MULTICAST_ADDR, NULL, UV_JOIN_GROUP);
+  r = uv_udp_set_membership(&client, "239.255.0.1", NULL, UV_JOIN_GROUP);
   if (r == UV_ENODEV)
     RETURN_SKIP("No multicast support.");
   ASSERT(r == 0);
 
-  r = uv_udp_recv_start(&server, alloc_cb, cl_recv_cb);
+  r = uv_udp_recv_start(&client, alloc_cb, cl_recv_cb);
   ASSERT(r == 0);
 
-  r = do_send(&req);
+  buf = uv_buf_init("PING", 4);
+
+  /* server sends "PING" */
+  r = uv_udp_send(&req,
+                  &server,
+                  &buf,
+                  1,
+                  (const struct sockaddr*) &addr,
+                  sv_send_cb);
   ASSERT(r == 0);
 
   ASSERT(close_cb_called == 0);
@@ -172,8 +140,8 @@ TEST_IMPL(udp_multicast_join) {
   /* run the loop till all events are processed */
   uv_run(uv_default_loop(), UV_RUN_DEFAULT);
 
-  ASSERT(cl_recv_cb_called == 2);
-  ASSERT(sv_send_cb_called == 2);
+  ASSERT(cl_recv_cb_called == 1);
+  ASSERT(sv_send_cb_called == 1);
   ASSERT(close_cb_called == 2);
 
   MAKE_VALGRIND_HAPPY();
-- 
2.26.2

