<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40755 >

2009/4/7 Marko Lindqvist <cazf...@gmail.com>:
>
>  Server can have several dns names, and sometimes you want to
> communicate some other than one returned by hostname() to metaserver.
> Attached patch adds commandline parameter to set used server name
> manually.
>  Since this can also work around some dns problems some users are
> reporting, I plan to commit this to S2_1 too.

 S2_1 version


 - ML

diff -Nurd -X.diff_ignore freeciv/server/civserver.c freeciv/server/civserver.c
--- freeciv/server/civserver.c	2007-11-27 20:36:02.000000000 +0200
+++ freeciv/server/civserver.c	2009-04-13 10:38:00.000000000 +0300
@@ -134,13 +134,17 @@
       fc_fprintf(stderr, _("Warning: the %s option is obsolete.  "
 			   "Use -m to enable the metaserver.\n"), argv[inx]);
       showhelp = TRUE;
-    } else if (is_option("--meta", argv[inx]))
+    } else if (is_option("--meta", argv[inx])) {
       srvarg.metaserver_no_send = FALSE;
-    else if ((option = get_option_malloc("--Metaserver",
+    } else if ((option = get_option_malloc("--Metaserver",
 					 argv, &inx, argc))) {
       sz_strlcpy(srvarg.metaserver_addr, option);
       free(option);
       srvarg.metaserver_no_send = FALSE;      /* --Metaserver implies --meta */
+    } else if ((option = get_option_malloc("--identity",
+					   argv, &inx, argc))) {
+      sz_strlcpy(srvarg.metaserver_name, option);
+      free(option);
     } else if ((option = get_option_malloc("--port", argv, &inx, argc))) {
       if (sscanf(option, "%d", &srvarg.port) != 1) {
 	showhelp = TRUE;
@@ -223,6 +227,7 @@
     fc_fprintf(stderr, _("  -f, --file FILE\tLoad saved game FILE\n"));
     fc_fprintf(stderr,
 	       _("  -h, --help\t\tPrint a summary of the options\n"));
+   fc_fprintf(stderr, _("  -i, --identity ADDR\tBe known as ADDR at metaserver\n"));
     fc_fprintf(stderr, _("  -l, --log FILE\tUse FILE as logfile\n"));
     fc_fprintf(stderr, _("  -m, --meta\t\tNotify metaserver and "
 			 "send server's info\n"));
diff -Nurd -X.diff_ignore freeciv/server/meta.c freeciv/server/meta.c
--- freeciv/server/meta.c	2008-03-09 20:44:59.000000000 +0200
+++ freeciv/server/meta.c	2009-04-13 10:38:00.000000000 +0300
@@ -241,7 +241,9 @@
   }
 
   /* get hostname */
-  if (my_gethostname(host, sizeof(host)) != 0) {
+  if (srvarg.metaserver_name[0] != '\0') {
+    sz_strlcpy(host, srvarg.metaserver_name);
+  } else if (my_gethostname(host, sizeof(host)) != 0) {
     sz_strlcpy(host, "unknown");
   }
 
diff -Nurd -X.diff_ignore freeciv/server/srv_main.c freeciv/server/srv_main.c
--- freeciv/server/srv_main.c	2009-02-16 19:35:02.000000000 +0200
+++ freeciv/server/srv_main.c	2009-04-13 10:38:00.000000000 +0300
@@ -172,6 +172,7 @@
 
   srvarg.metaserver_no_send = DEFAULT_META_SERVER_NO_SEND;
   sz_strlcpy(srvarg.metaserver_addr, DEFAULT_META_SERVER_ADDR);
+  srvarg.metaserver_name[0] = '\0';
 
   srvarg.bind_addr = NULL;
   srvarg.port = DEFAULT_SOCK_PORT;
diff -Nurd -X.diff_ignore freeciv/server/srv_main.h freeciv/server/srv_main.h
--- freeciv/server/srv_main.h	2008-03-09 20:44:59.000000000 +0200
+++ freeciv/server/srv_main.h	2009-04-13 10:38:00.000000000 +0300
@@ -25,6 +25,7 @@
   /* metaserver information */
   bool metaserver_no_send;
   char metaserver_addr[256];
+  char metaserver_name[256];
   unsigned short int metaserver_port;
   /* address this server is to listen on (NULL => INADDR_ANY) */
   char *bind_addr;
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to