summaryrefslogtreecommitdiff
path: root/multimedia/mediatomb/patches/patch-ab
blob: 6b0d8c1f1b10f1e0cc58e8c9658903f2e2562765 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$NetBSD: patch-ab,v 1.4 2012/09/25 11:45:11 ryoon Exp $

Avoid dependence on "liblwres". Based on this patch for "pupnp":

http://pupnp.git.sourceforge.net/git/gitweb.cgi?p=pupnp/pupnp;a=commitdiff;h=5151d4520308f59c71764423c3853a35cf23e279#patch9

--- tombupnp/upnp/src/genlib/net/uri/uri.c.orig	2010-03-25 14:58:12.000000000 +0000
+++ tombupnp/upnp/src/genlib/net/uri/uri.c
@@ -657,11 +657,38 @@ parse_hostport( const char *in,
         if ( h == NULL ) {
             errCode = 1;
         }
-#else
+#elif defined(__linux__)
         errCode = gethostbyname_r( temp_host_name,
                                    &h_buf,
                                    temp_hostbyname_buff,
                                    BUFFER_SIZE, &h, &errcode );
+#else
+{
+           struct addrinfo hints, *res, *res0;
+
+	   h = NULL;
+           memset(&hints, 0, sizeof(hints));
+           hints.ai_family = PF_INET;
+           hints.ai_socktype = SOCK_STREAM;
+           errCode = getaddrinfo(temp_host_name, "http", &hints, &res0);
+
+           if (!errCode) {
+               for (res = res0; res; res = res->ai_next) {
+                   if (res->ai_family == PF_INET &&
+                       res->ai_addr->sa_family == AF_INET)
+                   {
+                       h = &h_buf;
+                       h->h_addrtype = res->ai_addr->sa_family;
+                       h->h_length = 4;
+                       h->h_addr = (void *) temp_hostbyname_buff;
+                       *(struct in_addr *)h->h_addr =
+				((struct sockaddr_in *)res->ai_addr)->sin_addr;
+                       break;
+                   }
+               }
+               freeaddrinfo(res0);
+           }
+}
 #endif 
 
         if( errCode == 0 ) {