]> git.vomp.tv Git - vompserver.git/commitdiff
Server ID sent in broadcast reply
authorChris Tallon <chris@vomp.tv>
Fri, 20 Jan 2006 23:29:12 +0000 (23:29 +0000)
committerChris Tallon <chris@vomp.tv>
Fri, 20 Jan 2006 23:29:12 +0000 (23:29 +0000)
config.c
mvpserver.c
mvpserver.h
udpreplier.c
udpreplier.h

index 272f3523d844eaa431b10ca3658ac45c194c971c..dccf52403d66d9986f44d80a0aa00bdb7be4dacf 100644 (file)
--- a/config.c
+++ b/config.c
@@ -57,6 +57,7 @@ int Config::init(char* takeFileName)
   fclose(file);
 
   initted = 1;
+  log->log("Config", Log::DEBUG, "Opened config file: %s", fileName);
 
   return 1;
 }
index 29a1fbee4d8ec54ddf7175b00104cf9aadbf08c1..c02e75ebba0f7791b57228de0304dc75c2dcc884 100644 (file)
@@ -48,9 +48,47 @@ int MVPServer::run()
 {
   if (threadIsActive()) return 1;
 
-  log.init(Log::DEBUG, "/tmp/vompserver.log", 0);
+  log.init(Log::DEBUG, "/tmp/vompserver.log", 1);
 
-  if (!udpr.run())
+  char serverName[1024];
+  bool nameSuccess = false;
+
+  // Try to get a server name from vomp.conf
+  const char* configDir = cPlugin::ConfigDirectory();
+  if (!configDir)
+  {
+    log.log("Client", Log::DEBUG, "No config dir!");
+  }
+  else
+  {
+    char configFileName[PATH_MAX];
+    snprintf(configFileName, PATH_MAX, "%s/vomp.conf", configDir);
+
+    Config c;
+    if (c.init(configFileName))
+    {
+      char* fc = c.getValueString("General", "Server name");
+      if (fc)
+      {
+        strncpy(serverName, fc, 1024);
+        delete[] fc;
+        nameSuccess = true;
+      }
+    }
+    c.shutdown();
+  }
+
+  if (!nameSuccess)
+  {
+    if (gethostname(serverName, 1024)) // if fail
+    {
+      strcpy(serverName, "-");
+    }
+  }
+
+  serverName[1023] = '\0';
+
+  if (!udpr.run(serverName))
   {
     log.log("MVPServer", Log::CRIT, "Could not start UDP replier");
     log.shutdown();
index a14b1f38a073a81e3b6616262eb957fed0e6cd3a..d64268d77311dd5fda7f46f52990ac3235da21f9 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <stdio.h>
 #include <pthread.h>
-#include <unistd.h> // sleep
+#include <unistd.h>
 #include <endian.h>
 
 #include "defines.h"
index 922231a3ee0ba7bb75a8f9a75616ed323382c455..ed3bf8421edc8c25a8e512f62a9a5c12d0ed73a4 100644 (file)
 UDPReplier::UDPReplier()
  : ds(3024)
 {
+  serverName = NULL;
 }
 
 UDPReplier::~UDPReplier()
 {
   if (threadIsActive()) stop();
+  if (serverName) delete[] serverName;
+  serverName = NULL;
 }
 
 int UDPReplier::stop()
@@ -37,10 +40,13 @@ int UDPReplier::stop()
   return 1;
 }
 
-int UDPReplier::run()
+int UDPReplier::run(char* tserverName)
 {
   if (threadIsActive()) return 1;
 
+  serverName = new char[strlen(tserverName)+1];
+  strcpy(serverName, tserverName);
+
   if (!threadStart()) return 0;
 
   Log::getInstance()->log("UDP", Log::DEBUG, "UDP replier started");
@@ -56,6 +62,6 @@ void UDPReplier::threadMethod()
     if (retval == 1) continue;
 
     if (!strcmp(ds.getData(), "VOMP"))
-      ds.send(ds.getFromIPA(), 3024, "VOMP SERVER", 11);
+      ds.send(ds.getFromIPA(), 3024, serverName, strlen(serverName));
   }
 }
index bdcc81086ab6e572365f94678340f3c9de129f62..371e5a1008c07852c625e4fadcec2a0982e9209a 100644 (file)
@@ -34,13 +34,14 @@ class UDPReplier : public Thread
     UDPReplier();
     virtual ~UDPReplier();
 
-    int run();
+    int run(char* tserverName);
     int stop();
 
   private:
     void threadMethod();
 
     DatagramSocket ds;
+    char* serverName;
 };
 
 #endif