Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit f44f335

Browse filesBrowse files
danbevrvagg
authored andcommitted
src: extract common sockaddr creation code
This commit extracts code to create sockaddr which is shared by both UDPWrap::DoBind and UDPWrap::DoSend. PR-URL: #26070 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
1 parent 2335bcd commit f44f335
Copy full SHA for f44f335

File tree

Expand file treeCollapse file tree

1 file changed

+19
-32
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+19
-32
lines changed
Open diff view settings
Collapse file

‎src/udp_wrap.cc‎

Copy file name to clipboardExpand all lines: src/udp_wrap.cc
+19-32Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,19 @@ void UDPWrap::GetFD(const FunctionCallbackInfo<Value>& args) {
175175
args.GetReturnValue().Set(fd);
176176
}
177177

178+
int sockaddr_for_family(int address_family,
179+
const char* address,
180+
const unsigned short port,
181+
struct sockaddr_storage* addr) {
182+
switch (address_family) {
183+
case AF_INET:
184+
return uv_ip4_addr(address, port, reinterpret_cast<sockaddr_in*>(addr));
185+
case AF_INET6:
186+
return uv_ip6_addr(address, port, reinterpret_cast<sockaddr_in6*>(addr));
187+
default:
188+
CHECK(0 && "unexpected address family");
189+
}
190+
}
178191

179192
void UDPWrap::DoBind(const FunctionCallbackInfo<Value>& args, int family) {
180193
UDPWrap* wrap;
@@ -191,24 +204,11 @@ void UDPWrap::DoBind(const FunctionCallbackInfo<Value>& args, int family) {
191204
if (!args[1]->Uint32Value(ctx).To(&port) ||
192205
!args[2]->Uint32Value(ctx).To(&flags))
193206
return;
194-
char addr[sizeof(sockaddr_in6)];
195-
int err;
196-
197-
switch (family) {
198-
case AF_INET:
199-
err = uv_ip4_addr(*address, port, reinterpret_cast<sockaddr_in*>(&addr));
200-
break;
201-
case AF_INET6:
202-
err = uv_ip6_addr(*address, port, reinterpret_cast<sockaddr_in6*>(&addr));
203-
break;
204-
default:
205-
CHECK(0 && "unexpected address family");
206-
ABORT();
207-
}
208-
207+
struct sockaddr_storage addr_storage;
208+
int err = sockaddr_for_family(family, address.out(), port, &addr_storage);
209209
if (err == 0) {
210210
err = uv_udp_bind(&wrap->handle_,
211-
reinterpret_cast<const sockaddr*>(&addr),
211+
reinterpret_cast<const sockaddr*>(&addr_storage),
212212
flags);
213213
}
214214

@@ -392,27 +392,14 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) {
392392

393393
req_wrap->msg_size = msg_size;
394394

395-
char addr[sizeof(sockaddr_in6)];
396-
int err;
397-
398-
switch (family) {
399-
case AF_INET:
400-
err = uv_ip4_addr(*address, port, reinterpret_cast<sockaddr_in*>(&addr));
401-
break;
402-
case AF_INET6:
403-
err = uv_ip6_addr(*address, port, reinterpret_cast<sockaddr_in6*>(&addr));
404-
break;
405-
default:
406-
CHECK(0 && "unexpected address family");
407-
ABORT();
408-
}
409-
395+
struct sockaddr_storage addr_storage;
396+
int err = sockaddr_for_family(family, address.out(), port, &addr_storage);
410397
if (err == 0) {
411398
err = req_wrap->Dispatch(uv_udp_send,
412399
&wrap->handle_,
413400
*bufs,
414401
count,
415-
reinterpret_cast<const sockaddr*>(&addr),
402+
reinterpret_cast<const sockaddr*>(&addr_storage),
416403
OnSend);
417404
}
418405

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.