Commit Diff


commit - 4e125fb67cf9d00a9da0bf4602a4e5c0745bf282
commit + d93030ad27af9cd6a807de8f672ae73ec0e1dff8
blob - a8a2ddfa528c3e34ec84989d0a64acffb8352dfc
blob + 1d01f784387bac124925d41c01844ebc7ae1a991
--- src/ngircd/client.c
+++ src/ngircd/client.c
@@ -402,7 +402,8 @@ Client_SetAway( CLIENT *Client, char *Txt )
 	assert( Txt != NULL );
 
 	strlcpy( Client->away, Txt, sizeof( Client->away ));
-	Log( LOG_DEBUG, "User \"%s\" is away: %s", Client_Mask( Client ), Txt );
+	LogDebug("%s \"%s\" is away: %s", Client_TypeText(Client),
+		 Client_Mask(Client), Txt);
 } /* Client_SetAway */
 
 
blob - f64570ad6483924c8a72fd08ac8b74088ebf31e7
blob + b557b531192b44074313dff3b74e372be4c96bb9
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
@@ -396,9 +396,9 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
 
 	/* Set new topic */
 	Channel_SetTopic(chan, from, Req->argv[1]);
-	Log(LOG_DEBUG, "User \"%s\" set topic on \"%s\": %s",
-		Client_Mask(from), Channel_Name(chan),
-		Req->argv[1][0] ? Req->argv[1] : "<none>");
+	LogDebug("%s \"%s\" set topic on \"%s\": %s",
+		 Client_TypeText(from), Client_Mask(from), Channel_Name(chan),
+		 Req->argv[1][0] ? Req->argv[1] : "<none>");
 
 	/* im Channel bekannt machen und an Server weiterleiten */
 	IRC_WriteStrServersPrefix( Client, from, "TOPIC %s :%s", Req->argv[0], Req->argv[1] );
blob - 95ec959cc0cf9bbf9d588e2776c4a51bbe59a442
blob + 9a04a3f74cf29c3eba66208904f8615fbf520c47
--- src/ngircd/irc-login.c
+++ src/ngircd/irc-login.c
@@ -672,7 +672,7 @@ Hello_User(CLIENT * Client)
 	if (strcmp(Client_Password(Client), Conf_ServerPwd) != 0) {
 		/* Bad password! */
 		Log(LOG_ERR,
-		    "User \"%s\" rejected (connection %d): Bad password!",
+		    "Client \"%s\" rejected (connection %d): Bad password!",
 		    Client_Mask(Client), Client_Conn(Client));
 		Conn_Close(Client_Conn(Client), NULL, "Bad password", true);
 		return DISCONNECTED;
@@ -742,6 +742,7 @@ Introduce_Client(CLIENT *From, CLIENT *Client)
 	if (From) {
 		if (Conf_IsService(Conf_GetServer(Client_Conn(From)), Client_ID(Client))) {
 			type = "Service";
+			Client_SetType(Client, CLIENT_SERVICE);
 		} else
 			type = "User";
 		LogDebug("%s \"%s\" (+%s) registered (via %s, on %s, %d hop%s).",
blob - f4e3e0f92696bde34fc02b76de825c99585ed00d
blob + 76e3ab4677fd40d372e99187c4481ba9b54781db
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
@@ -229,7 +229,9 @@ client_exit:
 			ok = IRC_WriteStrClientPrefix( Client, Origin, "MODE %s :%s", Client_ID( Target ), the_modes );
 			IRC_WriteStrServersPrefix( Client, Origin, "MODE %s :%s", Client_ID( Target ), the_modes );
 		}
-		Log( LOG_DEBUG, "User \"%s\": Mode change, now \"%s\".", Client_Mask( Target ), Client_Modes( Target ));
+		LogDebug("%s \"%s\": Mode change, now \"%s\".",
+			 Client_TypeText(Target), Client_Mask(Target),
+			 Client_Modes(Target));
 	}
 	
 	IRC_SetPenalty( Client, 1 );	
blob - ad9d32c9ff0845a90a7a7a2299956b1459bbe986
blob + 0741aefa9622f02dc06439c63cba0142365d1f46
--- src/ngircd/irc.c
+++ src/ngircd/irc.c
@@ -419,7 +419,14 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force
 
 		if (cl) {
 			/* Target is a user, enforce type */
+#ifndef STRICT_RFC
+			if (Client_Type(cl) != ForceType &&
+			    !(ForceType == CLIENT_USER &&
+			      (Client_Type(cl) == CLIENT_USER ||
+			       Client_Type(cl) == CLIENT_SERVICE))) {
+#else
 			if (Client_Type(cl) != ForceType) {
+#endif
 				if (!SendErrors)
 					return CONNECTED;
 				return IRC_WriteStrClient(from, ERR_NOSUCHNICK_MSG,
blob - af1ac027927f5215aa0070f0ca3b1c804f0125e3
blob + 927989db9923d99567703938a9800ec60b8803ab
--- src/ngircd/numeric.c
+++ src/ngircd/numeric.c
@@ -252,7 +252,8 @@ IRC_Num_ENDOFMOTD(CLIENT * Client, UNUSED REQUEST * Re
 	/* Announce all the users to the new server */
 	c = Client_First();
 	while (c) {
-		if (Client_Type(c) == CLIENT_USER) {
+		if (Client_Type(c) == CLIENT_USER ||
+		    Client_Type(c) == CLIENT_SERVICE) {
 			if (!Announce_User(Client, c))
 				return DISCONNECTED;
 		}