commit - de4676f066c7d5a125d485a62ec180fc6596cc3b
commit + e92c889580bc22165e62ee42310bec4ce09cde3a
blob - d3ece683122724bc583109a527bc951237fe0813
blob + 28faac7555bcbb46750b581538eb6d520a49cada
--- ChangeLog
+++ ChangeLog
terms of the GNU General Public License.
-- ChangeLog --
+ngIRCd 0.11.1
+ - Under some circumstances ngIRCd issued
+ channel MODE message with a trailing space. (Dana Dahlstrom) [from HEAD]
ngIRCd 0.11.0 (2008-01-15)
--
-$Id: ChangeLog,v 1.332.2.6 2008/01/15 20:45:52 alex Exp $
+$Id: ChangeLog,v 1.332.2.7 2008/02/16 11:26:11 fw Exp $
blob - c26984d8208ec5eb0e4201bd2bebe694dd0b6097
blob + af0246249da492812177464f835ee8dd73ca377f
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
#include "portab.h"
-static char UNUSED id[] = "$Id: irc-mode.c,v 1.50 2007/10/14 12:08:57 alex Exp $";
+static char UNUSED id[] = "$Id: irc-mode.c,v 1.50.2.1 2008/02/16 11:26:12 fw Exp $";
#include "imp.h"
#include <assert.h>
/* Prepare reply string */
if( set ) strcpy( the_modes, "+" );
else strcpy( the_modes, "-" );
- strcpy( the_args, " " );
+ the_args[0] = '\0';
x[1] = '\0';
ok = CONNECTED;
/* Channel-User-Mode */
if( Channel_UserModeAdd( Channel, client, x[0] ))
{
- strlcat( the_args, Client_ID( client ), sizeof( the_args ));
strlcat( the_args, " ", sizeof( the_args ));
+ strlcat( the_args, Client_ID( client ), sizeof( the_args ));
strlcat( the_modes, x, sizeof( the_modes ));
Log( LOG_DEBUG, "User \"%s\": Mode change on %s, now \"%s\"", Client_Mask( client ), Channel_Name( Channel ), Channel_UserModes( Channel, client ));
}
/* Channel-User-Mode */
if( Channel_UserModeDel( Channel, client, x[0] ))
{
- strlcat( the_args, Client_ID( client ), sizeof( the_args ));
strlcat( the_args, " ", sizeof( the_args ));
+ strlcat( the_args, Client_ID( client ), sizeof( the_args ));
strlcat( the_modes, x, sizeof( the_modes ));
Log( LOG_DEBUG, "User \"%s\": Mode change on %s, now \"%s\"", Client_Mask( client ), Channel_Name( Channel ), Channel_UserModes( Channel, client ));
}
/* Are there additional arguments to add? */
if( argadd[0] )
{
- len = strlen( the_args ) - 1;
- if( the_args[len] != ' ' ) strlcat( the_args, " ", sizeof( the_args ));
+ strlcat( the_args, " ", sizeof( the_args ));
strlcat( the_args, argadd, sizeof( the_args ));
}
}
len = strlen( the_modes ) - 1;
if(( the_modes[len] == '+' ) || ( the_modes[len] == '-' )) the_modes[len] = '\0';
- /* Clean up argument string if there are none */
- if( ! the_args[1] ) the_args[0] = '\0';
-
if( Client_Type( Client ) == CLIENT_SERVER )
{
/* Forward mode changes to channel users and other servers */
blob - 05dffc5cb2989a8899bd2b4ab976752dc1eda5c8
blob + 8aa4925ad435ed77c41882eeff75d742e3143077
--- src/testsuite/mode-test.e
+++ src/testsuite/mode-test.e
-# $Id: mode-test.e,v 1.6 2004/03/10 20:40:06 alex Exp $
+# $Id: mode-test.e,v 1.6.8.1 2008/02/16 11:26:13 fw Exp $
spawn telnet localhost 6789
expect {
send "mode #channel +v nick\r"
expect {
timeout { exit 1 }
- "@* MODE #channel +v nick"
+ "@* MODE #channel +v nick\r"
}
send "mode #channel +I nick1\r"
send "mode #channel -vo nick nick\r"
expect {
timeout { exit 1 }
- "@* MODE #channel -vo nick nick"
+ "@* MODE #channel -vo nick nick\r"
}
send "quit\r"