From 6f59ae1763ee48f27448a7de9d635f61886052e1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 28 Sep 2004 22:47:48 +0000 Subject: Add module-tunnel add proper locking when autospawning a daemon git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@245 fefdeb5f-60dc-0310-8127-8f9354f1896f --- polyp/socket-util.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'polyp/socket-util.c') diff --git a/polyp/socket-util.c b/polyp/socket-util.c index 20380653..499739bd 100644 --- a/polyp/socket-util.c +++ b/polyp/socket-util.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "socket-util.h" #include "util.h" @@ -219,3 +220,35 @@ finish: return ret; } +struct sockaddr *pa_resolve_server(const char *server, size_t *len, uint16_t nport) { + struct sockaddr *sa; + struct addrinfo hints, *result = NULL; + char *port, host[256], tmp[16]; + assert(server && len); + + snprintf(host, sizeof(host), "%s", server); + host[strcspn(host, ":")] = 0; + + if ((port = strrchr(server, ':'))) + port++; + + if (!port) + snprintf(port = tmp, sizeof(tmp), "%u", nport); + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = 0; + + if (getaddrinfo(host, port, &hints, &result) != 0) + return NULL; + assert(result); + + sa = pa_xmalloc(*len = result->ai_addrlen); + memcpy(sa, result->ai_addr, *len); + + freeaddrinfo(result); + + return sa; +} + -- cgit