Enhancement #223
openProvide a way to reset a specific nickname's backlog (private messages)
0%
Description
Imagine this scenario: bip running on a server (common), and you talk to lots of people via private messages (less common?), say, oh, 80 people. Life is good.
Restart the client (not the server), or open another client to the bip server; whatever. Result: 80 "channels" for each of the private messages. This is...overwhelming.
I would like a way to close these private messages.
The ~obvious way would be to use /part:
/part nickname
Unfortunately, this results in an error (from Smuxi):
[403 (ErrorNoSuchChannel) nickname] No such channel
This is because Smuxi requires that you only /part from channels. No matter, we'll do things manually!
/raw part nicknameor
/raw /part nickname
ngrep shows that this actually makes it to the client...and it still fails, as /path/to/logs/nickname.log is still open in /proc/PID/fd (which is currently showing 93 files open for me...).
My guess is that `/raw part nickname` fails because irc.c!irc_part() does:
channel = hash_get(&server->channels, s_chan);
/* we can't get part message for chans we're not on */
if (!channel)
return ERR_PROTOCOL;
and the nickname "channel" isn't really a channel, and thus `channel` is NULL, so ERR_PROTOCOL is returned.
TO REPRODUCE:
/msg nickname message- look at `ls -l /proc/PID/fd/*` and ensure that nickname.log is open
/raw part nickname # or some other mechanimsm? - look at `ls -l /proc/PID/fd/*` and ensure that nickname.log is NOT open.
Updated by Loïc Gomez almost 3 years ago
- Subject changed from Provide a way to close private messages to Provide a way to reset a specific nickname's backlog (private messages)
That's because /PART is designed for channels only.
What you want here is a way to reset backlog on a specific conversation without talking in it and without resetting the rest of the backlog. I'll adapt the title accordingly.