Correctly reading nicks from an IRC message prefix when without ident@host
authorDarren <darren@darrenwhitlen.com>
Mon, 1 Sep 2014 22:30:53 +0000 (23:30 +0100)
committerDarren <darren@darrenwhitlen.com>
Mon, 1 Sep 2014 22:30:53 +0000 (23:30 +0100)
server/irc/commands/messaging.js
server/irc/commands/registration.js
server/irc/connection.js

index 6a44a9b9aa3fe2adc3d4479c49a175de4f9c9138..6f5b8118a37ceb918b83cf47b885c3350e280acf 100644 (file)
@@ -34,8 +34,8 @@ var handlers = {
                 'channel';
 
             this.emit(namespace + ' ' + command.params[0] + ' notice', {
-                from_server: command.prefix ? true : false,
-                nick: command.nick || command.prefix || undefined,
+                from_server: command.prefix === this.irc_connection.server_name ? true : false,
+                nick: command.nick || undefined,
                 ident: command.ident,
                 hostname: command.hostname,
                 target: command.params[0],
index 4b58c4030abfa0e31e2a381f9034c423622da471..024a0360834b8564c93ae6a6e48b1c1d730fd81f 100644 (file)
@@ -10,6 +10,10 @@ module.exports = function AddCommandHandlers(command_controller) {
 var handlers = {
        RPL_WELCOME: function (command) {
         var nick =  command.params[0];
+
+        // Get the server name so we know which messages are by the server in future
+        this.irc_connection.server_name = command.prefix;
+
         this.cap_negotiation = false;
         this.emit('server ' + this.irc_connection.irc_host.hostname + ' connect', {
             nick: nick
index c275feb7ac5afaac77a59c446e930509ebdf6dea..0c6f70c0f7a42272302900d60c8e3e18ed1adb6a 100644 (file)
@@ -892,8 +892,8 @@ function parseIrcLine(buffer_line) {
     msg_obj = {
         tags:       tags,
         prefix:     msg[2],
-        nick:       msg[3],
-        ident:      msg[4],
+        nick:       msg[3] || msg[2],  // Nick will be in the prefix slot if a full user mask is not used
+        ident:      msg[4] || '',
         hostname:   msg[5] || '',
         command:    msg[6],
         params:     msg[7] ? msg[7].split(/ +/) : []