updates.
authorPekka Riikonen <priikone@silcnet.org>
Wed, 2 Jan 2002 16:59:09 +0000 (16:59 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Wed, 2 Jan 2002 16:59:09 +0000 (16:59 +0000)
CHANGES
TODO
apps/silcd/command.c
apps/silcd/packet_send.c
apps/silcd/packet_send.h
apps/silcd/server.c
apps/silcd/server.h
lib/silcutil/unix/silcunixutil.c

diff --git a/CHANGES b/CHANGES
index 4102534196a7635b22668c42949b95a5b3d7d857..ee6beaa626d0d6cae362fa4c9fc24dc5978883c3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed silc_string_regexify list creation.  Fixes bugs with
+         BAN and INVITE commands in server.  The affected file is
+         lib/silcutil/unix/silcunixutil.c.
+
 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
 
        * Removed the command destructor entirely from the server's
diff --git a/TODO b/TODO
index 7184c05e2683d4ef31aad629b8b10811e3a4cb71..5e8bfeb430fe8fc7041506a4b074e61aeb19047d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -51,6 +51,11 @@ TODO/bugs In SILC Client Library
    not needed and its usage is buggy when the context is registered
    to multiple pending commands.
 
+ o Add perhaps an option of setting the nickname to the client context.
+   If set (and username != nickname) the client libary would send NICK
+   command to the server after connecting to automatically set the
+   nickname.
+
  o Additions to do after protocol version 1.1:
 
        o Fix the NICK_CHANGE notify handling not to create new entry
index 14a9b02b34a2afb1f99234ee246ee758d614bc28..e83ef754ccd1655f2302e6f8fc571d9ce1be12fa 100644 (file)
@@ -3092,8 +3092,7 @@ static void silc_server_command_join_channel(SilcServer server,
        username and/or hostname is in the ban list the access to the
        channel is denied. */
     if (channel->ban_list) {
-      if (!channel->ban_list ||
-         silc_string_match(channel->ban_list, check) ||
+      if (silc_string_match(channel->ban_list, check) ||
          silc_string_match(channel->ban_list, check2)) {
        silc_server_command_send_status_reply(
                                      cmd, SILC_COMMAND_JOIN,
@@ -4938,7 +4937,7 @@ SILC_SERVER_CMD_FUNC(close)
     server->router = NULL;
     server->standalone = TRUE;
   }
-  silc_server_free_sock_user_data(server, sock);
+  silc_server_free_sock_user_data(server, sock, NULL);
   silc_server_close_connection(server, sock);
   
  out:
index b67071a694efc2f5ddf8dae68df5fe894b54dcab..f1b0c9d2ae10eecc013bcc8e02db54dbf326ee2e 100644 (file)
@@ -1263,7 +1263,7 @@ void silc_server_send_notify_signoff(SilcServer server,
                                     SilcSocketConnection sock,
                                     bool broadcast,
                                     SilcClientID *client_id,
-                                    char *message)
+                                    const char *message)
 {
   SilcBuffer idp;
 
index 0bf835418b63611855505298da981b2dc06254ae..983e8dcb6c2296d3ca563c0306cef4e4c50366df 100644 (file)
@@ -153,7 +153,7 @@ void silc_server_send_notify_signoff(SilcServer server,
                                     SilcSocketConnection sock,
                                     bool broadcast,
                                     SilcClientID *client_id,
-                                    char *message);
+                                    const char *message);
 void silc_server_send_notify_topic_set(SilcServer server,
                                       SilcSocketConnection sock,
                                       bool broadcast,
index ccb2838823dcd3dedf22eeacf49b4ec03810689f..344a89cbd12fdbea7a6d2a915026d8781284d381 100644 (file)
@@ -1551,7 +1551,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
        close the connection */
     if (SILC_IS_DISCONNECTING(sock)) {
       if (sock->user_data)
-       silc_server_free_sock_user_data(server, sock);
+       silc_server_free_sock_user_data(server, sock, NULL);
       silc_server_close_connection(server, sock);
       return;
     }
@@ -1560,7 +1560,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
     SILC_SET_DISCONNECTING(sock);
 
     if (sock->user_data)
-      silc_server_free_sock_user_data(server, sock);
+      silc_server_free_sock_user_data(server, sock, NULL);
     else if (server->router_conn && server->router_conn->sock == sock &&
             !server->router && server->standalone)
       silc_schedule_task_add(server->schedule, 0, 
@@ -1606,7 +1606,7 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
     SILC_SET_DISCONNECTING(sock);
 
     if (sock->user_data)
-      silc_server_free_sock_user_data(server, sock);
+      silc_server_free_sock_user_data(server, sock, NULL);
     silc_server_close_connection(server, sock);
   }
 }
@@ -2317,7 +2317,7 @@ void silc_server_free_client_data(SilcServer server,
                                  SilcSocketConnection sock,
                                  SilcClientEntry client, 
                                  int notify,
-                                 char *signoff)
+                                 const char *signoff)
 {
   FreeClientInternal i = silc_calloc(1, sizeof(*i));
 
@@ -2366,7 +2366,8 @@ void silc_server_free_client_data(SilcServer server,
    entities. */
 
 void silc_server_free_sock_user_data(SilcServer server, 
-                                    SilcSocketConnection sock)
+                                    SilcSocketConnection sock,
+                                    const char *signoff_message)
 {
   SILC_LOG_DEBUG(("Start"));
 
@@ -2374,7 +2375,8 @@ void silc_server_free_sock_user_data(SilcServer server,
   case SILC_SOCKET_TYPE_CLIENT:
     {
       SilcClientEntry user_data = (SilcClientEntry)sock->user_data;
-      silc_server_free_client_data(server, sock, user_data, TRUE, NULL);
+      silc_server_free_client_data(server, sock, user_data, TRUE, 
+                                  signoff_message);
       break;
     }
   case SILC_SOCKET_TYPE_SERVER:
@@ -2752,7 +2754,7 @@ SILC_TASK_CALLBACK(silc_server_timeout_remote)
   }
 
   if (sock->user_data)
-    silc_server_free_sock_user_data(server, sock);
+    silc_server_free_sock_user_data(server, sock, NULL);
 
   silc_server_disconnect_remote(server, sock, "Server closed connection: "
                                "Connection timeout");
index 6301b58ec0b9be3402be65a6d83310049d06b26c..58113779eeef5660844dfa6810193e629bb031b3 100644 (file)
@@ -140,9 +140,10 @@ void silc_server_free_client_data(SilcServer server,
                                  SilcSocketConnection sock,
                                  SilcClientEntry client, 
                                  int notify,
-                                 char *signoff);
+                                 const char *signoff);
 void silc_server_free_sock_user_data(SilcServer server, 
-                                    SilcSocketConnection sock);
+                                    SilcSocketConnection sock,
+                                    const char *signoff_message);
 void silc_server_remove_from_channels(SilcServer server, 
                                      SilcSocketConnection sock,
                                      SilcClientEntry client,
index 79e1185cb4505df0dbe0ee652c649858c6d2756a..3dddce37eb49bb17088b03f24b6819204d6d924b 100644 (file)
@@ -53,6 +53,8 @@ char *silc_string_regexify(const char *string)
       regex[count] = '.';
       count++;
     } else if (string[i] == ',') {
+      if (i + 1 == len)
+       continue;
       regex[count] = '|';
       count++;
       continue;