get hostname from system call 'gethostname()' if not set in
authorMarc Cromme <marc@indexdata.dk>
Sat, 31 Mar 2007 20:55:19 +0000 (20:55 +0000)
committerMarc Cromme <marc@indexdata.dk>
Sat, 31 Mar 2007 20:55:19 +0000 (20:55 +0000)
<listen port="" host=""/> in config file. The hostname is under all circumstances
needed to produce the correct HTTP headers 'Via:' and 'X-Pazpar2-Server-Host:'

src/config.c

index cbdbd97..6e31cb9 100644 (file)
@@ -1,6 +1,7 @@
-/* $Id: config.c,v 1.19 2007-03-30 02:45:07 quinn Exp $ */
+/* $Id: config.c,v 1.20 2007-03-31 20:55:19 marc Exp $ */
 
 #include <string.h>
+#include <unistd.h>
 
 #include <libxml/parser.h>
 #include <libxml/tree.h>
@@ -227,6 +228,15 @@ static struct conf_server *parse_server(xmlNode *node)
                 r->port = atoi((const char *) port);
             if (host)
                 r->host = nmem_strdup(nmem, (const char *) host);
+            else { // get hostname from system
+                size_t len = 128;
+                char h[len];
+                if (0 == gethostname(h, len)){
+                    h[len - 1] = '\0';
+                    r->host = nmem_strdup(nmem, h);
+                } else 
+                    yaz_log(YLOG_WARN, "Could not get host name");
+            }
             xmlFree(port);
             xmlFree(host);
         }