williamkapke / irc-connect

Minimal IRC connection that simply emits event objects. Plugin modules can do the rest.
14 stars 5 forks source link

nick plugin not firing either identified or error #2

Closed tudborg closed 10 years ago

tudborg commented 10 years ago

Replicate via example in README.md, or this;

var irc = require("irc-connect");
var freenode = irc.connect('irc.freenode.net', 'irc-connect bug demo')
    //include some plugins
    .use(irc.pong)
    //fires when the servers sends the welcome message (RPL_WELCOME)
    .on('welcome', function (msg) {
        this.nick('irc-connect-test-run', 'pass', function(err){
            console.error(err);
        });
    })
;

It seems like freenode is skipping a NOTICE after we send a NICK. A NOTICE is sent from freenode, only when an error occurs, otherwise, i just receive a NICK back, telling me my nick changed.

Here is the debug output, (excluding most of the motd)

irc:connect-out NICK node52978 +0ms
irc:connect-out USER irc-cnct 0 * :irc-connect bug demo +1ms
irc:connect-raw :cameron.freenode.net NOTICE * :*** Looking up your hostname... +0ms
irc:connect-raw :cameron.freenode.net NOTICE * :*** Checking Ident +60ms
irc:connect-raw :cameron.freenode.net NOTICE * :*** Found your hostname +0ms
irc:connect-raw :cameron.freenode.net NOTICE * :*** No Ident response +9s
irc:connect-raw :cameron.freenode.net 001 node52978 :Welcome to the freenode Internet Relay Chat Network node52978 +1ms
irc:connect-out NICK irc-connect-test-run +9s
irc:connect-raw :cameron.freenode.net 002 node52978 :Your host is cameron.freenode.net[84.240.3.129/6667], running version ircd-seven-1.1.3 +1ms
irc:connect-raw :cameron.freenode.net 003 node52978 :This server was created Mon Dec 31 2012 at 23:38:16 EET +1ms
irc:connect-raw :cameron.freenode.net 004 node52978 cameron.freenode.net ircd-seven-1.1.3 DOQRSZaghilopswz CFILMPQSbcefgijklmnopqrstvz bkloveqjfI +0ms
irc:connect-raw :cameron.freenode.net 005 node52978 CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQScgimnprstz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode KNOCK STATUSMSG=@+ CALLERID=g :are supported by this server +0ms
irc:connect-raw :cameron.freenode.net 005 node52978 CASEMAPPING=rfc1459 CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 ETRACE CPRIVMSG CNOTICE DEAF=D MONITOR=100 FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: :are supported by this server +0ms
irc:connect-raw :cameron.freenode.net 005 node52978 EXTBAN=$,arxz WHOX CLIENTVER=3.0 SAFELIST ELIST=CTU :are supported by this server +0ms
irc:connect-raw :cameron.freenode.net 251 node52978 :There are 215 users and 91476 invisible on 26 servers +1ms
irc:connect-raw :cameron.freenode.net 252 node52978 32 :IRC Operators online +0ms
irc:connect-raw :cameron.freenode.net 253 node52978 20 :unknown connection(s) +0ms
irc:connect-raw :cameron.freenode.net 254 node52978 43404 :channels formed +0ms
irc:connect-raw :cameron.freenode.net 255 node52978 :I have 8150 clients and 3 servers +1ms
irc:connect-raw :cameron.freenode.net 265 node52978 8150 8184 :Current local users 8150, max 8184 +0ms
irc:connect-raw :cameron.freenode.net 266 node52978 91691 98963 :Current global users 91691, max 98963 +0ms
irc:connect-raw :cameron.freenode.net 250 node52978 :Highest connection count: 8187 (8184 clients) (1354396 connections received) +0ms
irc:connect-raw :cameron.freenode.net 375 node52978 :- cameron.freenode.net Message of the Day -  +2ms
..........
irc:connect-raw :cameron.freenode.net 376 node52978 :End of /MOTD command. +0ms
irc:connect-raw :node52978 MODE node52978 :+i +0ms
irc:connect-raw :node52978!~irc-cnct@4005ds1-vlb.0.fullrate.dk NICK :irc-connect-test +5s
williamkapke commented 10 years ago

The log you posted uses irc-connect-test which does not appear to be a registered user of freenode. When you use a registered name, you get a NOTICE response asking for credentials- which the nick plugin will then send with the supplied password.

LMK if I understood this wrong.

tudborg commented 10 years ago

Ah, sorry. My bad. What confused me, was the fact that i didn't get an error when using an unregistered nick. It never occurred to me that the nick event should be considered a success event for the nick() call, and that i that i don't necessarily need to authenticate with NickServ, to call nick. Obviously, the identified event means "nick authenticated with NickServ".

Thanks.

Spudz76 commented 10 years ago

I have repaired this behavior in PR #5. It also was very unexpected in my case (private ircd with no NickServ or bells and whistles). Now if you want to register with a NickServ you can use client.identify(nick,pass) while the client.nick(nick) works as expected (only cares about the server NICK message).