]> arthur.barton.de Git - ngircd.git/blobdiff - src/ngircd/irc.c
Add Doxygen @file documentation to each source and header file
[ngircd.git] / src / ngircd / irc.c
index 67ad2a633a16747f49511154f205e47204263e45..9e2aaeaf64fec42d746851f5b6f9d5e63d5b9a88 100644 (file)
@@ -7,14 +7,15 @@
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
- *
- * IRC commands
  */
 
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc.c,v 1.132 2008/01/15 22:28:14 fw Exp $";
+/**
+ * @file
+ * IRC commands
+ */
 
 #include "imp.h"
 #include <assert.h>
@@ -22,10 +23,8 @@ static char UNUSED id[] = "$Id: irc.c,v 1.132 2008/01/15 22:28:14 fw Exp $";
 #include <string.h>
 
 #include "ngircd.h"
-#include "resolve.h"
 #include "conn-func.h"
 #include "conf.h"
-#include "client.h"
 #include "channel.h"
 #include "defines.h"
 #include "irc-write.h"
@@ -70,7 +69,7 @@ IRC_ERROR( CLIENT *Client, REQUEST *Req )
  * disconnect clients. It can be used by IRC operators and servers, for example
  * to "solve" nick collisions after netsplits.
  * Please note that this function is also called internally, without a real
- * KILL command beeing received over the network! Client is Client_ThisServer()
+ * KILL command being received over the network! Client is Client_ThisServer()
  * in this case. */
 GLOBAL bool
 IRC_KILL( CLIENT *Client, REQUEST *Req )
@@ -160,11 +159,15 @@ IRC_KILL( CLIENT *Client, REQUEST *Req )
                             Client_Type( c ), Req->argv[0] );
                }
 
-               /* Kill client NOW! */
+               /* Kill the client NOW:
+                *  - Close the local connection (if there is one),
+                *  - Destroy the CLIENT structure for remote clients.
+                * Note: Conn_Close() removes the CLIENT structure as well. */
                conn = Client_Conn( c );
-               Client_Destroy( c, NULL, reason, false );
-               if( conn > NONE )
-                       Conn_Close( conn, NULL, reason, true );
+               if(conn > NONE)
+                       Conn_Close(conn, NULL, reason, true);
+               else
+                       Client_Destroy(c, NULL, reason, false);
        }
        else
                Log( LOG_NOTICE, "Client with nick \"%s\" is unknown here.", Req->argv[0] );
@@ -410,7 +413,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
                                if (nick != NULL && host != NULL) {
                                        if (strcmp(nick, Client_ID(cl)) == 0 &&
                                            strcmp(user, Client_User(cl)) == 0 &&
-                                           strcasecmp(host, Client_Hostname(cl)) == 0)
+                                           strcasecmp(host, Client_HostnameCloaked(cl)) == 0)
                                                break;
                                        else
                                                continue;
@@ -418,7 +421,7 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
                                if (strcasecmp(user, Client_User(cl)) != 0)
                                        continue;
                                if (host != NULL && strcasecmp(host,
-                                               Client_Hostname(cl)) != 0)
+                                               Client_HostnameCloaked(cl)) != 0)
                                        continue;
                                if (server != NULL && strcasecmp(server,
                                                Client_ID(Client_Introducer(cl))) != 0)