]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
Merge branch 'bug124-CloakHostModeX'
[ngircd-alex.git] / src / ngircd / conf.c
index 54269009d1ee433bb537fa1c4ef140f34ea2cb57..5f7b24fcfdced17a4681d260f6546f4980c7481f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -358,6 +358,7 @@ Conf_Test( void )
        printf("  AllowRemoteOper = %s\n", yesno_to_str(Conf_AllowRemoteOper));
        printf("  ChrootDir = %s\n", Conf_Chroot);
        printf("  CloakHost = %s\n", Conf_CloakHost);
+       printf("  CloakHostModeX = %s\n", Conf_CloakHostModeX);
        printf("  CloakUserToNick = %s\n", yesno_to_str(Conf_CloakUserToNick));
 #ifdef WANT_IPV6
        printf("  ConnectIPv4 = %s\n", yesno_to_str(Conf_ConnectIPv6));
@@ -492,6 +493,14 @@ Conf_SetServer( int ConfServer, CONN_ID Idx )
        assert( ConfServer > NONE );
        assert( Idx > NONE );
 
+       if (Conf_Server[ConfServer].conn_id > NONE &&
+           Conf_Server[ConfServer].conn_id != Idx) {
+               Log(LOG_ALERT,
+                       "Trying to update connection index for already registered server \"%s\": %d/%d - ignored.",
+                       Conf_Server[ConfServer].name,
+                       Conf_Server[ConfServer].conn_id, Idx);
+               return;
+       }
        Conf_Server[ConfServer].conn_id = Idx;
 }
 
@@ -676,6 +685,7 @@ Set_Defaults(bool InitServers)
 #endif
        strlcpy(Conf_Chroot, CHROOT_DIR, sizeof(Conf_Chroot));
        strcpy(Conf_CloakHost, "");
+       strcpy(Conf_CloakHostModeX, "");
        Conf_CloakUserToNick = false;
        Conf_ConnectIPv4 = true;
 #ifdef WANT_IPV6
@@ -1469,6 +1479,12 @@ Handle_OPTIONS(int Line, char *Var, char *Arg)
                        Config_Error_TooLong(Line, Var);
                return;
        }
+       if (strcasecmp(Var, "CloakHostModeX") == 0) {
+               len = strlcpy(Conf_CloakHostModeX, Arg, sizeof(Conf_CloakHostModeX));
+               if (len >= sizeof(Conf_CloakHostModeX))
+                       Config_Error_TooLong(Line, Var);
+               return;
+       }
        if (strcasecmp(Var, "CloakUserToNick") == 0) {
                Conf_CloakUserToNick = Check_ArgIsTrue(Arg);
                return;