Send at least error back in query if nothing else is sent.
authorPekka Riikonen <priikone@silcnet.org>
Sun, 10 Apr 2005 08:30:52 +0000 (08:30 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sun, 10 Apr 2005 08:30:52 +0000 (08:30 +0000)
CHANGES
apps/silcd/server_query.c
apps/silcd/serverconfig.c

diff --git a/CHANGES b/CHANGES
index 751249b57abdfb8e26c98d070c16aecc4370d1fa..242662b228a640c653f77b2bc2b7e2ff10db255e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+Sun Apr 10 11:30:56 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
+
+       * Make sure query sends at least an error back if nothing
+         more is sent.  Affected file silcd/server_query.c.
+
 Thu Apr  7 14:50:01 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
 
        * During query, check if the original command caller goes
index a02fcd1803b38d84d14f7a03a9fa6122a79826ff..3874f6f6c9a9ad45496f4fc2eb3ce49273d01260 100644 (file)
@@ -407,18 +407,16 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query)
       }
 
       /* Check nickname */
-      if (query->nickname) {
-       tmp = silc_identifier_check(query->nickname, strlen(query->nickname),
-                                   SILC_STRING_UTF8, 128, &tmp_len);
-       if (!tmp) {
-         silc_server_query_send_error(server, query,
-                                      SILC_STATUS_ERR_BAD_NICKNAME, 0);
-         silc_server_query_free(query);
-         return;
-       }
-       silc_free(query->nickname);
-       query->nickname = tmp;
+      tmp = silc_identifier_check(query->nickname, strlen(query->nickname),
+                                 SILC_STRING_UTF8, 128, &tmp_len);
+      if (!tmp) {
+       silc_server_query_send_error(server, query,
+                                    SILC_STATUS_ERR_BAD_NICKNAME, 0);
+       silc_server_query_free(query);
+       return;
       }
+      silc_free(query->nickname);
+      query->nickname = tmp;
 
     } else {
       /* Parse the IDs included in the query */
@@ -1555,7 +1553,7 @@ void silc_server_query_send_reply(SilcServer server,
       case SILC_COMMAND_WHOWAS:
        silc_strncat(uh, sizeof(uh), entry->username, strlen(entry->username));
        if (!strchr(entry->username, '@'))
-         silc_strncat(uh, sizeof(uh), "@*private*", 10);
+         silc_strncat(uh, sizeof(uh), "@-private-", 10);
 
        /* Send command reply */
        silc_server_send_command_reply(server, cmd->sock, query->querycmd,
@@ -1581,9 +1579,14 @@ void silc_server_query_send_reply(SilcServer server,
       /* Not one valid entry was found, send error.  If nickname was used
         in query send error based on that, otherwise the query->errors
         already includes proper errors. */
-      if (query->nickname || (!query->nickname && !query->ids && query->attrs))
+      if (query->nickname || (!query->ids && query->attrs))
        silc_server_query_add_error(server, query, 1, 1,
                                    SILC_STATUS_ERR_NO_SUCH_NICK);
+
+      /* Make sure some error is sent */
+      if (!query->errors_count)
+       silc_server_query_add_error(server, query, 2, 0,
+                                   SILC_STATUS_ERR_NOT_ENOUGH_PARAMS);
     }
   }
 
@@ -1768,13 +1771,8 @@ void silc_server_query_send_reply(SilcServer server,
     }
   }
 
-  if (!sent_reply) {
+  if (!sent_reply)
     SILC_LOG_ERROR(("BUG: Query did not send anything"));
-    SILC_LOG_ERROR(("BUG: Sending %d clients", clients_count));
-    SILC_LOG_ERROR(("BUG: Sending %d servers", servers_count));
-    SILC_LOG_ERROR(("BUG: Sending %d channels", channels_count));
-    SILC_LOG_ERROR(("BUG: Sending %d errors", query->errors_count));
-  }
 
   /* Cleanup */
   silc_server_query_free(query);
index 5eeb6229bc6960007cc385e13c26e78776cf8e19..0afc3f39d67f77aaaf67d490672dc8c5a26c27f1 100644 (file)
@@ -165,6 +165,8 @@ static bool my_parse_authdata(SilcAuthMethod auth_meth, const char *p,
                                           NULL, NULL,
                                           my_free_public_key, NULL,
                                           TRUE);
+      SILC_LOG_DEBUG(("Adding public key '%s' to authentication cache",
+                    public_key->identifier));
       silc_hash_table_add(*auth_data, public_key, public_key);
     }
   } else