shithub: ircd

Download patch

ref: e31571ccd655aabc78d736047c6211f024ead09c
parent: d22d253f7d37601c8cfd4f4603dfa3489e9d0593
author: sirjofri <sirjofri@sirjofri.de>
date: Tue Jul 22 16:18:17 EDT 2025

only greet once

--- a/cmd.c
+++ b/cmd.c
@@ -35,8 +35,10 @@
 	u->realname = strdup(r->args[3]);
 	c->user = u;
 	
-	if (c->nick)
+	if (c->nick && !u->greeted) {
+		u->greeted = 1;
 		reply(c, Rwelcome, welcome, c->nick, u->name, sysnameb);
+	}
 }
 
 static void
@@ -54,8 +56,10 @@
 	
 	c->nick = strdup(r->args[0]);
 	
-	if (c->user)
+	if (c->user && !c->user->greeted) {
+		c->user->greeted = 1;
 		reply(c, Rwelcome, welcome, c->nick, c->user->name, sysnameb);
+	}
 }
 
 static void
--- a/dat.h
+++ b/dat.h
@@ -4,7 +4,6 @@
 typedef struct Reply Reply;
 typedef struct User User;
 typedef struct Replybuffer Replybuffer;
-typedef struct Userlist Userlist;
 typedef struct Client Client;
 
 #pragma varargck type "R" Request
@@ -45,14 +44,10 @@
 {
 	char *name;
 	char *realname;
+	int greeted;
 	
 	User *prev;
 	User *next;
-};
-
-struct Userlist
-{
-	User *first;
 };
 
 struct Client
--