| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 70e8944 commit 5117a3e
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -373,10 +373,11 @@ void TCPWrap::Open(const FunctionCallbackInfo<Value>& args) { | |||
| 373 | 373 | } | |
| 374 | 374 | ||
| 375 | 375 | template <typename T> | |
| 376 | - void TCPWrap::Bind( | ||
| 377 | - const FunctionCallbackInfo<Value>& args, | ||
| 378 | - int family, | ||
| 379 | - std::function<int(const char* ip_address, int port, T* addr)> uv_ip_addr) { | ||
| 376 | + void TCPWrap::Bind(const FunctionCallbackInfo<Value>& args, | ||
| 377 | + int family, | ||
| 378 | + int (*uv_ip_addr)(const char* ip_address, | ||
| 379 | + int port, | ||
| 380 | + T* addr)) { | ||
| 380 | 381 | TCPWrap* wrap; | |
| 381 | 382 | ASSIGN_OR_RETURN_UNWRAP( | |
| 382 | 383 | &wrap, args.This(), args.GetReturnValue().Set(UV_EBADF)); | |
@@ -430,29 +431,18 @@ void TCPWrap::Listen(const FunctionCallbackInfo<Value>& args) { | |||
| 430 | 431 | } | |
| 431 | 432 | ||
| 432 | 433 | void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) { | |
| 433 | - CHECK(args[2]->IsUint32()); | ||
| 434 | - // explicit cast to fit to libuv's type expectation | ||
| 435 | - int port = static_cast<int>(args[2].As<Uint32>()->Value()); | ||
| 436 | - Connect<sockaddr_in>(args, [port](const char* ip_address, sockaddr_in* addr) { | ||
| 437 | - return uv_ip4_addr(ip_address, port, addr); | ||
| 438 | - }); | ||
| 434 | + Connect<sockaddr_in>(args, uv_ip4_addr); | ||
| 439 | 435 | } | |
| 440 | 436 | ||
| 441 | 437 | void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) { | |
| 442 | - Environment* env = Environment::GetCurrent(args); | ||
| 443 | - CHECK(args[2]->IsUint32()); | ||
| 444 | - int port; | ||
| 445 | - if (!args[2]->Int32Value(env->context()).To(&port)) return; | ||
| 446 | - Connect<sockaddr_in6>(args, | ||
| 447 | - [port](const char* ip_address, sockaddr_in6* addr) { | ||
| 448 | - return uv_ip6_addr(ip_address, port, addr); | ||
| 449 | - }); | ||
| 438 | + Connect<sockaddr_in6>(args, uv_ip6_addr); | ||
| 450 | 439 | } | |
| 451 | 440 | ||
| 452 | 441 | template <typename T> | |
| 453 | - void TCPWrap::Connect( | ||
| 454 | - const FunctionCallbackInfo<Value>& args, | ||
| 455 | - std::function<int(const char* ip_address, T* addr)> uv_ip_addr) { | ||
| 442 | + void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args, | ||
| 443 | + int (*uv_ip_addr)(const char* ip_address, | ||
| 444 | + int port, | ||
| 445 | + T* addr)) { | ||
| 456 | 446 | Environment* env = Environment::GetCurrent(args); | |
| 457 | 447 | ||
| 458 | 448 | TCPWrap* wrap; | |
@@ -462,14 +452,17 @@ void TCPWrap::Connect( | |||
| 462 | 452 | CHECK(args[0]->IsObject()); | |
| 463 | 453 | CHECK(args[1]->IsString()); | |
| 464 | 454 | ||
| 455 | + int port; | ||
| 456 | + if (!args[2]->Int32Value(env->context()).To(&port)) return; | ||
| 457 | + | ||
| 465 | 458 | Local<Object> req_wrap_obj = args[0].As<Object>(); | |
| 466 | 459 | node::Utf8Value ip_address(env->isolate(), args[1]); | |
| 467 | 460 | ||
| 468 | 461 | ERR_ACCESS_DENIED_IF_INSUFFICIENT_PERMISSIONS( | |
| 469 | 462 | env, permission::PermissionScope::kNet, ip_address.ToStringView(), args); | |
| 470 | 463 | ||
| 471 | 464 | T addr; | |
| 472 | - int err = uv_ip_addr(*ip_address, &addr); | ||
| 465 | + int err = uv_ip_addr(*ip_address, port, &addr); | ||
| 473 | 466 | ||
| 474 | 467 | if (err == 0) { | |
| 475 | 468 | AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -83,13 +83,16 @@ class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> { | |||
| 83 | 83 | static void Connect6(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 84 | 84 | template <typename T> | |
| 85 | 85 | static void Connect(const v8::FunctionCallbackInfo<v8::Value>& args, | |
| 86 | - std::function<int(const char* ip_address, T* addr)> uv_ip_addr); | ||
| 86 | + int (*uv_ip_addr)(const char* ip_address, | ||
| 87 | + int port, | ||
| 88 | + T* addr)); | ||
| 87 | 89 | static void Open(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 88 | 90 | template <typename T> | |
| 89 | - static void Bind( | ||
| 90 | - const v8::FunctionCallbackInfo<v8::Value>& args, | ||
| 91 | - int family, | ||
| 92 | - std::function<int(const char* ip_address, int port, T* addr)> uv_ip_addr); | ||
| 91 | + static void Bind(const v8::FunctionCallbackInfo<v8::Value>& args, | ||
| 92 | + int family, | ||
| 93 | + int (*uv_ip_addr)(const char* ip_address, | ||
| 94 | + int port, | ||
| 95 | + T* addr)); | ||
| 93 | 96 | static void Reset(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 94 | 97 | int Reset(v8::Local<v8::Value> close_callback = v8::Local<v8::Value>()); | |
| 95 | 98 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments