You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by dm...@apache.org on 2014/12/05 22:46:19 UTC
[4/5] mesos git commit: Introduced getIP and initialization wrappers
for sockaddr_in and addrinfo
Introduced getIP and initialization wrappers for sockaddr_in and addrinfo
Replaced obsolete functions gethostbyname2_r and gethostbyname2 with getaddrinfo
and introduced getIP. Created initialization wrappers for sockaddr_in and
addrinfo.
Review: https://reviews.apache.org/r/28719
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0503b676
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0503b676
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0503b676
Branch: refs/heads/master
Commit: 0503b676293e23d54fdb8e68604b5dd03b4895cf
Parents: 50c3a85
Author: Evelina Dumitrescu <ev...@gmail.com>
Authored: Fri Dec 5 13:27:59 2014 -0800
Committer: Dominic Hamon <dh...@twitter.com>
Committed: Fri Dec 5 13:28:23 2014 -0800
----------------------------------------------------------------------
3rdparty/libprocess/include/process/socket.hpp | 21 +++---------
3rdparty/libprocess/src/pid.cpp | 37 ++++-----------------
3rdparty/libprocess/src/process.cpp | 9 +++--
3 files changed, 15 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0503b676/3rdparty/libprocess/include/process/socket.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/socket.hpp b/3rdparty/libprocess/include/process/socket.hpp
index e237658..9188e3d 100644
--- a/3rdparty/libprocess/include/process/socket.hpp
+++ b/3rdparty/libprocess/include/process/socket.hpp
@@ -10,6 +10,7 @@
#include <stout/abort.hpp>
#include <stout/nothing.hpp>
+#include <stout/net.hpp>
#include <stout/os.hpp>
#include <stout/try.hpp>
@@ -42,9 +43,7 @@ inline Try<int> accept(int s, sa_family_t family)
{
switch (family) {
case AF_INET: {
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
-
+ sockaddr_in addr = net::createSockaddrIn(0, 0);
socklen_t addrlen = sizeof(addr);
int rc = ::accept(s, (sockaddr*) &addr, &addrlen);
@@ -60,11 +59,7 @@ inline Try<int> accept(int s, sa_family_t family)
inline Try<int> bind(int s, const Node& node)
{
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = node.ip;
- addr.sin_port = htons(node.port);
+ sockaddr_in addr = net::createSockaddrIn(node.ip, node.port);
int rc = ::bind(s, (sockaddr*) &addr, sizeof(addr));
if (rc < 0)
@@ -75,11 +70,7 @@ inline Try<int> bind(int s, const Node& node)
inline Try<int> connect(int s, const Node& node)
{
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_port = htons(node.port);
- addr.sin_addr.s_addr = node.ip;
+ sockaddr_in addr = net::createSockaddrIn(node.ip, node.port);
int rc = ::connect(s, (sockaddr*) &addr, sizeof(addr));
if (rc < 0)
@@ -92,9 +83,7 @@ inline Try<Node> getsockname(int s, sa_family_t family)
{
switch (family) {
case AF_INET: {
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
-
+ sockaddr_in addr = net::createSockaddrIn(0, 0);
socklen_t addrlen = sizeof(addr);
if(::getsockname(s, (sockaddr*) &addr, &addrlen) < 0)
http://git-wip-us.apache.org/repos/asf/mesos/blob/0503b676/3rdparty/libprocess/src/pid.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/pid.cpp b/3rdparty/libprocess/src/pid.cpp
index a2c620e..085e0b9 100644
--- a/3rdparty/libprocess/src/pid.cpp
+++ b/3rdparty/libprocess/src/pid.cpp
@@ -16,6 +16,7 @@
#include <process/pid.hpp>
#include <process/process.hpp>
+#include <stout/net.hpp>
#include <stout/os.hpp>
#include "config.hpp"
@@ -109,42 +110,16 @@ istream& operator >> (istream& stream, UPID& pid)
return stream;
}
- hostent he, *hep;
- char* temp;
- size_t length;
- int result;
- int herrno;
-
- // Allocate temporary buffer for gethostbyname2_r.
- length = 1024;
- temp = new char[length];
-
- while ((result = gethostbyname2_r(
- host.c_str(), AF_INET, &he, temp, length, &hep, &herrno)) == ERANGE) {
- // Enlarge the buffer.
- delete[] temp;
- length *= 2;
- temp = new char[length];
- }
-
- if (result != 0 || hep == NULL) {
- VLOG(2) << "Failed to parse host '" << host
- << "' because " << hstrerror(herrno);
- delete[] temp;
- stream.setstate(std::ios_base::badbit);
- return stream;
- }
+ //TODO(evelinad): Extend this to support IPv6
+ Try<uint32_t> ip = net::getIP(host, AF_INET);
- if (hep->h_addr_list[0] == NULL) {
- VLOG(2) << "Got no addresses for '" << host << "'";
- delete[] temp;
+ if (ip.isError()) {
+ VLOG(2) << ip.error();
stream.setstate(std::ios_base::badbit);
return stream;
}
- node.ip = *((uint32_t*) hep->h_addr_list[0]);
-
- delete[] temp;
+ node.ip = ip.get();
str = str.substr(index + 1);
http://git-wip-us.apache.org/repos/asf/mesos/blob/0503b676/3rdparty/libprocess/src/process.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/process.cpp b/3rdparty/libprocess/src/process.cpp
index 611889b..c0d80bf 100644
--- a/3rdparty/libprocess/src/process.cpp
+++ b/3rdparty/libprocess/src/process.cpp
@@ -871,14 +871,13 @@ void initialize(const string& delegate)
}
// Lookup IP address of local hostname.
- hostent* he;
+ Try<uint32_t> ip = net::getIP(hostname, AF_INET);
- if ((he = gethostbyname2(hostname, AF_INET)) == NULL) {
- LOG(FATAL) << "Failed to initialize, gethostbyname2: "
- << hstrerror(h_errno);
+ if (ip.isError()) {
+ LOG(FATAL) << ip.error();
}
- __node__.ip = *((uint32_t *) he->h_addr_list[0]);
+ __node__.ip = ip.get();
}
Try<Nothing> listen = __s__.listen(LISTEN_BACKLOG);