mIRC Homepage

/server -l nickserv and disconnection

Posted By: Wims

/server -l nickserv and disconnection - 31/03/19 07:46 AM

If I disconnect using the toolbar's icon, and reconnect with it, mIRC remembers the /server -l nickserv setting, but if a different kind of disconnection occurs (well at least when you run out of internet [10053] Software caused connection abort), mIRC does not remember the setting.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 31/03/19 08:57 PM

I have not had a chance to look at the code yet but my guess is that if you use the button to disconnect and connect again, you will connect to the same server. But if you are disconnected, mIRC will cycle through the servers in the servers list, so it will use the information in the next server definition.
Posted By: Wims

Re: /server -l nickserv and disconnection - 31/03/19 09:16 PM

I'm not using the server list.

I'm connecting to freenode via "server -m irc.freenode.net -i Ouims -jn #chans -l sasl pass" with sasl plain which connects to various (different after reconnecting) server of freenode when disconnecting, but the auth always works.

I'm connecting to swiftirc via "server -m irc.swiftirc.net -i Ouims -jn #chans -l nickserv pass" which also connects to different server, but this time it's always failing after disconnecting that way
Posted By: Khaled

Re: /server -l nickserv and disconnection - 01/04/19 08:24 AM

Do you have any of these servers defined in the servers list? If you do, mIRC may be looking for a match for the network/server in the servers list to cycle through if there is a connection issue.
Posted By: Wims

Re: /server -l nickserv and disconnection - 01/04/19 11:52 AM

I do have irc.swiftirc.net defined in the server list for swiftirc, whereas freenode is defined as chat.freenode.net

I do not like the server list as it is right now because it cannot be used easily to automatically do multiple connections to irc server on start. I've tried to delete the server list on the hard drive (servers.ini ?) but mIRC rebuild the content iirc.
I could still delete the entry in the server list in mIRC but that doesn't seem to be a good solution, I'd rather keep the default server list but be able to basically not use it. I think I need a switch for /server to tell mIRC to ignore the server list on (re)connection. And I believe this switch could be useful to others people as well.

Edit: it's much worse than that when the initial /server is failing the first attempt, server list is checked and my /server -l setting is lost, I didn't even get connected or disconnected. I understand it's the expected behavior but then I need a switch.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 02/04/19 04:59 PM

Do you have "try next server in group" enabled in the retry dialog? If you turn it off, does that resolve your issue?
Posted By: Wims

Re: /server -l nickserv and disconnection - 02/04/19 06:24 PM

It does, thanks.

A following up problem is that mIRC does not seem to auth the same way after a reconnection.

When connecting from the /server (without any retry attempt):

Quote:
[19:42:06] * Ouims sets mode: +ix
[19:42:06] -NickServ- This nickname is registered and protected. If it is your
[19:42:07] -NickServ- nick, type /msg NickServ IDENTIFY password. Otherwise,
[19:42:07] -NickServ- please choose a different nick.
[19:42:07] -NickServ- If you do not change within 20 seconds, I will change your nick.
[19:42:07] -NickServ- Password accepted - you are now recognized.
[19:42:07] * NickServ sets mode: +r
and +R channel are joined correctly: I'm identified before mIRC sends the /join.

After that, I unplugged the ethernet cable, let the connection disconnects, then replugged it back:

Quote:
[19:48:50] * [10053] Software caused connection abort
[19:48:50] * Disconnected
[19:48:53] * Connect retry #1 irc.swiftirc.net (6668)
[19:48:53] * Unable to resolve server
[19:48:56] * Connect retry #2 irc.swiftirc.net (7000)
[19:48:56] * Unable to resolve server
[19:48:59] * Connect retry #3 irc.swiftirc.net (6668)
[19:48:59] * Unable to resolve server
[19:49:02] * Connect retry #4 irc.swiftirc.net (6667)
...
[19:49:03] * Ouims sets mode: +ix
[19:49:03] -NickServ- This nickname is registered and protected. If it is your
[19:49:03] -NickServ- nick, type /msg NickServ IDENTIFY password. Otherwise,
[19:49:03] -NickServ- please choose a different nick.
[19:49:03] -NickServ- If you do not change within 20 seconds, I will change your nick.
[19:49:03] You need a registered nick to join that channel.
[19:49:03] You need a registered nick to join that channel.
[19:49:03] -NickServ- Password accepted - you are now recognized.
[19:49:03] * NickServ sets mode: +r
Is this just a small timing issue? Is mIRC sending the /join the same as before regardless of the new nickserv auth features (I believe there are threads discussing this)? I suppose so, it would be hard for mIRC to check nickserv's answer, it can be any language etc. I will add /autojoin -d3 back in my perform.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 03/04/19 08:06 AM

If you switch to using SASL to connect to swiftirc, does that resolve your issue?

Update: looking into this a little more, I did find some contexts where the "try next server in group" setting was not being observed. I have made a change in the next version which should resolve this.
Posted By: Raccoon

Re: /server -l nickserv and disconnection - 03/04/19 08:42 AM

Sorry if this is out of touch, but I wonder if mIRC will lose some of its cached connection parameters from the previous connection, for certain types of reconnect failure errors. I note similarly that after certain failure to reconnect, that logs no longer go to the network's status log, but to a generic status log file. I estimate that mIRC may forget its connection cache at that point, except for the server address and port.

(the generic status.log thing has been like that forever)
Posted By: Khaled

Re: /server -l nickserv and disconnection - 03/04/19 09:33 AM

Quote:
that logs no longer go to the network's status log, but to a generic status log file

That is intentional. It will default to a generic status.log file when not connected. We went through this process years ago in trying to decide how best to name the log file when in a non-connected state, tried different methods, and settled on the current method. I am not going to go through all of that again, sorry!
Posted By: Wims

Re: /server -l nickserv and disconnection - 03/04/19 12:26 PM

Switching to sasl wouldn't be a good solution, some server just don't support sasl. I believe I originally tried sasl, it wasn't available and I used nickserv.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 03/04/19 02:20 PM

I connected to swiftirc a moment ago and caps support listed sasl, so it should work.

On the other hand, if you try connecting to Freenode using nickserv, does that work? ie. do you see the same connection issue? I am trying to establish whether there is a specific issue with nickserv vs sasl.
Posted By: Wims

Re: /server -l nickserv and disconnection - 03/04/19 02:50 PM

On freenode it's always working perfectly, even if I change the server list entry for freenode and changing chat.freenode.net to irc.freenode.net, aka the same address I'm using.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 03/04/19 03:45 PM

Quote:
A following up problem is that mIRC does not seem to auth the same way after a reconnection.

I just tested this out. I followed your above steps: connected using /server command (tried both nickserv and sasl), unplugged cable, mIRC showed host disconnected error, waited for a while (if I don't wait long enough, my nickname will still be in use on reconnect), replugged cable, mIRC reconnected and authed nickname, and only afterwards joined channels.

If you use /debug to watch the reconnect/auth process, can you see what is happening in your case?
Posted By: Wims

Re: /server -l nickserv and disconnection - 03/04/19 04:11 PM

Right now the test did not work, as in it identified me correctly after the reconnection.
But I have been using /debug before for this, and I seem to recall that the debug was just according to the observation, the join command appears before the nickserv confirmation message, basically.

I'll just wait for the issue to reappear.
Posted By: Wims

Re: /server -l nickserv and disconnection - 20/04/19 06:21 PM

Ok it happened again today, I don't have a log from /debug but, again, it would show the same as what I get in status:

Quote:
[16:50:55] -NickServ- Password accepted - you are now recognized.
[16:50:56] You need a registered nick to join that channel.
[16:50:56] You need a registered nick to join that channel.
[16:50:56] * NickServ sets mode: +r


That is, mIRC is sending the JOIN before the server consider I'm identified.
Posted By: Raccoon

Re: /server -l nickserv and disconnection - 20/04/19 06:51 PM

Which IRCd / network is that, Ouims? Seems unreasonably slow. Might also be something to bring up to the IRCd maintainers.
Posted By: Wims

Re: /server -l nickserv and disconnection - 20/04/19 07:15 PM

It's swiftirc, it was mentioned in earlier in the thread.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 20/04/19 08:06 PM

I am still unable to reproduce this issue. Every time I have tested this out, mIRC has waited until it has received a reply from nickserv before sending the join command. The only reason this might happen is if the server delays the nickserv reply for over 60 seconds. This is how long mIRC will wait for a reply before deciding that something has gone wrong with the server and continuing with the perform/join process. Or if you have used /autojoin yourself to override the join delay. We would need to see a debug.log in your situation to determine what is happening.
Posted By: Wims

Re: /server -l nickserv and disconnection - 20/04/19 08:32 PM

I cannot reproduce on demand as well so it may be normal that you didn't reproduce the issue yet. I added /debug to my on start event to automatically starts the debug on that connection, we'll see.
Posted By: Raccoon

Re: /server -l nickserv and disconnection - 21/04/19 01:47 AM

The problem (to me) is clearly an issue of Anope interacting with UnrealIRC in a latent response. Anope informs the client that they have been authenticated, and then Anope informs UnrealIRC that it should +r the user.

I informed #anope on irc.anope.org that they should perform this operation in reverse -- first setting the user +r and only then informing them that they've successfully authenticated, so that clients can react to NickServ "Password accepted" messages.

A work-around would be to add an N second delay to reacting, or add a behavior for UnrealIRCd to check for "* NickServ sets mode: +r" messages instead.
Posted By: Wims

Re: /server -l nickserv and disconnection - 29/04/19 03:13 PM

Here:

[14:39:20] <- :fiery.ca.us.SwiftIRC.net 001 Ouims :Welcome to the SwiftIRC IRC Network Ouims!Ouims@amontsouris-158-1-25-2.w92-128.abo.wanadoo.fr
[14:39:20] -> fiery.ca.us.SwiftIRC.net NICKSERV identify PASSWORD

[14:39:20] <- :fiery.ca.us.SwiftIRC.net 002 Ouims :Your host is fiery.ca.us.SwiftIRC.net, running version UnrealIRCd-4.2.2
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 003 Ouims :This server was created Sat Mar 16 2019 at 11:48:28 UTC
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 004 Ouims fiery.ca.us.SwiftIRC.net UnrealIRCd-4.2.2 iowrsxzdHtIDZRqpWGTSB lvhopsmntikraqbeIzMQNRTOVKDdGLPZSCcf
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 005 Ouims AWAYLEN=307 CASEMAPPING=ascii CHANLIMIT=#:50 CHANMODES=beIqa,kLf,l,psmntirzMQNRTOVKDdGPZSCc CHANNELLEN=32 CHANTYPES=# DEAF=d ELIST=MNUCT EXCEPTS EXTBAN=~,tmTSOcaRrnqj HCN INVEX :are supported by this server
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 005 Ouims KICKLEN=307 KNOCK MAP MAXCHANNELS=50 MAXLIST=b:100,e:100,I:100 MAXNICKLEN=30 MODES=12 NAMESX NETWORK=SwiftIRC NICKLEN=30 PREFIX=(ohv)@%+ QUITLEN=307 :are supported by this server
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 005 Ouims SAFELIST SILENCE=10 STATUSMSG=@%+ TARGMAX=DCCALLOW:,ISON:,JOIN:,KICK:4,KILL:,LIST:,NAMES:1,NOTICE:1,PART:,PRIVMSG:4,SAJOIN:,SAPART:,USERHOST:,USERIP:,WATCH:,WHOIS:1,WHOWAS:1 TOPICLEN=360 UHNAMES USERIP WALLCHOPS WATCH=128 WATCHOPTS=A :are supported by this server
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 396 Ouims Swift-4C841731.w92-128.abo.wanadoo.fr :is now your displayed host
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 251 Ouims :There are 1 users and 397 invisible on 6 servers
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 252 Ouims 56 :operator(s) online
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 254 Ouims 436 :channels formed
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 255 Ouims :I have 202 clients and 0 servers
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 265 Ouims 202 990 :Current local users 202, max 990
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 266 Ouims 398 1672 :Current global users 398, max 1672
[14:39:20] <- :fiery.ca.us.SwiftIRC.net 422 Ouims :MOTD File is missing
[14:39:20] <- :Ouims MODE Ouims :+ix
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :This nickname is registered and protected. If it is your
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :nick, type /msg NickServ IDENTIFY password. Otherwise,
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :please choose a different nick.
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :If you do not change within 20 seconds, I will change your nick.
[14:39:20] <- :Global!services@services.host NOTICE Ouims :[Logon News - Dec 18 04:35:36 2012 UTC] This is a friendly reminder that you should only enter your NickServ password through NickServ (e.g. /ns id yourpassword). Please exercise general password safety, and remember that the SwiftIRC staff will never ask you to state or confirm your password - Thanks.
[14:39:20] <- :Global!services@services.host NOTICE Ouims :[Logon News - Jun 17 21:18:07 2013 UTC] We will now perform a passive scan on your IP to check for insecure proxies. These scans are harmless and will originate from 198.50.159.105. If you do not consent to these scans please disconnect immediately.
[14:39:20] -> fiery.ca.us.SwiftIRC.net PROTOCTL NAMESX
[14:39:20] -> fiery.ca.us.SwiftIRC.net PROTOCTL UHNAMES

[14:39:20] -> fiery.ca.us.SwiftIRC.net JOIN #mircscripting,#pacman

[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :Password accepted - you are now recognized.

[14:39:21] <- :fiery.ca.us.SwiftIRC.net 477 Ouims #mircscripting :You need a registered nick to join that channel.
[14:39:21] <- :fiery.ca.us.SwiftIRC.net 477 Ouims #pacman :You need a registered nick to join that channel.

[14:39:21] <- :Ouims!Ouims@Swift-4C841731.w92-128.abo.wanadoo.fr CHGHOST Ouims simple.mIRC.user
[14:39:21] <- :fiery.ca.us.SwiftIRC.net 396 Ouims simple.mIRC.user :is now your displayed host
[14:39:21] <- :HostServ!services@services.host NOTICE Ouims :Your vhost of simple.mIRC.user is now activated.

[14:39:21] <- :NickServ MODE Ouims :+r
Posted By: Khaled

Re: /server -l nickserv and disconnection - 29/04/19 05:43 PM

Thanks for the debug details. This seems to shows that even though the client has sent:

Quote:
-> fiery.ca.us.SwiftIRC.net NICKSERV identify PASSWORD

the server is still sending:

Quote:
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :This nickname is registered and protected. If it is your
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :nick, type /msg NickServ IDENTIFY password. Otherwise,
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :please choose a different nick.
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :If you do not change within 20 seconds, I will change your nick.

to tell the client that it needs to send the nickserv identify message.

As discussed before, this is the notice that mIRC looks for to know when to continue with the perform.

It looks like the server is not processing nickserv identify in a way that synchronizes with its own nickserv notices.

While a client could wait for the "mode +r" instead, again as discussed before, the +r mode means different things on different networks, so this is not reliable and would need to be set to a different value for different networks. In addition, some networks do not send "mode +r", they just send another notice.
Posted By: Wims

Re: /server -l nickserv and disconnection - 29/04/19 08:44 PM

As far as nickserv still sending out notices about the nickname being registered, it's been that way for a long time, and a different network, Epiknet, behaves exactly the same regarding those notices. Also, in the debug, you can see that the identify command is sent at the same second than the notice is received, so it's looks normal for nickserv to be too late to cancel the sending.


Quote:
As discussed before, this is the notice that mIRC looks to know that it should continue with the perform.
What you quoted doesn't contain a message from nickserv that appears once you're identified, so I'm not sure which notice you're talking about.

In the debug, the join message sent by mIRC is clearly sent before mIRC has seen either the +r usermode or the notice from nickserv which is in this case "[16:51:41] <- :NickServ!services@services.host NOTICE Ouims :Password accepted - you are now recognized"

I'm sorry I don't really understand your reply or how exacly is mIRC deciding to go ahead and send the join message, it seems to me that the timestamp shows the same seconds for the join and the nickserv notice that would be used by mIRC, but the join command is displayed first, indicating it was sent before receiving the nickserv's notice

[14:39:20] -> fiery.ca.us.SwiftIRC.net JOIN #mircscripting,#pacman
[14:39:20] <- :NickServ!services@services.host NOTICE Ouims :Password accepted - you are now recognized.
[14:39:21] <- :fiery.ca.us.SwiftIRC.net 477 Ouims #mircscripting :You need a registered nick to join that channel.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 29/04/19 08:49 PM

Quote:
Also, in the debug, you can see that the identify command is sent at the same second than the notice is received, so it's looks normal for nickserv to be too late to cancel the sending.

It is sent the moment numeric 001 is received, at the top of the debug log.

Quote:
What you quoted doesn't contain a message from nickserv that appears once you're identified, so I'm not sure which notice you're talking about.

This has already been discussed. Please read the thread about how nickserv support was implemented.

If you can think of a way of implementing support for nickserv that is not dependent on the english language and that works across all networks, please let us know.
Posted By: Wims

Re: /server -l nickserv and disconnection - 29/04/19 09:27 PM

So the relevant part:

Quote:
So, the only method that will work for now, that is language-independent, seems to be:

1) After the MOTD is received, check incoming notices from "nickserv".
2) Ignore the notices if they contain "/msg" or "/nickserv".
3) Otherwise, assume it is a notice indicating success or failure of nickname identification, so trigger perform.
4) If no such notice is received after 60 seconds, trigger perform.

However, this will fail if an ircd changes the text in notices eg. there is no reason why a server could not say "visit this website" or "join this channel" to learn how to register/identify your nickname, instead of specifying /msg or /nickserv. This will also fail if nickserv sends any other notices eg. it could send notices informing users of other features or recent developments.

This change will be in the next beta.
The arbitrary choice of ignoring some notices and not the others is causing it to fail, and people are being very luckly if it's currently working for them.

I do not have a magic solution, I do agree the server side is to blame.

If you absolutely want to be language-independent and don't want to use +r because some network don't support it, wouldn't it be possible to suggest something to add into IRCv3 to cater for this problem? Like sending a specific raw as you mentioned or similar.
Posted By: Khaled

Re: /server -l nickserv and disconnection - 30/04/19 10:34 AM

I just noticed that swiftirc nickserv sends the notice "Password accepted - you are now recognized" whereas Freenode nickserv sends "You are now identified for nickname". So even using english to determine success will not work reliably as the wording could vary from network to network.

mIRC could delay perform by several seconds after seeing the last nickserv notice. This would resolve the issue in your particular case, unless nickserv takes too long. This will be in the next version.
Posted By: Wims

Re: /server -l nickserv and disconnection - 01/05/19 07:24 AM

I agree that if we're about to do something that cannot work reliably, then a delay is simple and best (I've been using /autojoin -d3 in perform for most of my life).

Delaying perform would add more delay for people who use /autojoin -dN there, given that it's unreliable in the first place, I don't want mIRC to add more delay.

It was said multiple times over the years in the various thread about adding nickserv support, scripts are best for handling non standard or unreliable things and it's true.

I think the best mIRC can do for now is offer a 'scripted' solution via its UI: add two editboxes in the 'edit server' dialog.

-One defaulting to 'nickserv', used to indicate the nickname of nickserv (which can be any nickname in reality, e.g. Themis on Epiknet)
-A second one representing a wildcard (or regex, via a checkbox, for completeness sake) expression that mIRC would use to match against nickserv's notices

And a new switch for /server, like server -bg "nick expression", g meaning regex.


Edit: since the nickserv method only do /nickserv, the editbox for the nickname would be only relevant for the msg method


Posted By: Khaled

Re: /server -l nickserv and disconnection - 02/05/19 08:42 AM

The latest beta includes a few seconds extra delay after the last nickserv notice is received. The method is still dependent on how fast nickserv process the logon, so it is still possible that it may not always work. However, since you were seeing this issue so rarely before, this change should help.
© 2019 mIRC Discussion Forums