From 48eb98c4648e77cc3e8152993f04743a4e4a73e6 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Wed, 13 Jul 2011 00:55:35 +0200 Subject: [PATCH] unix: implement uv_getsockname() --- src/uv-unix.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/uv-unix.c b/src/uv-unix.c index 694e6b303..eb860fc99 100644 --- a/src/uv-unix.c +++ b/src/uv-unix.c @@ -962,7 +962,23 @@ int uv_tcp_connect6(uv_req_t* req, struct sockaddr_in6 addr) { int uv_getsockname(uv_tcp_t* handle, struct sockaddr* name, int* namelen) { - assert(0 && "implement me"); + socklen_t socklen; + int saved_errno; + + /* Don't clobber errno. */ + saved_errno = errno; + + /* sizeof(socklen_t) != sizeof(int) on some systems. */ + socklen = (socklen_t)*namelen; + + if (getsockname(handle->fd, name, &socklen) == -1) { + uv_err_new((uv_handle_t*)handle, errno); + } else { + *namelen = (int)socklen; + } + + errno = saved_errno; + return 0; }