1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-12-12 09:50:29 +00:00

IRC_SERVER(): Code cleanup

This commit is contained in:
Alexander Barton 2012-10-28 18:52:37 +01:00
parent b18e81b631
commit d7b5dd1bbf

View File

@ -53,7 +53,6 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
char str[LINE_LEN]; char str[LINE_LEN];
CLIENT *from, *c; CLIENT *from, *c;
int i; int i;
CONN_ID con;
assert( Client != NULL ); assert( Client != NULL );
assert( Req != NULL ); assert( Req != NULL );
@ -70,27 +69,40 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
LogDebug("Connection %d: got SERVER command (new server link) ...", LogDebug("Connection %d: got SERVER command (new server link) ...",
Client_Conn(Client)); Client_Conn(Client));
if(( Req->argc != 2 ) && ( Req->argc != 3 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); if (Req->argc != 2 && Req->argc != 3)
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client),
Req->command);
/* Ist this server configured on out side? */ /* Get configuration index of new remote server ... */
for( i = 0; i < MAX_SERVERS; i++ ) if( strcasecmp( Req->argv[0], Conf_Server[i].name ) == 0 ) break; for (i = 0; i < MAX_SERVERS; i++)
if( i >= MAX_SERVERS ) if (strcasecmp(Req->argv[0], Conf_Server[i].name) == 0)
{ break;
Log( LOG_ERR, "Connection %d: Server \"%s\" not configured here!", Client_Conn( Client ), Req->argv[0] );
Conn_Close( Client_Conn( Client ), NULL, "Server not configured here", true); /* Makre sure the remote server is configured here */
if (i >= MAX_SERVERS) {
Log(LOG_ERR,
"Connection %d: Server \"%s\" not configured here!",
Client_Conn(Client), Req->argv[0]);
Conn_Close(Client_Conn(Client), NULL,
"Server not configured here", true);
return DISCONNECTED; return DISCONNECTED;
} }
if( strcmp( Conn_Password( Client_Conn( Client ) ),
Conf_Server[i].pwd_in ) != 0 ) /* Check server password */
{ if (strcmp(Conn_Password(Client_Conn(Client)),
/* wrong password */ Conf_Server[i].pwd_in) != 0) {
Log( LOG_ERR, "Connection %d: Got bad password from server \"%s\"!", Client_Conn( Client ), Req->argv[0] ); Log(LOG_ERR,
Conn_Close( Client_Conn( Client ), NULL, "Bad password", true); "Connection %d: Got bad password from server \"%s\"!",
Client_Conn(Client), Req->argv[0]);
Conn_Close(Client_Conn(Client), NULL,
"Bad password", true);
return DISCONNECTED; return DISCONNECTED;
} }
/* Is there a registered server with this ID? */ /* Is there a registered server with this ID? */
if( ! Client_CheckID( Client, Req->argv[0] )) return DISCONNECTED; if (!Client_CheckID(Client, Req->argv[0]))
return DISCONNECTED;
Client_SetID( Client, Req->argv[0] ); Client_SetID( Client, Req->argv[0] );
Client_SetHops( Client, 1 ); Client_SetHops( Client, 1 );
@ -98,7 +110,6 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
/* Is this server registering on our side, or are we connecting to /* Is this server registering on our side, or are we connecting to
* a remote server? */ * a remote server? */
con = Client_Conn(Client);
if (Client_Token(Client) != TOKEN_OUTBOUND) { if (Client_Token(Client) != TOKEN_OUTBOUND) {
/* Incoming connection, send user/pass */ /* Incoming connection, send user/pass */
if (!IRC_WriteStrClient(Client, "PASS %s %s", if (!IRC_WriteStrClient(Client, "PASS %s %s",
@ -107,7 +118,8 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
|| !IRC_WriteStrClient(Client, "SERVER %s 1 :%s", || !IRC_WriteStrClient(Client, "SERVER %s 1 :%s",
Conf_ServerName, Conf_ServerName,
Conf_ServerInfo)) { Conf_ServerInfo)) {
Conn_Close(con, "Unexpected server behavior!", Conn_Close(Client_Conn(Client),
"Unexpected server behavior!",
NULL, false); NULL, false);
return DISCONNECTED; return DISCONNECTED;
} }
@ -120,24 +132,27 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
} }
/* Mark this connection as belonging to an configured server */ /* Mark this connection as belonging to an configured server */
Conf_SetServer(i, con); Conf_SetServer(i, Client_Conn(Client));
/* Check protocol level */ /* Check protocol level */
if (Client_Type(Client) == CLIENT_GOTPASS) { if (Client_Type(Client) == CLIENT_GOTPASS) {
/* We got a "simple" PASS command, so the peer is /* We got a "simple" PASS command, so the peer is
* using the protocol as defined in RFC 1459. */ * using the protocol as defined in RFC 1459. */
if (! (Conn_Options(con) & CONN_RFC1459)) if (!Conn_Options(Client_Conn(Client)) & CONN_RFC1459)
Log(LOG_INFO, Log(LOG_INFO,
"Switching connection %d (\"%s\") to RFC 1459 compatibility mode.", "Switching connection %d (\"%s\") to RFC 1459 compatibility mode.",
con, Client_ID(Client)); Client_Conn(Client), Client_ID(Client));
Conn_SetOption(con, CONN_RFC1459); Conn_SetOption(Client_Conn(Client), CONN_RFC1459);
} }
Client_SetType(Client, CLIENT_UNKNOWNSERVER); Client_SetType(Client, CLIENT_UNKNOWNSERVER);
#ifdef ZLIB #ifdef ZLIB
if (strchr(Client_Flags(Client), 'Z') && !Zip_InitConn(con)) { if (strchr(Client_Flags(Client), 'Z')
Conn_Close( con, "Can't inizialize compression (zlib)!", NULL, false ); && !Zip_InitConn(Client_Conn(Client))) {
Conn_Close(Client_Conn(Client),
"Can't inizialize compression (zlib)!",
NULL, false );
return DISCONNECTED; return DISCONNECTED;
} }
#endif #endif