about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/client.c3
-rw-r--r--src/ngircd/irc-channel.c6
-rw-r--r--src/ngircd/irc-login.c3
-rw-r--r--src/ngircd/irc-mode.c4
-rw-r--r--src/ngircd/irc.c7
-rw-r--r--src/ngircd/numeric.c3
6 files changed, 19 insertions, 7 deletions
diff --git a/src/ngircd/client.c b/src/ngircd/client.c
index a8a2ddfa..1d01f784 100644
--- a/src/ngircd/client.c
+++ b/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 */
 
 
diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c
index f64570ad..b557b531 100644
--- a/src/ngircd/irc-channel.c
+++ b/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] );
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 95ec959c..9a04a3f7 100644
--- a/src/ngircd/irc-login.c
+++ b/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).",
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index f4e3e0f9..76e3ab46 100644
--- a/src/ngircd/irc-mode.c
+++ b/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 );	
diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
index ad9d32c9..0741aefa 100644
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -419,7 +419,14 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
 
 		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,
diff --git a/src/ngircd/numeric.c b/src/ngircd/numeric.c
index af1ac027..927989db 100644
--- a/src/ngircd/numeric.c
+++ b/src/ngircd/numeric.c
@@ -252,7 +252,8 @@ IRC_Num_ENDOFMOTD(CLIENT * Client, UNUSED REQUEST * Req)
 	/* 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;
 		}