]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-server.c
Fix NJOIN not propagating "half ops" status
[ngircd-alex.git] / src / ngircd / irc-server.c
index d1df18acf1e794ea76c957bd297141036cf98b56..265a9859e04bfaa95b06d53d2cbce02b26767d16 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * IRC commands for server links
  */
 
-#include "imp.h"
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <strings.h>
 
-#include "defines.h"
-#include "conn.h"
 #include "conn-func.h"
 #include "conn-zip.h"
 #include "conf.h"
 #include "channel.h"
-#include "lists.h"
 #include "log.h"
 #include "messages.h"
 #include "parse.h"
 #include "numeric.h"
 #include "ngircd.h"
 #include "irc-info.h"
-#include "irc-macros.h"
 #include "irc-write.h"
 #include "op.h"
 
-#include "exp.h"
 #include "irc-server.h"
 
 /**
@@ -53,7 +47,7 @@
 GLOBAL bool
 IRC_SERVER( CLIENT *Client, REQUEST *Req )
 {
-       char str[LINE_LEN];
+       char str[100];
        CLIENT *from, *c;
        int i;
 
@@ -254,8 +248,6 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 2)
-
        strlcpy( nick_in, Req->argv[1], sizeof( nick_in ));
        strcpy( nick_out, "" );
 
@@ -272,7 +264,7 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req )
                        if( *ptr == '~' ) is_owner = true;
                        if( *ptr == '&' ) is_chanadmin = true;
                        if( *ptr == '@' ) is_op = true;
-                       if( *ptr == 'h' ) is_halfop = true;
+                       if( *ptr == '%' ) is_halfop = true;
                        if( *ptr == '+' ) is_voiced = true;
                        ptr++;
                }
@@ -345,8 +337,6 @@ IRC_SQUIT(CLIENT * Client, REQUEST * Req)
            && !Client_HasMode(Client, 'o'))
                return Op_NoPrivileges(Client, Req);
 
-       _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 2)
-
        if (Client_Type(Client) == CLIENT_SERVER && Req->prefix) {
                from = Client_Search(Req->prefix);
                if (Client_Type(from) != CLIENT_SERVER