Commit Diff


commit - 8067bab10613dbc63b8c54e67b355fead674556a
commit + 87f4b1c6f64f85556533f01d95da1cf83a91d4c6
blob - 30e214c440c74f95a2b563e313884884ae9a3498
blob + 01ef091668ba9ae73f3fdd1d05ae05c27bf59fd9
--- src/ngircd/client.c
+++ src/ngircd/client.c
@@ -17,7 +17,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: client.c,v 1.90 2006/03/24 23:25:38 fw Exp $";
+static char UNUSED id[] = "$Id: client.c,v 1.91 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -564,27 +564,6 @@ Client_ModeDel( CLIENT *Client, char Mode )
 
 
 GLOBAL CLIENT *
-Client_GetFromConn( CONN_ID Idx )
-{
-	/* return Client-Structure that belongs to the local Connection Idx.
-	 * If none is found, return NULL.
-	 */
-
-	CLIENT *c;
-
-	assert( Idx >= 0 );
-	
-	c = My_Clients;
-	while( c )
-	{
-		if( c->conn_id == Idx ) return c;
-		c = (CLIENT *)c->next;
-	}
-	return NULL;
-} /* Client_GetFromConn */
-
-
-GLOBAL CLIENT *
 Client_Search( char *Nick )
 {
 	/* return Client-Structure that has the corresponding Nick.
blob - dedae2fbe730a1f41478ea01ebc5795142cc8e7d
blob + 73de52b5cd7e49dd89b6b0725d2600368b4c79a3
--- src/ngircd/client.h
+++ src/ngircd/client.h
@@ -8,7 +8,7 @@
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
  *
- * $Id: client.h,v 1.41 2006/03/11 01:37:31 alex Exp $
+ * $Id: client.h,v 1.42 2006/04/23 10:37:27 fw Exp $
  *
  * Client management (header)
  */
@@ -30,6 +30,7 @@
 
 #define CLIENT_TYPE int
 
+#include "defines.h"
 
 #if defined(__client_c__) | defined(S_SPLINT_S)
 
@@ -86,7 +87,6 @@ GLOBAL void Client_DestroyNow PARAMS(( CLIENT *Client 
 
 GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
 
-GLOBAL CLIENT *Client_GetFromConn PARAMS(( CONN_ID Idx ));
 GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
 
 GLOBAL CLIENT *Client_Search PARAMS(( char *ID ));
blob - eb359b27068ab4b6374c54673766dc04ab986c48
blob + 6aaf26e458a1931ff380ed6fb6687c76f4b519ef
--- src/ngircd/conn-func.c
+++ src/ngircd/conn-func.c
@@ -16,7 +16,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: conn-func.c,v 1.8 2005/09/04 23:38:32 alex Exp $";
+static char UNUSED id[] = "$Id: conn-func.c,v 1.9 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -177,7 +177,7 @@ Conn_StartTime( CONN_ID Idx )
 	assert(Idx > NONE);
 
 	/* Search client structure for this link ... */
-	c = Client_GetFromConn(Idx);
+	c = Conn_GetClient(Idx);
 	if(c != NULL)
 		return Client_StartTime(c);
 
blob - e8ea4b061b08073c0237f756ff9ec88b21bc30f5
blob + f8d396dd2a8d3b8e9a8b9d5faf6e097a6c9314d5
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
@@ -17,7 +17,7 @@
 #include "portab.h"
 #include "io.h"
 
-static char UNUSED id[] = "$Id: conn.c,v 1.191 2006/03/18 22:27:09 fw Exp $";
+static char UNUSED id[] = "$Id: conn.c,v 1.192 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -152,7 +152,7 @@ cb_connserver(int sock, UNUSED short what)
 
 		/* Clean up the CLIENT structure (to avoid silly log
  		 * messages) and call Conn_Close() to do the rest. */
- 		c = Client_GetFromConn(idx);
+ 		c = Conn_GetClient(idx);
  		if (c)
 			Client_DestroyNow(c);
  
@@ -602,7 +602,6 @@ va_dcl
 #endif
 
 	len = strlcat( buffer, "\r\n", sizeof( buffer ));
-	assert(len < COMMAND_LEN);
 	ok = Conn_Write(Idx, buffer, len);
 	My_Connections[Idx].msg_out++;
 
@@ -704,7 +703,7 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, b
 	Log( LOG_INFO, "Shutting down connection %d (%s) with %s:%d ...", Idx, LogMsg ? LogMsg : FwdMsg, My_Connections[Idx].host, ntohs( My_Connections[Idx].addr.sin_port ));
 
 	/* Search client, if any */
-	c = Client_GetFromConn( Idx );
+	c = Conn_GetClient( Idx );
 
 	/* Should the client be informed? */
 	if (InformClient) {
@@ -734,7 +733,7 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, b
 	(void)Handle_Write( Idx );
 
 	/* Search client, if any (re-check!) */
-	c = Client_GetFromConn( Idx );
+	c = Conn_GetClient( Idx );
 
 	/* Shut down socket */
 	if( ! io_close( My_Connections[Idx].sock ))
@@ -809,7 +808,7 @@ Conn_SyncServerStruct( void )
 			continue;
 
 		/* Server connection? */
-		client = Client_GetFromConn( i );
+		client = Conn_GetClient( i );
 		if(( ! client ) || ( Client_Type( client ) != CLIENT_SERVER )) continue;
 
 		for( c = 0; c < MAX_SERVERS; c++ )
@@ -973,6 +972,7 @@ New_Connection( int Sock )
 	Init_Conn_Struct( new_sock );
 	My_Connections[new_sock].sock = new_sock;
 	My_Connections[new_sock].addr = new_addr;
+	My_Connections[new_sock].client = c;
 
 	/* register callback */
 	if (!io_event_create( new_sock, IO_WANTREAD, cb_clientserver)) {
@@ -1083,7 +1083,7 @@ Read_Request( CONN_ID Idx )
 	 * registered as a user, server or service connection. Don't update
 	 * otherwise, so users have at least Conf_PongTimeout seconds time to
 	 * register with the IRC server -- see Check_Connections(). */
-	c = Client_GetFromConn(Idx);
+	c = Conn_GetClient(Idx);
 	if (c && (Client_Type(c) == CLIENT_USER
 		  || Client_Type(c) == CLIENT_SERVER
 		  || Client_Type(c) == CLIENT_SERVICE))
@@ -1216,7 +1216,7 @@ Check_Connections( void )
 		if (My_Connections[i].sock < 0)
 			continue;
 
-		c = Client_GetFromConn( i );
+		c = Conn_GetClient( i );
 		if( c && (( Client_Type( c ) == CLIENT_USER ) || ( Client_Type( c ) == CLIENT_SERVER ) || ( Client_Type( c ) == CLIENT_SERVICE )))
 		{
 			/* connected User, Server or Service */
@@ -1366,6 +1366,7 @@ New_Server( int Server )
 	Conf_Server[Server].conn_id = new_sock;
 	My_Connections[new_sock].sock = new_sock;
 	My_Connections[new_sock].addr = new_addr;
+	My_Connections[new_sock].client = c;
 	strlcpy( My_Connections[new_sock].host, Conf_Server[Server].host,
 				sizeof(My_Connections[new_sock].host ));
 
@@ -1523,7 +1524,7 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events
 	 * incoming connections.*/
 	assert ( My_Connections[i].sock >= 0 );
 	/* Incoming connection. Search client ... */
-	c = Client_GetFromConn( i );
+	c = Conn_GetClient( i );
 	assert( c != NULL );
 
 	/* Only update client information of unregistered clients */
@@ -1551,8 +1552,8 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events
 static void
 Simple_Message( int Sock, const char *Msg )
 {
-	size_t len;
 	char buf[COMMAND_LEN];
+	size_t len;
 	/* Write "simple" message to socket, without using compression
 	 * or even the connection write buffers. Used e.g. for error
 	 * messages by New_Connection(). */
@@ -1561,7 +1562,6 @@ Simple_Message( int Sock, const char *Msg )
 
 	strlcpy( buf, Msg, sizeof buf - 2);
 	len = strlcat( buf, "\r\n", sizeof buf);
-	assert(len < COMMAND_LEN);
 	(void)write(Sock, buf, len);
 } /* Simple_Error */
 
@@ -1579,5 +1579,20 @@ Count_Connections( struct sockaddr_in addr_in )
 } /* Count_Connections */
 
 
+GLOBAL CLIENT *
+Conn_GetClient( CONN_ID Idx ) 
+{
+	/* return Client-Structure that belongs to the local Connection Idx.
+	 * If none is found, return NULL.
+	 */
+	CONNECTION *c;
+	assert( Idx >= 0 );
 
+	c = array_get(&My_ConnArray, sizeof (CONNECTION), Idx);
+	
+	assert(c != NULL);
+	
+	return c ? c->client : NULL;
+}
+
 /* -eof- */
blob - 7d1c2e54c2a6a0991009476cf8f45d215ddd43a9
blob + d061d8358d8dbfaa66fc786e2af445f50bb568e6
--- src/ngircd/conn.h
+++ src/ngircd/conn.h
@@ -8,7 +8,7 @@
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
  *
- * $Id: conn.h,v 1.40 2006/02/02 21:00:22 fw Exp $
+ * $Id: conn.h,v 1.41 2006/04/23 10:37:27 fw Exp $
  *
  * Connection management (header)
  */
@@ -31,6 +31,7 @@
 
 typedef int CONN_ID;
 
+#include "client.h"
 
 #ifdef CONN_MODULE
 
@@ -66,6 +67,7 @@ typedef struct _Connection
 	long msg_in, msg_out;		/* Received and sent IRC messages */
 	int flag;			/* Flag (see "irc-write" module) */
 	UINT16 options;			/* Link options / connection state */
+	CLIENT *client;			/* pointer to client structure */
 #ifdef ZLIB
 	ZIPDATA zip;			/* Compression information */
 #endif  /* ZLIB */
@@ -93,7 +95,7 @@ GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, char *Log
 
 GLOBAL void Conn_SyncServerStruct PARAMS(( void ));
 
+GLOBAL CLIENT* Conn_GetClient PARAMS((CONN_ID i));
 #endif
 
-
 /* -eof- */
blob - 45fc814d33076712895b556a59e65df41cdcb184
blob + 48d447ca4fb1f1124bb38b0d47e02f975775be03
--- src/ngircd/irc-info.c
+++ src/ngircd/irc-info.c
@@ -14,7 +14,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc-info.c,v 1.31 2006/01/27 17:19:58 fw Exp $";
+static char UNUSED id[] = "$Id: irc-info.c,v 1.32 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -377,7 +377,7 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
 			con = Conn_First( );
 			while( con != NONE )
 			{
-				cl = Client_GetFromConn( con );
+				cl = Conn_GetClient( con );
 				if( cl && (( Client_Type( cl ) == CLIENT_SERVER ) || ( cl == Client )))
 				{
 					/* Server link or our own connection */
blob - aa19836d1c9fcc480fd74c1834fe933f03a70d53
blob + 2baa6d3d5f811e6fe003f56b9be5023878ba9118
--- src/ngircd/irc-oper.c
+++ src/ngircd/irc-oper.c
@@ -14,7 +14,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc-oper.c,v 1.24 2005/07/31 20:13:08 alex Exp $";
+static char UNUSED id[] = "$Id: irc-oper.c,v 1.25 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -208,7 +208,7 @@ IRC_DISCONNECT(CLIENT *Client, REQUEST *Req )
 	if( ! Conf_DisableServer( Req->argv[0] )) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[0] );
 
 	/* Are we still connected or were we killed, too? */
-	if( Client_GetFromConn( my_conn )) return CONNECTED;
+	if( Conn_GetClient( my_conn )) return CONNECTED;
 	else return DISCONNECTED;
 } /* IRC_CONNECT */
 
blob - 98dda7af2ad6dc198ff61ad368c1e471b4b95d5d
blob + 33ee22684be0dd9165a5626f2cd9d0e0f32909e2
--- src/ngircd/irc.c
+++ src/ngircd/irc.c
@@ -14,7 +14,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc.c,v 1.128 2005/08/02 23:19:22 alex Exp $";
+static char UNUSED id[] = "$Id: irc.c,v 1.129 2006/04/23 10:37:27 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -160,7 +160,7 @@ IRC_KILL( CLIENT *Client, REQUEST *Req )
 		Log( LOG_NOTICE, "Client with nick \"%s\" is unknown here.", Req->argv[0] );
 
 	/* Are we still connected or were we killed, too? */
-	if(( my_conn > NONE ) && ( Client_GetFromConn( my_conn )))
+	if(( my_conn > NONE ) && ( Conn_GetClient( my_conn )))
 		return CONNECTED;
 	else
 		return DISCONNECTED;
blob - 5896a027718d8544fdb987fd38f45dcdac14b8aa
blob + 548c3729543aa9838ffccc2e85c9500e88436735
--- src/ngircd/parse.c
+++ src/ngircd/parse.c
@@ -12,7 +12,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: parse.c,v 1.66 2005/09/04 23:42:24 alex Exp $";
+static char UNUSED id[] = "$Id: parse.c,v 1.67 2006/04/23 10:37:27 fw Exp $";
 
 /**
  * @file
@@ -277,7 +277,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, bool *Clos
 	if( ! Req->prefix ) return true;
 
 	/* Client-Struktur der Connection ermitteln */
-	client = Client_GetFromConn( Idx );
+	client = Conn_GetClient( Idx );
 	assert( client != NULL );
 
 	/* nur validieren, wenn bereits registrierte Verbindung */
@@ -306,7 +306,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, bool *Clos
 	{
 		/* das angegebene Prefix ist aus dieser Richtung, also
 		 * aus der gegebenen Connection, ungueltig! */
-		Log( LOG_ERR, "Spoofed prefix \"%s\" from \"%s\" (connection %d, command %s)!", Req->prefix, Client_Mask( Client_GetFromConn( Idx )), Idx, Req->command );
+		Log( LOG_ERR, "Spoofed prefix \"%s\" from \"%s\" (connection %d, command %s)!", Req->prefix, Client_Mask( Conn_GetClient( Idx )), Idx, Req->command );
 		Conn_Close( Idx, NULL, "Spoofed prefix", true);
 		*Closed = true;
 		return false;
@@ -354,7 +354,7 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
 	assert( Req != NULL );
 	assert( Req->command != NULL );
 
-	client = Client_GetFromConn( Idx );
+	client = Conn_GetClient( Idx );
 	assert( client != NULL );
 
 	/* Statuscode? */