aboutsummaryrefslogtreecommitdiffstats
path: root/main/libuv/revert-test-udp-multicast-join-1.31.patch
blob: 236f4d440a645106fb24215a400067007328f21e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
From a3777bc180b1dd2233d27abab35451f7bcb3b2b4 Mon Sep 17 00:00:00 2001
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 | 74 ++++++++++------------------------
 1 file changed, 22 insertions(+), 52 deletions(-)

diff --git a/test/test-udp-multicast-join.c b/test/test-udp-multicast-join.c
index 6bac072d..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,35 +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);
-
-    r = uv_udp_set_source_membership(&server, MULTICAST_ADDR, NULL, source_addr, UV_JOIN_GROUP);
-    ASSERT(r == 0);
-
-    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);
@@ -148,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);
@@ -170,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.23.0