Merge commit 'origin/silc.1.1.branch'
[silc.git] / apps / silcd / server_query.c
index d3a243a5f85f972aad03713eed57d77676f4270d..59eda8024e40cb5d513ef8bc89656311bb9b7150 100644 (file)
@@ -308,10 +308,12 @@ void silc_server_query_connected(SilcServer server,
 
   if (!server_entry) {
     /* Connecting failed */
+    SilcConnectionType type = (server->server_type == SILC_ROUTER ?
+                              SILC_CONN_SERVER : SILC_CONN_ROUTER);
 
     if (query->dynamic_prim /* && @serv != prim.host.name */ &&
        !silc_server_num_sockets_by_remote(server, query->nick_server,
-                                          query->nick_server, 706)) {
+                                          query->nick_server, 706, type)) {
       /* Connection attempt to primary router failed, now try to the one
         specified in nick@server. */
       silc_server_create_connection(server, FALSE, TRUE, query->nick_server,
@@ -388,16 +390,18 @@ void silc_server_query_send_router_reply(void *context, void *reply)
   /* Check if router sent error reply */
   if (cmdr && !silc_command_get_status(cmdr->payload, NULL, NULL)) {
     SilcBuffer buffer;
+    SilcConnectionType type = (server->server_type == SILC_ROUTER ?
+                              SILC_CONN_SERVER : SILC_CONN_ROUTER);
 
     /* If this was nick@server query, retry to @serv if the primary router
        returned error. */
     if (query->nick_server[0] && !query->dynamic_retry &&
        !silc_server_num_sockets_by_remote(server, query->nick_server,
-                                          query->nick_server, 1334)) {
+                                          query->nick_server, 706, type)) {
       SILC_LOG_DEBUG(("Retry query by connecting to %s:%d",
                      query->nick_server, 706));
       silc_server_create_connection(server, FALSE, TRUE, query->nick_server,
-                                   1334, silc_server_query_connected,
+                                   706, silc_server_query_connected,
                                    query);
       query->dynamic_retry = TRUE;
       query->resolved = FALSE;
@@ -737,6 +741,8 @@ SilcBool silc_server_query_parse(SilcServer server, SilcServerQuery query,
        /* If primary router is specified, use that.  Otherwise connect
           to the server in nick@server string. */
        SilcServerConfigRouter *router;
+       SilcConnectionType type = (server->server_type == SILC_ROUTER ?
+                                  SILC_CONN_SERVER : SILC_CONN_ROUTER);
 
        router = silc_server_config_get_primary_router(server);
        if (router && server->standalone) {
@@ -751,7 +757,7 @@ SilcBool silc_server_query_parse(SilcServer server, SilcServerQuery query,
        } else if (!silc_server_num_sockets_by_remote(server,
                                                      query->nick_server,
                                                      query->nick_server,
-                                                     706)) {
+                                                     706, type)) {
          /* Create connection and handle the query after connection */
          SILC_LOG_DEBUG(("Create dynamic connection to %s:%d",
                          query->nick_server, 706));
@@ -1510,6 +1516,7 @@ void silc_server_query_send_reply(SilcServer server,
   SilcUInt16 ident = silc_command_get_ident(cmd->payload);
   SilcStatus status;
   unsigned char *tmp;
+  char *tmp2;
   SilcUInt32 len;
   SilcBuffer idp;
   int i, k, valid_count;
@@ -1636,8 +1643,8 @@ void silc_server_query_send_reply(SilcServer server,
            hsock = entry->connection;
            silc_strncat(uh, sizeof(uh), "@", 1);
            silc_socket_stream_get_info(silc_packet_stream_get_stream(hsock),
-                                       NULL, (const char **)&tmp, NULL, NULL);
-           silc_strncat(uh, sizeof(uh), tmp, strlen(tmp));
+                                       NULL, (const char **)&tmp2, NULL, NULL);
+           silc_strncat(uh, sizeof(uh), tmp2, strlen(tmp2));
          }
 
          if (idata->conn_type == SILC_CONN_CLIENT)
@@ -1727,9 +1734,9 @@ void silc_server_query_send_reply(SilcServer server,
            hsock = entry->connection;
            silc_strncat(uh, sizeof(uh), "@", 1);
            silc_socket_stream_get_info(silc_packet_stream_get_stream(hsock),
-                                       NULL, (const char **)&tmp,
+                                       NULL, (const char **)&tmp2,
                                        NULL, NULL);
-           silc_strncat(uh, sizeof(uh), tmp, strlen(tmp));
+           silc_strncat(uh, sizeof(uh), tmp2, strlen(tmp2));
          }
 
          silc_server_send_command_reply(server, cmd->sock, query->querycmd,