[NeoStats-Devel] NeoStats [Commits] r3059 - in /trunk: ChangeLog modules/statserv/channel.h modules/statserv/network.h modules/statserv/user.c

[email protected] Fri, 22 Dec 2006 21:02:53 -0000
Newsgroups gmane.comp.neostats.devel
Message-ID <[email protected]>
Author: Mark
Date: Sat Dec 23 05:02:52 2006
New Revision: 3059

URL: http://svn.neostats.net/cgi-bin/viewvc.cgi?rev=3059&root=NeoStats&view=rev
Log:
Fix StatServ oper counts

Modified:
    trunk/ChangeLog
    trunk/modules/statserv/channel.h
    trunk/modules/statserv/network.h
    trunk/modules/statserv/user.c

Modified: trunk/ChangeLog
URL: http://svn.neostats.net/cgi-bin/viewvc.cgi/trunk/ChangeLog?rev=3059&root=NeoStats&r1=3058&r2=3059&view=diff
==============================================================================
--- trunk/ChangeLog (original)
+++ trunk/ChangeLog Sat Dec 23 05:02:52 2006
@@ -5,6 +5,8 @@
 Fish (F), Mark (M), DeadNotBuried (D)
 ===============================================================================
 * NeoStats * Version 3.0.b1-dev
+ - Fix StatServ oper counts. (M)
+ - Fix 4 year old bug in module loading.  (M)
  - Fix up neostats startup script etc for cron related issues - Thanks to
    Digerati for the heads up(F)
  - add plexus 3 protocol file for reference (D)

Modified: trunk/modules/statserv/channel.h
URL: http://svn.neostats.net/cgi-bin/viewvc.cgi/trunk/modules/statserv/channel.h?rev=3059&root=NeoStats&r1=3058&r2=3059&view=diff
==============================================================================
--- trunk/modules/statserv/channel.h (original)
+++ trunk/modules/statserv/channel.h Sat Dec 23 05:02:52 2006
@@ -30,8 +30,8 @@
 	CHANNEL_SORT_MEMBERS,
 	CHANNEL_SORT_JOINS,
 	CHANNEL_SORT_KICKS,
-	CHANNEL_SORT_TOPICS,
-}CHANNEL_SORT;
+	CHANNEL_SORT_TOPICS
+} CHANNEL_SORT;
 
 typedef struct channelstat 
 {
@@ -44,7 +44,7 @@
 	statistic kicks;
 	statistic topics;
 	statistic joins;
-}channelstat;
+} channelstat;
 
 typedef void (*ChannelStatHandler)( channelstat *cs, const void *v );
 

Modified: trunk/modules/statserv/network.h
URL: http://svn.neostats.net/cgi-bin/viewvc.cgi/trunk/modules/statserv/network.h?rev=3059&root=NeoStats&r1=3058&r2=3059&view=diff
==============================================================================
--- trunk/modules/statserv/network.h (original)
+++ trunk/modules/statserv/network.h Sat Dec 23 05:02:52 2006
@@ -24,7 +24,8 @@
 #ifndef _NETWORK_H_
 #define _NETWORK_H_
 
-typedef struct networkstat {
+typedef struct networkstat
+{
 	statistic servers;
 	statistic channels;
 	statistic users;

Modified: trunk/modules/statserv/user.c
URL: http://svn.neostats.net/cgi-bin/viewvc.cgi/trunk/modules/statserv/user.c?rev=3059&root=NeoStats&r1=3058&r2=3059&view=diff
==============================================================================
--- trunk/modules/statserv/user.c (original)
+++ trunk/modules/statserv/user.c Sat Dec 23 05:02:52 2006
@@ -80,6 +80,7 @@
 int ss_event_mode( const CmdParams *cmdparams )
 {
 	int add = 1;
+	int operadded = 0;
 	serverstat *ss;
 	char *modes = cmdparams->param;
 
@@ -94,32 +95,40 @@
 	{
 		switch( *modes )
 		{
-		case '+':
-			add = 1;
-			break;
-		case '-':
-			add = 0;
-			break;
-		case 'O':
-		case 'o':
-			if( add )
-			{
-				dlog( DEBUG1, "Increasing OperCount for %s", ss->name );
-				AddNetworkOper();
-				AddServerOper( cmdparams->source );
-			}
-			else
-			{
-				if( IsOper( cmdparams->source ) )
+			case '+':
+				add = 1;
+				break;
+			case '-':
+				add = 0;
+				break;
+			case 'O':
+			case 'o':
+				if( add != 0 )
 				{
-					dlog( DEBUG1, "Decreasing OperCount for %s", ss->name );
-					DelNetworkOper();
-					DelServerOper( cmdparams->source );
+					/* only inc opercount if we have not already added during this parse */
+					if( operadded == 0 )
+					{
+						dlog( DEBUG1, "Increasing OperCount for %s", ss->name );
+						AddNetworkOper();
+						AddServerOper( cmdparams->source );
+						/* Flag oper added */
+						operadded = 1;
+					}
 				}
-			}
-			break;
-		default:
-			break;
+				else
+				{
+					if( IsOper( cmdparams->source ) )
+					{
+						dlog( DEBUG1, "Decreasing OperCount for %s", ss->name );
+						DelNetworkOper();
+						DelServerOper( cmdparams->source );
+						/* Clear oper added to support +o-o+o correctly */
+						operadded = 0;
+					}
+				}
+				break;
+			default:
+				break;
 		}
 		modes++;
 	}