repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 15fec92ed75c3de0b32c40d005e93e3f61aef77e:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 15fec92ed75c3de0b32c40d005e93e3f61aef77e
Author: Alexander Barton 
Date:   Sun Dec 25 19:43:00 2011 +0100

    Update list item, if it already exists

    This updates the "validity" (timeout) as well as the "reason" text,
    if given.

diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c
index 11f8e888fec5292ff9b169c2fa9cd4954b2fc413..
index ..27a51dca1f3a3787932a53283b4308bce8fc3e25 100644
--- a/src/ngircd/lists.c
+++ b/src/ngircd/lists.c
@@ -126,8 +126,19 @@ Lists_Add(struct list_head *h, const char *Mask, time_t ValidUntil,
 	assert(h != NULL);
 	assert(Mask != NULL);

-	if (Lists_CheckDupeMask(h, Mask))
+	e = Lists_CheckDupeMask(h, Mask);
+	if (e) {
+		e->valid_until = ValidUntil;
+		if (e->reason)
+			free(e->reason);
+		e->reason = malloc(strlen(Reason) + 1);
+		if (e->reason)
+			strlcpy(e->reason, Reason, strlen(Reason) + 1);
+		else
+			Log(LOG_EMERG,
+			    "Can't allocate memory for new list reason text!");
 		return true;
+	}

 	e = Lists_GetFirst(h);

-----END OF PAGE-----