| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 766430c commit cb1a21b
15 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -73,7 +73,7 @@ RB_HEAD(uv_timer_tree_s, uv_timer_s); | |||
| 73 | 73 | uv_prepare_t* next_prepare_handle; \ | |
| 74 | 74 | uv_check_t* next_check_handle; \ | |
| 75 | 75 | uv_idle_t* next_idle_handle; \ | |
| 76 | - ares_channel ares_channel; \ | ||
| 76 | + ares_channel ares_chan; \ | ||
| 77 | 77 | int ares_active_sockets; \ | |
| 78 | 78 | uv_timer_t ares_polling_timer; \ | |
| 79 | 79 | /* Last error code */ \ | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -415,6 +415,8 @@ int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle); | |||
| 415 | 415 | ||
| 416 | 416 | int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in); | |
| 417 | 417 | int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6); | |
| 418 | + int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name, int* namelen); | ||
| 419 | + int uv_tcp_getpeername(uv_tcp_t* handle, struct sockaddr* name, int* namelen); | ||
| 418 | 420 | ||
| 419 | 421 | /* | |
| 420 | 422 | * uv_tcp_connect, uv_tcp_connect6 | |
@@ -436,9 +438,6 @@ struct uv_connect_s { | |||
| 436 | 438 | }; | |
| 437 | 439 | ||
| 438 | 440 | ||
| 439 | - int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen); | ||
| 440 | - | ||
| 441 | - | ||
| 442 | 441 | /* | |
| 443 | 442 | * UDP support. | |
| 444 | 443 | */ | |
@@ -521,6 +520,7 @@ int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr, unsigned flags); | |||
| 521 | 520 | * 0 on success, -1 on error. | |
| 522 | 521 | */ | |
| 523 | 522 | int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned flags); | |
| 523 | + int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen); | ||
| 524 | 524 | ||
| 525 | 525 | /* | |
| 526 | 526 | * Send data. If the socket has not previously been bound with `uv_udp_bind` | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -300,27 +300,6 @@ void uv__next(EV_P_ ev_idle* watcher, int revents) { | |||
| 300 | 300 | } | |
| 301 | 301 | ||
| 302 | 302 | ||
| 303 | - int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen) { | ||
| 304 | - socklen_t socklen; | ||
| 305 | - int saved_errno; | ||
| 306 | - | ||
| 307 | - /* Don't clobber errno. */ | ||
| 308 | - saved_errno = errno; | ||
| 309 | - | ||
| 310 | - /* sizeof(socklen_t) != sizeof(int) on some systems. */ | ||
| 311 | - socklen = (socklen_t)*namelen; | ||
| 312 | - | ||
| 313 | - if (getsockname(handle->fd, name, &socklen) == -1) { | ||
| 314 | - uv_err_new(handle->loop, errno); | ||
| 315 | - } else { | ||
| 316 | - *namelen = (int)socklen; | ||
| 317 | - } | ||
| 318 | - | ||
| 319 | - errno = saved_errno; | ||
| 320 | - return 0; | ||
| 321 | - } | ||
| 322 | - | ||
| 323 | - | ||
| 324 | 303 | void uv_ref(uv_loop_t* loop) { | |
| 325 | 304 | ev_ref(loop->ev); | |
| 326 | 305 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,6 +30,7 @@ | |||
| 30 | 30 | #include <errno.h> | |
| 31 | 31 | #include <stdio.h> | |
| 32 | 32 | #include <stdlib.h> | |
| 33 | + #include <string.h> | ||
| 33 | 34 | ||
| 34 | 35 | ||
| 35 | 36 | /* TODO Expose callback to user to handle fatal error like V8 does. */ | |
@@ -79,6 +80,7 @@ static uv_err_code uv_translate_sys_error(int sys_errno) { | |||
| 79 | 80 | case ECONNREFUSED: return UV_ECONNREFUSED; | |
| 80 | 81 | case EADDRINUSE: return UV_EADDRINUSE; | |
| 81 | 82 | case EADDRNOTAVAIL: return UV_EADDRNOTAVAIL; | |
| 83 | + case ENOTCONN: return UV_ENOTCONN; | ||
| 82 | 84 | default: return UV_UNKNOWN; | |
| 83 | 85 | } | |
| 84 | 86 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -26,6 +26,7 @@ | |||
| 26 | 26 | #include <errno.h> | |
| 27 | 27 | #include <unistd.h> | |
| 28 | 28 | #include <stdlib.h> | |
| 29 | + #include <string.h> | ||
| 29 | 30 | #include <sys/uio.h> | |
| 30 | 31 | ||
| 31 | 32 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -122,6 +122,80 @@ int uv_tcp_bind6(uv_tcp_t* tcp, struct sockaddr_in6 addr) { | |||
| 122 | 122 | } | |
| 123 | 123 | ||
| 124 | 124 | ||
| 125 | + int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name, | ||
| 126 | + int* namelen) { | ||
| 127 | + socklen_t socklen; | ||
| 128 | + int saved_errno; | ||
| 129 | + int rv = 0; | ||
| 130 | + | ||
| 131 | + /* Don't clobber errno. */ | ||
| 132 | + saved_errno = errno; | ||
| 133 | + | ||
| 134 | + if (handle->delayed_error) { | ||
| 135 | + uv_err_new(handle->loop, handle->delayed_error); | ||
| 136 | + rv = -1; | ||
| 137 | + goto out; | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + if (handle->fd < 0) { | ||
| 141 | + uv_err_new(handle->loop, EINVAL); | ||
| 142 | + rv = -1; | ||
| 143 | + goto out; | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + /* sizeof(socklen_t) != sizeof(int) on some systems. */ | ||
| 147 | + socklen = (socklen_t)*namelen; | ||
| 148 | + | ||
| 149 | + if (getsockname(handle->fd, name, &socklen) == -1) { | ||
| 150 | + uv_err_new(handle->loop, errno); | ||
| 151 | + rv = -1; | ||
| 152 | + } else { | ||
| 153 | + *namelen = (int)socklen; | ||
| 154 | + } | ||
| 155 | + | ||
| 156 | + out: | ||
| 157 | + errno = saved_errno; | ||
| 158 | + return rv; | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + | ||
| 162 | + int uv_tcp_getpeername(uv_tcp_t* handle, struct sockaddr* name, | ||
| 163 | + int* namelen) { | ||
| 164 | + socklen_t socklen; | ||
| 165 | + int saved_errno; | ||
| 166 | + int rv = 0; | ||
| 167 | + | ||
| 168 | + /* Don't clobber errno. */ | ||
| 169 | + saved_errno = errno; | ||
| 170 | + | ||
| 171 | + if (handle->delayed_error) { | ||
| 172 | + uv_err_new(handle->loop, handle->delayed_error); | ||
| 173 | + rv = -1; | ||
| 174 | + goto out; | ||
| 175 | + } | ||
| 176 | + | ||
| 177 | + if (handle->fd < 0) { | ||
| 178 | + uv_err_new(handle->loop, EINVAL); | ||
| 179 | + rv = -1; | ||
| 180 | + goto out; | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + /* sizeof(socklen_t) != sizeof(int) on some systems. */ | ||
| 184 | + socklen = (socklen_t)*namelen; | ||
| 185 | + | ||
| 186 | + if (getpeername(handle->fd, name, &socklen) == -1) { | ||
| 187 | + uv_err_new(handle->loop, errno); | ||
| 188 | + rv = -1; | ||
| 189 | + } else { | ||
| 190 | + *namelen = (int)socklen; | ||
| 191 | + } | ||
| 192 | + | ||
| 193 | + out: | ||
| 194 | + errno = saved_errno; | ||
| 195 | + return rv; | ||
| 196 | + } | ||
| 197 | + | ||
| 198 | + | ||
| 125 | 199 | int uv_tcp_listen(uv_tcp_t* tcp, int backlog, uv_connection_cb cb) { | |
| 126 | 200 | int r; | |
| 127 | 201 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -460,6 +460,37 @@ int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned flags) { | |||
| 460 | 460 | } | |
| 461 | 461 | ||
| 462 | 462 | ||
| 463 | + int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, | ||
| 464 | + int* namelen) { | ||
| 465 | + socklen_t socklen; | ||
| 466 | + int saved_errno; | ||
| 467 | + int rv = 0; | ||
| 468 | + | ||
| 469 | + /* Don't clobber errno. */ | ||
| 470 | + saved_errno = errno; | ||
| 471 | + | ||
| 472 | + if (handle->fd < 0) { | ||
| 473 | + uv_err_new(handle->loop, EINVAL); | ||
| 474 | + rv = -1; | ||
| 475 | + goto out; | ||
| 476 | + } | ||
| 477 | + | ||
| 478 | + /* sizeof(socklen_t) != sizeof(int) on some systems. */ | ||
| 479 | + socklen = (socklen_t)*namelen; | ||
| 480 | + | ||
| 481 | + if (getsockname(handle->fd, name, &socklen) == -1) { | ||
| 482 | + uv_err_new(handle->loop, errno); | ||
| 483 | + rv = -1; | ||
| 484 | + } else { | ||
| 485 | + *namelen = (int)socklen; | ||
| 486 | + } | ||
| 487 | + | ||
| 488 | + out: | ||
| 489 | + errno = saved_errno; | ||
| 490 | + return rv; | ||
| 491 | + } | ||
| 492 | + | ||
| 493 | + | ||
| 463 | 494 | int uv_udp_send(uv_udp_send_t* req, | |
| 464 | 495 | uv_udp_t* handle, | |
| 465 | 496 | uv_buf_t bufs[], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -95,8 +95,8 @@ static void CALLBACK uv_ares_socksignal_tp(void* parameter, | |||
| 95 | 95 | /* periodically call ares to check for timeouts */ | |
| 96 | 96 | static void uv_ares_poll(uv_timer_t* handle, int status) { | |
| 97 | 97 | uv_loop_t* loop = handle->loop; | |
| 98 | - if (loop->ares_channel != NULL && loop->ares_active_sockets > 0) { | ||
| 99 | - ares_process_fd(loop->ares_channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD); | ||
| 98 | + if (loop->ares_chan != NULL && loop->ares_active_sockets > 0) { | ||
| 99 | + ares_process_fd(loop->ares_chan, ARES_SOCKET_BAD, ARES_SOCKET_BAD); | ||
| 100 | 100 | } | |
| 101 | 101 | } | |
| 102 | 102 | ||
@@ -214,7 +214,7 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read, | |||
| 214 | 214 | /* called via uv_poll when ares completion port signaled */ | |
| 215 | 215 | void uv_process_ares_event_req(uv_loop_t* loop, uv_ares_action_t* handle, | |
| 216 | 216 | uv_req_t* req) { | |
| 217 | - ares_process_fd(loop->ares_channel, | ||
| 217 | + ares_process_fd(loop->ares_chan, | ||
| 218 | 218 | handle->read ? handle->sock : INVALID_SOCKET, | |
| 219 | 219 | handle->write ? handle->sock : INVALID_SOCKET); | |
| 220 | 220 | ||
@@ -258,7 +258,7 @@ int uv_ares_init_options(uv_loop_t* loop, | |||
| 258 | 258 | int rc; | |
| 259 | 259 | ||
| 260 | 260 | /* only allow single init at a time */ | |
| 261 | - if (loop->ares_channel != NULL) { | ||
| 261 | + if (loop->ares_chan != NULL) { | ||
| 262 | 262 | return UV_EALREADY; | |
| 263 | 263 | } | |
| 264 | 264 | ||
@@ -272,7 +272,7 @@ int uv_ares_init_options(uv_loop_t* loop, | |||
| 272 | 272 | ||
| 273 | 273 | /* if success, save channel */ | |
| 274 | 274 | if (rc == ARES_SUCCESS) { | |
| 275 | - loop->ares_channel = *channelptr; | ||
| 275 | + loop->ares_chan = *channelptr; | ||
| 276 | 276 | } | |
| 277 | 277 | ||
| 278 | 278 | return rc; | |
@@ -282,8 +282,8 @@ int uv_ares_init_options(uv_loop_t* loop, | |||
| 282 | 282 | /* release memory */ | |
| 283 | 283 | void uv_ares_destroy(uv_loop_t* loop, ares_channel channel) { | |
| 284 | 284 | /* only allow destroy if did init */ | |
| 285 | - if (loop->ares_channel != NULL) { | ||
| 285 | + if (loop->ares_chan != NULL) { | ||
| 286 | 286 | ares_destroy(channel); | |
| 287 | - loop->ares_channel = NULL; | ||
| 287 | + loop->ares_chan = NULL; | ||
| 288 | 288 | } | |
| 289 | 289 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -62,7 +62,7 @@ static void uv_loop_init(uv_loop_t* loop) { | |||
| 62 | 62 | loop->next_idle_handle = NULL; | |
| 63 | 63 | ||
| 64 | 64 | loop->ares_active_sockets = 0; | |
| 65 | - loop->ares_channel = NULL; | ||
| 65 | + loop->ares_chan = NULL; | ||
| 66 | 66 | ||
| 67 | 67 | loop->last_error = uv_ok_; | |
| 68 | 68 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -117,6 +117,8 @@ uv_err_code uv_translate_sys_error(int sys_errno) { | |||
| 117 | 117 | case ERROR_NETWORK_UNREACHABLE: return UV_ENETUNREACH; | |
| 118 | 118 | case WSAENETUNREACH: return UV_ENETUNREACH; | |
| 119 | 119 | case ERROR_OUTOFMEMORY: return UV_ENOMEM; | |
| 120 | + case ERROR_NOT_CONNECTED: return UV_ENOTCONN; | ||
| 121 | + case WSAENOTCONN: return UV_ENOTCONN; | ||
| 120 | 122 | case ERROR_NOT_SUPPORTED: return UV_ENOTSUP; | |
| 121 | 123 | case ERROR_INSUFFICIENT_BUFFER: return UV_EINVAL; | |
| 122 | 124 | case ERROR_INVALID_FLAGS: return UV_EBADF; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments