mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-11-04 07:52:59 +00:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
			rel-26-rc1
			...
			rel-0-11-1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					45df522bcb | ||
| 
						 | 
					51260c2e9f | ||
| 
						 | 
					55865d7fc6 | ||
| 
						 | 
					082a92beef | ||
| 
						 | 
					e92c889580 | ||
| 
						 | 
					de4676f066 | ||
| 
						 | 
					64a98338d5 | ||
| 
						 | 
					f4709082fe | ||
| 
						 | 
					997abc6889 | ||
| 
						 | 
					b7047f2e3b | ||
| 
						 | 
					e990d96c61 | ||
| 
						 | 
					d986cd372f | ||
| 
						 | 
					762aec0e08 | ||
| 
						 | 
					f8cb8e3f20 | 
							
								
								
									
										22
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -10,8 +10,21 @@
 | 
				
			|||||||
                               -- ChangeLog --
 | 
					                               -- ChangeLog --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ngIRCd HEAD
 | 
					ngIRCd 0.11.1 (2008-02-26)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - Fix sending of JOIN commands between servers when remote server appended
 | 
				
			||||||
 | 
					   mode flags. (Rolf Eike Beer) [from HEAD]
 | 
				
			||||||
 | 
					 - Send "G" instead of "H" flag in WHO replies. (reported by Dana Dahlstrom)
 | 
				
			||||||
 | 
					 - Under some circumstances ngIRCd issued channel MODE message with a
 | 
				
			||||||
 | 
					   trailing space. (Dana Dahlstrom) [from HEAD]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd 0.11.0 (2008-01-15)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngIRCd 0.11.0-pre2 (2008-01-07)
 | 
				
			||||||
 | 
					  - SECURITY: IRC_PART could reference invalid memory, causing
 | 
				
			||||||
 | 
					    ngircd to crash [from HEAD].
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  ngIRCd 0.11.0-pre1 (2008-01-02)
 | 
				
			||||||
  - Use dotted-decimal IP address if hostname is >= 64.
 | 
					  - Use dotted-decimal IP address if hostname is >= 64.
 | 
				
			||||||
  - Add support for /STAT u (server uptime) command.
 | 
					  - Add support for /STAT u (server uptime) command.
 | 
				
			||||||
  - New [Server] configuration Option "Bind" allows to specify
 | 
					  - New [Server] configuration Option "Bind" allows to specify
 | 
				
			||||||
@@ -40,6 +53,11 @@ ngIRCd HEAD
 | 
				
			|||||||
  - Added support for the WALLOPS command. Usage is restricted to IRC
 | 
					  - Added support for the WALLOPS command. Usage is restricted to IRC
 | 
				
			||||||
    operators.
 | 
					    operators.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngIRCd 0.10.4 (2008-01-07)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - SECURITY: IRC_PART could reference invalid memory, causing
 | 
				
			||||||
 | 
					    ngircd to crash [from HEAD].
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
ngIRCd 0.10.3 (2007-08-01)
 | 
					ngIRCd 0.10.3 (2007-08-01)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  - SECURITY: Fixed a severe bug in handling JOIN commands, which could
 | 
					  - SECURITY: Fixed a severe bug in handling JOIN commands, which could
 | 
				
			||||||
@@ -724,4 +742,4 @@ ngIRCd 0.0.1, 31.12.2001
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 
 | 
					-- 
 | 
				
			||||||
$Id: ChangeLog,v 1.332 2008/01/02 11:31:48 alex Exp $
 | 
					$Id: ChangeLog,v 1.332.2.10 2008/02/26 19:22:06 alex Exp $
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								NEWS
									
									
									
									
									
								
							@@ -10,7 +10,7 @@
 | 
				
			|||||||
                                  -- NEWS --
 | 
					                                  -- NEWS --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ngIRCd HEAD
 | 
					ngIRCd 0.11.0 (2008-01-15)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  - Add support for /STAT u (server uptime) command.
 | 
					  - Add support for /STAT u (server uptime) command.
 | 
				
			||||||
  - New [Server] configuration Option "Bind" allows to specify
 | 
					  - New [Server] configuration Option "Bind" allows to specify
 | 
				
			||||||
@@ -251,4 +251,4 @@ ngIRCd 0.0.1, 31.12.2001
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 
 | 
					-- 
 | 
				
			||||||
$Id: NEWS,v 1.83 2008/01/02 11:31:48 alex Exp $
 | 
					$Id: NEWS,v 1.83.2.4 2008/02/26 19:22:07 alex Exp $
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# ngIRCd -- The Next Generation IRC Daemon
 | 
					# ngIRCd -- The Next Generation IRC Daemon
 | 
				
			||||||
# Copyright (c)2001-2005 Alexander Barton <alex@barton.de>
 | 
					# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This program is free software; you can redistribute it and/or modify
 | 
					# 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
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
@@ -8,13 +8,13 @@
 | 
				
			|||||||
# (at your option) any later version.
 | 
					# (at your option) any later version.
 | 
				
			||||||
# Please read the file COPYING, README and AUTHORS for more information.
 | 
					# Please read the file COPYING, README and AUTHORS for more information.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# $Id: configure.in,v 1.125 2006/12/26 16:00:45 alex Exp $
 | 
					# $Id: configure.in,v 1.125.2.4 2008/02/26 19:37:34 alex Exp $
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -- Initialisation --
 | 
					# -- Initialisation --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_PREREQ(2.50)
 | 
					AC_PREREQ(2.50)
 | 
				
			||||||
AC_INIT(ngircd, CVSHEAD)
 | 
					AC_INIT(ngircd, 0.11.1)
 | 
				
			||||||
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
 | 
					AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
 | 
				
			||||||
AC_CANONICAL_TARGET
 | 
					AC_CANONICAL_TARGET
 | 
				
			||||||
AM_INIT_AUTOMAKE(1.6)
 | 
					AM_INIT_AUTOMAKE(1.6)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,33 @@
 | 
				
			|||||||
 | 
					ngircd (0.11.1-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release 0.11.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 26 Feb 2008 20:24:55 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.11.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release 0.11.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Tue, 15 Jan 2008 21:43:46 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.11.0-0ab0-pre2) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Second prerelease of upcoming new "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 15:32:42 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.11.0-0ab0-pre1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Prerelease of upcoming new "upstream release".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Wed,  2 Jan 2008 21:33:15 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ngircd (0.10.4-0ab1) unstable; urgency=high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * New "upstream" release: 0.10.4 - fixing a security bug.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 22:04:44 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ngircd (0.10.0-0ab1) unstable; urgency=low
 | 
					ngircd (0.10.0-0ab1) unstable; urgency=low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  * New "upstream" release: 0.10.0
 | 
					  * New "upstream" release: 0.10.0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
%define name    ngircd
 | 
					%define name    ngircd
 | 
				
			||||||
%define version CVSHEAD
 | 
					%define version 0.11.1
 | 
				
			||||||
%define release 1
 | 
					%define release 1
 | 
				
			||||||
%define prefix  %{_prefix}
 | 
					%define prefix  %{_prefix}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								doc/FAQ.txt
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								doc/FAQ.txt
									
									
									
									
									
								
							@@ -62,15 +62,6 @@ A: On Linux/glibc with chroot enabled you need to put some libraries inside
 | 
				
			|||||||
   is to either disable chroot support or to link against dietlibc instead
 | 
					   is to either disable chroot support or to link against dietlibc instead
 | 
				
			||||||
   of glibc. (tnx to Sebastian Siewior)
 | 
					   of glibc. (tnx to Sebastian Siewior)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Q: I am running Linux and ngircd dies on startup with the follwing errors:
 | 
					 | 
				
			||||||
   IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd -1).
 | 
					 | 
				
			||||||
   Cannot initialize IO routines: Function not implemented
 | 
					 | 
				
			||||||
   Server isn't listening on a single port!
 | 
					 | 
				
			||||||
   ngircd exiting due to fatal errors!
 | 
					 | 
				
			||||||
A: epoll is only supported on 2.6 Linux kernels. Either use a 2.6 kernel, or
 | 
					 | 
				
			||||||
   re-run configure with the --without-epoll parameter. After configure
 | 
					 | 
				
			||||||
   completed, you should see select() being listed as IO backend:
 | 
					 | 
				
			||||||
   '(I/O backend: "select()"').
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
IV. Bugs!?
 | 
					IV. Bugs!?
 | 
				
			||||||
~~~~~~~~~~
 | 
					~~~~~~~~~~
 | 
				
			||||||
@@ -85,4 +76,4 @@ A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>!
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 
 | 
					-- 
 | 
				
			||||||
$Id: FAQ.txt,v 1.11 2005/12/09 21:14:56 fw Exp $
 | 
					$Id: FAQ.txt,v 1.11.4.1 2008/01/02 22:36:48 fw Exp $
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
# $Id: sample-ngircd.conf,v 1.43 2007/11/23 16:26:03 fw Exp $
 | 
					# $Id: sample-ngircd.conf,v 1.43.2.1 2008/01/07 23:10:28 alex Exp $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This is a sample configuration file for the ngIRCd, which must be adepted
 | 
					# This is a sample configuration file for the ngIRCd, which must be adepted
 | 
				
			||||||
@@ -100,6 +100,9 @@
 | 
				
			|||||||
	# Allow Pre-Defined Channels only (see Section [Channels])
 | 
						# Allow Pre-Defined Channels only (see Section [Channels])
 | 
				
			||||||
	;PredefChannelsOnly = no
 | 
						;PredefChannelsOnly = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Don't do any DNS lookups when a client connects to the server.
 | 
				
			||||||
 | 
						;NoDNS = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# Maximum number of simultaneous connection the server is allowed
 | 
						# Maximum number of simultaneous connection the server is allowed
 | 
				
			||||||
	# to accept (0: unlimited):
 | 
						# to accept (0: unlimited):
 | 
				
			||||||
	;MaxConnections = 0
 | 
						;MaxConnections = 0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "portab.h"
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char UNUSED id[] = "$Id: irc-channel.c,v 1.40 2007/07/31 18:56:14 alex Exp $";
 | 
					static char UNUSED id[] = "$Id: irc-channel.c,v 1.40.2.2 2008/02/26 12:07:41 fw Exp $";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "imp.h"
 | 
					#include "imp.h"
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
@@ -79,6 +79,14 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		chan = NULL; flags = NULL;
 | 
							chan = NULL; flags = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (Client_Type(Client) == CLIENT_SERVER) {
 | 
				
			||||||
 | 
								flags = strchr( channame, 0x7 );
 | 
				
			||||||
 | 
								if( flags ) {
 | 
				
			||||||
 | 
									*flags = '\0';
 | 
				
			||||||
 | 
									flags++;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* wird der Channel neu angelegt? */
 | 
							/* wird der Channel neu angelegt? */
 | 
				
			||||||
		if( Channel_Search( channame )) {
 | 
							if( Channel_Search( channame )) {
 | 
				
			||||||
			is_new_chan = false;
 | 
								is_new_chan = false;
 | 
				
			||||||
@@ -92,18 +100,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 | 
				
			|||||||
			is_new_chan = true;
 | 
								is_new_chan = true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* Hat ein Server Channel-User-Modes uebergeben? */
 | 
					 | 
				
			||||||
		if( Client_Type( Client ) == CLIENT_SERVER )
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			/* Channel-Flags extrahieren */
 | 
					 | 
				
			||||||
			flags = strchr( channame, 0x7 );
 | 
					 | 
				
			||||||
			if( flags )
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				*flags = '\0';
 | 
					 | 
				
			||||||
				flags++;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* Local client? */
 | 
							/* Local client? */
 | 
				
			||||||
		if( Client_Type( Client ) == CLIENT_USER )
 | 
							if( Client_Type( Client ) == CLIENT_USER )
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -269,8 +265,9 @@ IRC_PART( CLIENT *Client, REQUEST *Req )
 | 
				
			|||||||
	assert( Client != NULL );
 | 
						assert( Client != NULL );
 | 
				
			||||||
	assert( Req != NULL );
 | 
						assert( Req != NULL );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Falsche Anzahl Parameter? */
 | 
						if (Req->argc < 1 || Req->argc > 2)
 | 
				
			||||||
	if(( Req->argc > 2 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
 | 
							return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
 | 
				
			||||||
 | 
										Client_ID(Client), Req->command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Wer ist der Absender? */
 | 
						/* Wer ist der Absender? */
 | 
				
			||||||
	if( Client_Type( Client ) == CLIENT_SERVER ) target = Client_Search( Req->prefix );
 | 
						if( Client_Type( Client ) == CLIENT_SERVER ) target = Client_Search( Req->prefix );
 | 
				
			||||||
@@ -278,18 +275,11 @@ IRC_PART( CLIENT *Client, REQUEST *Req )
 | 
				
			|||||||
	if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
 | 
						if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Channel-Namen durchgehen */
 | 
						/* Channel-Namen durchgehen */
 | 
				
			||||||
	chan = strtok( Req->argv[0], "," );
 | 
						chan = strtok(Req->argv[0], ",");
 | 
				
			||||||
	while( chan )
 | 
						while (chan) {
 | 
				
			||||||
	{
 | 
							Channel_Part(target, Client, chan, Req->argc > 1 ? Req->argv[1] : Client_ID(target));
 | 
				
			||||||
		if( ! Channel_Part( target, Client, chan, Req->argc > 1 ? Req->argv[1] : Client_ID( target )))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			/* naechsten Namen ermitteln */
 | 
					 | 
				
			||||||
			chan = strtok( NULL, "," );
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* naechsten Namen ermitteln */
 | 
							chan = strtok(NULL, ",");
 | 
				
			||||||
		chan = strtok( NULL, "," );
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return CONNECTED;
 | 
						return CONNECTED;
 | 
				
			||||||
} /* IRC_PART */
 | 
					} /* IRC_PART */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "portab.h"
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char UNUSED id[] = "$Id: irc-info.c,v 1.41 2007/12/11 11:29:44 fw Exp $";
 | 
					static char UNUSED id[] = "$Id: irc-info.c,v 1.41.2.1 2008/02/26 12:06:57 fw Exp $";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "imp.h"
 | 
					#include "imp.h"
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
@@ -648,7 +648,11 @@ IRC_WHO( CLIENT *Client, REQUEST *Req )
 | 
				
			|||||||
			if( ok && (( ! only_ops ) || ( strchr( Client_Modes( c ), 'o' ))))
 | 
								if( ok && (( ! only_ops ) || ( strchr( Client_Modes( c ), 'o' ))))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				/* Get flags */
 | 
									/* Get flags */
 | 
				
			||||||
				strcpy( flags, "H" );
 | 
									if (strchr(Client_Modes( c ), 'a'))
 | 
				
			||||||
 | 
										strcpy(flags, "G"); /* away */
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										strcpy(flags, "H");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if( strchr( Client_Modes( c ), 'o' )) strlcat( flags, "*", sizeof( flags ));
 | 
									if( strchr( Client_Modes( c ), 'o' )) strlcat( flags, "*", sizeof( flags ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				/* Search suitable channel */
 | 
									/* Search suitable channel */
 | 
				
			||||||
@@ -1082,10 +1086,12 @@ IRC_Send_WHO( CLIENT *Client, CHANNEL *Chan, bool OnlyOps )
 | 
				
			|||||||
		if( strchr( Client_Modes( c ), 'i' )) is_visible = false;
 | 
							if( strchr( Client_Modes( c ), 'i' )) is_visible = false;
 | 
				
			||||||
		else is_visible = true;
 | 
							else is_visible = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if( is_member || is_visible )
 | 
							if( is_member || is_visible ) {
 | 
				
			||||||
		{
 | 
								if (strchr(Client_Modes( c ), 'a'))
 | 
				
			||||||
			/* Flags zusammenbasteln */
 | 
									strcpy(flags, "G"); /* away */
 | 
				
			||||||
			strcpy( flags, "H" );
 | 
								else
 | 
				
			||||||
 | 
									strcpy(flags, "H");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if( strchr( Client_Modes( c ), 'o' )) strlcat( flags, "*", sizeof( flags ));
 | 
								if( strchr( Client_Modes( c ), 'o' )) strlcat( flags, "*", sizeof( flags ));
 | 
				
			||||||
			if( strchr( Channel_UserModes( Chan, c ), 'o' )) strlcat( flags, "@", sizeof( flags ));
 | 
								if( strchr( Channel_UserModes( Chan, c ), 'o' )) strlcat( flags, "@", sizeof( flags ));
 | 
				
			||||||
			else if( strchr( Channel_UserModes( Chan, c ), 'v' )) strlcat( flags, "+", sizeof( flags ));
 | 
								else if( strchr( Channel_UserModes( Chan, c ), 'v' )) strlcat( flags, "+", sizeof( flags ));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "portab.h"
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char UNUSED id[] = "$Id: irc-login.c,v 1.54 2007/11/21 12:16:36 alex Exp $";
 | 
					static char UNUSED id[] = "$Id: irc-login.c,v 1.54.2.1 2008/02/05 11:48:37 fw Exp $";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "imp.h"
 | 
					#include "imp.h"
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
@@ -601,8 +601,8 @@ Hello_User( CLIENT *Client )
 | 
				
			|||||||
	/* Version and system type */
 | 
						/* Version and system type */
 | 
				
			||||||
#ifdef CVSDATE
 | 
					#ifdef CVSDATE
 | 
				
			||||||
	strlcpy( ver, CVSDATE, sizeof( ver ));
 | 
						strlcpy( ver, CVSDATE, sizeof( ver ));
 | 
				
			||||||
	strncpy( ver + 4, ver + 5, 2 );
 | 
						memmove( ver + 4, ver + 5, 2 );
 | 
				
			||||||
	strncpy( ver + 6, ver + 8, 3 );
 | 
						memmove( ver + 6, ver + 8, 3 );
 | 
				
			||||||
	snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
 | 
						snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
 | 
				
			||||||
	if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
 | 
						if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "portab.h"
 | 
					#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 "imp.h"
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
@@ -317,7 +317,7 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
 | 
				
			|||||||
	/* Prepare reply string */
 | 
						/* Prepare reply string */
 | 
				
			||||||
	if( set ) strcpy( the_modes, "+" );
 | 
						if( set ) strcpy( the_modes, "+" );
 | 
				
			||||||
	else strcpy( the_modes, "-" );
 | 
						else strcpy( the_modes, "-" );
 | 
				
			||||||
	strcpy( the_args, " " );
 | 
						the_args[0] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	x[1] = '\0';
 | 
						x[1] = '\0';
 | 
				
			||||||
	ok = CONNECTED;
 | 
						ok = CONNECTED;
 | 
				
			||||||
@@ -528,8 +528,8 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
 | 
				
			|||||||
				/* Channel-User-Mode */
 | 
									/* Channel-User-Mode */
 | 
				
			||||||
				if( Channel_UserModeAdd( Channel, client, x[0] ))
 | 
									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, " ", sizeof( the_args ));
 | 
				
			||||||
 | 
										strlcat( the_args, Client_ID( client ), sizeof( the_args ));
 | 
				
			||||||
					strlcat( the_modes, x, sizeof( the_modes ));
 | 
										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 ));
 | 
										Log( LOG_DEBUG, "User \"%s\": Mode change on %s, now \"%s\"", Client_Mask( client ), Channel_Name( Channel ), Channel_UserModes( Channel, client ));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@@ -552,8 +552,8 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
 | 
				
			|||||||
				/* Channel-User-Mode */
 | 
									/* Channel-User-Mode */
 | 
				
			||||||
				if( Channel_UserModeDel( Channel, client, x[0] ))
 | 
									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, " ", sizeof( the_args ));
 | 
				
			||||||
 | 
										strlcat( the_args, Client_ID( client ), sizeof( the_args ));
 | 
				
			||||||
					strlcat( the_modes, x, sizeof( the_modes ));
 | 
										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 ));
 | 
										Log( LOG_DEBUG, "User \"%s\": Mode change on %s, now \"%s\"", Client_Mask( client ), Channel_Name( Channel ), Channel_UserModes( Channel, client ));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@@ -572,8 +572,7 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
 | 
				
			|||||||
		/* Are there additional arguments to add? */
 | 
							/* Are there additional arguments to add? */
 | 
				
			||||||
		if( argadd[0] )
 | 
							if( argadd[0] )
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			len = strlen( the_args ) - 1;
 | 
								strlcat( the_args, " ", sizeof( the_args ));
 | 
				
			||||||
			if( the_args[len] != ' ' ) strlcat( the_args, " ", sizeof( the_args ));
 | 
					 | 
				
			||||||
			strlcat( the_args, argadd, sizeof( the_args ));
 | 
								strlcat( the_args, argadd, sizeof( the_args ));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -586,9 +585,6 @@ chan_exit:
 | 
				
			|||||||
		len = strlen( the_modes ) - 1;
 | 
							len = strlen( the_modes ) - 1;
 | 
				
			||||||
		if(( the_modes[len] == '+' ) || ( the_modes[len] == '-' )) the_modes[len] = '\0';
 | 
							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 )
 | 
							if( Client_Type( Client ) == CLIENT_SERVER )
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			/* Forward mode changes to channel users and other servers */
 | 
								/* Forward mode changes to channel users and other servers */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "portab.h"
 | 
					#include "portab.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char UNUSED id[] = "$Id: parse.c,v 1.69 2007/11/21 12:16:36 alex Exp $";
 | 
					static char UNUSED id[] = "$Id: parse.c,v 1.69.2.1 2008/02/05 13:11:20 fw Exp $";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @file
 | 
					 * @file
 | 
				
			||||||
@@ -358,7 +358,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
 | 
				
			|||||||
	bool result;
 | 
						bool result;
 | 
				
			||||||
	COMMAND *cmd;
 | 
						COMMAND *cmd;
 | 
				
			||||||
	NUMERIC *num;
 | 
						NUMERIC *num;
 | 
				
			||||||
	int i;
 | 
						int i, client_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assert( Idx >= 0 );
 | 
						assert( Idx >= 0 );
 | 
				
			||||||
	assert( Req != NULL );
 | 
						assert( Req != NULL );
 | 
				
			||||||
@@ -436,6 +436,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cmd = My_Commands;
 | 
						cmd = My_Commands;
 | 
				
			||||||
 | 
						client_type = Client_Type(client);
 | 
				
			||||||
	while( cmd->name )
 | 
						while( cmd->name )
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		/* Befehl suchen */
 | 
							/* Befehl suchen */
 | 
				
			||||||
@@ -444,7 +445,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
 | 
				
			|||||||
			cmd++; continue;
 | 
								cmd++; continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if( Client_Type( client ) & cmd->type )
 | 
							if( client_type & cmd->type )
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			/* Command is allowed for this client: call it and count produced bytes */
 | 
								/* Command is allowed for this client: call it and count produced bytes */
 | 
				
			||||||
			Conn_ResetWCounter( );
 | 
								Conn_ResetWCounter( );
 | 
				
			||||||
@@ -452,7 +453,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
 | 
				
			|||||||
			cmd->bytes += Conn_WCounter( );
 | 
								cmd->bytes += Conn_WCounter( );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			/* Adjust counters */
 | 
								/* Adjust counters */
 | 
				
			||||||
			if( Client_Type( client ) != CLIENT_SERVER ) cmd->lcount++;
 | 
								if( client_type != CLIENT_SERVER ) cmd->lcount++;
 | 
				
			||||||
			else cmd->rcount++;
 | 
								else cmd->rcount++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return result;
 | 
								return result;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
# $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
 | 
					spawn telnet localhost 6789
 | 
				
			||||||
expect {
 | 
					expect {
 | 
				
			||||||
@@ -72,7 +72,7 @@ expect {
 | 
				
			|||||||
send "mode #channel +v nick\r"
 | 
					send "mode #channel +v nick\r"
 | 
				
			||||||
expect {
 | 
					expect {
 | 
				
			||||||
	timeout { exit 1 }
 | 
						timeout { exit 1 }
 | 
				
			||||||
	"@* MODE #channel +v nick"
 | 
						"@* MODE #channel +v nick\r"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
send "mode #channel +I nick1\r"
 | 
					send "mode #channel +I nick1\r"
 | 
				
			||||||
@@ -96,7 +96,7 @@ expect {
 | 
				
			|||||||
send "mode #channel -vo nick nick\r"
 | 
					send "mode #channel -vo nick nick\r"
 | 
				
			||||||
expect {
 | 
					expect {
 | 
				
			||||||
	timeout { exit 1 }
 | 
						timeout { exit 1 }
 | 
				
			||||||
	"@* MODE #channel -vo nick nick"
 | 
						"@* MODE #channel -vo nick nick\r"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
send "quit\r"
 | 
					send "quit\r"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user