Fine tuning for OpenBSD and GNU/kfreebsd.
[darkstat] / http.c
diff --git a/http.c b/http.c
index b9d8c58..a79f567 100644 (file)
--- a/http.c
+++ b/http.c
@@ -324,10 +324,10 @@ static void accept_connection(void)
     memcpy(&conn->client, &addrin, sizeof(conn->client));
     LIST_INSERT_HEAD(&connlist, conn, entries);
 
-    getnameinfo((struct sockaddr *) &addrin, sizeof(addrin),
+    getnameinfo((struct sockaddr *) &addrin, sin_size,
             ipaddr, sizeof(ipaddr), portstr, sizeof(portstr),
             NI_NUMERICHOST | NI_NUMERICSERV);
-    verbosef("accepted connection from %s:%u", ipaddr, portstr);
+    verbosef("accepted connection from %s:%s", ipaddr, portstr);
 }
 
 
@@ -873,10 +873,13 @@ void http_init(const char *bindaddr, const unsigned short bindport,
     memset(&hints, '\0', sizeof(hints));
     hints.ai_family = AF_UNSPEC;
     hints.ai_socktype = SOCK_STREAM;
-    hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
+    hints.ai_flags = AI_PASSIVE;
+#ifdef AI_ADDRCONFIG
+    hints.ai_flags |= AI_ADDRCONFIG;
+#endif
     snprintf(portstr, sizeof(portstr), "%u", bindport);
 
-    if (ret = getaddrinfo(bindaddr, portstr, &hints, &aiptr))
+    if ((ret = getaddrinfo(bindaddr, portstr, &hints, &aiptr)))
         err(1, "getaddrinfo(): %s", gai_strerror(ret));
 
     for (ai = aiptr; ai; ai = ai->ai_next) {
@@ -899,8 +902,7 @@ void http_init(const char *bindaddr, const unsigned short bindport,
 
         /* bind socket */
         memcpy(&addrin, ai->ai_addr, ai->ai_addrlen);
-        if (bind(sockin, (struct sockaddr *)&addrin,
-                sizeof(addrin)) == -1) {
+        if (bind(sockin, (struct sockaddr *)&addrin, ai->ai_addrlen) == -1) {
             close(sockin);
             continue;
         }