Added preliminary support for non-backup-aware servers in cell
[silc.git] / apps / silcd / serverconfig.c
index 505e87622c31d8dc5803be5cb7f0ec5eea38a02f..0eef766e6c867c94a2cd5bd4de8cd93a01daf62c 100644 (file)
@@ -122,9 +122,10 @@ static bool my_parse_authdata(SilcAuthMethod auth_meth, char *p,
     /* p is a plain text password */
     if (auth_data && auth_data_len) {
       if (!silc_utf8_valid(p, strlen(p))) {
-       *auth_data_len = silc_utf8_encoded_len(p, strlen(p), 0);
+       *auth_data_len = silc_utf8_encoded_len(p, strlen(p),
+                                              SILC_STRING_LANGUAGE);
        *auth_data = silc_calloc(*auth_data_len, sizeof(unsigned char));
-       silc_utf8_encode(p, strlen(p), SILC_STRING_ASCII, *auth_data,
+       silc_utf8_encode(p, strlen(p), SILC_STRING_LANGUAGE, *auth_data,
                         *auth_data_len);
       } else {
        *auth_data = (void *) strdup(p);
@@ -1319,11 +1320,6 @@ void silc_server_config_destroy(SilcServerConfig config)
   silc_free(config->logging_errors);
   silc_free(config->logging_fatals);
 
-  silc_log_set_file(SILC_LOG_INFO, NULL, 0, NULL);
-  silc_log_set_file(SILC_LOG_WARNING, NULL, 0, NULL);
-  silc_log_set_file(SILC_LOG_ERROR, NULL, 0, NULL);
-  silc_log_set_file(SILC_LOG_FATAL, NULL, 0, NULL);
-
   /* Destroy the ServerInfo struct */
   if (config->server_info) {
     register SilcServerConfigServerInfo *si = config->server_info;
@@ -1857,3 +1853,31 @@ silc_server_config_get_primary_router(SilcServer server)
 
   return NULL;
 }
+
+/* If we have backup router configured that is going to replace us this
+   function returns it. */
+
+SilcServerConfigRouter *
+silc_server_config_get_backup_router(SilcServer server)
+{
+  SilcServerConfig config = server->config;
+  SilcServerConfigRouter *serv = NULL;
+  int i;
+
+  if (server->server_type != SILC_ROUTER)
+    return NULL;
+
+  serv = config->routers;
+  for (i = 0; serv; i++) {
+    if (serv->initiator == FALSE && serv->backup_router == TRUE &&
+       serv->backup_local == TRUE &&
+       !strcmp(server->config->server_info->primary->server_ip,
+               serv->backup_replace_ip) &&
+       server->config->server_info->primary->port ==
+       serv->backup_replace_port)
+      return serv;
+    serv = serv->next;
+  }
+
+  return NULL;
+}