diff --git a/exec/irc.js b/exec/irc.js index cd10f28a118a58907a74284ff62a1b0b6fe7c92b..b61206a6acd82fdd8c449b602fa43d93962f05b4 100644 --- a/exec/irc.js +++ b/exec/irc.js @@ -295,6 +295,9 @@ function handle_command(prefix,command,message) { // Numeric reply codes. // <word1> <word2> <word3> <word4> <word5> <word6> <word7> :Message case "211": // Trace Server + while(message.length < 9) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -316,6 +319,9 @@ function handle_command(prefix,command,message) { case "215": // Stats ILINE case "216": // Stats KLINE case "218": // Stats YLINE + while(message.length < 8) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -324,14 +330,15 @@ function handle_command(prefix,command,message) { tmp_str=tmp_str+" "+message.shift(); tmp_str=tmp_str+" "+message.shift(); tmp_str2=message.shift(); - if (!tmp_str2) /* Total hack. --RS XXX FIXME */ - tmp_str2=""; tmp_str2="\x01H\x01C!! \x01N\x01C"+tmp_str+" "+tmp_str2.substr(1)+" "+message.join(" ")+"\x01N\x01W"; screen.print_line(tmp_str2); break; // <word1> <word2> <word3> <word4> <word5> :Message case "241": // Stats LLINE + while(message.length < 7) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -349,6 +356,9 @@ function handle_command(prefix,command,message) { case "200": // Trace Link case "243": // Stats OLINE case "244": // Stats HLINE + while(message.length < 6) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -369,6 +379,9 @@ function handle_command(prefix,command,message) { case "205": // Trace User case "208": // New type of trace case "261": // Trace LOG + while(message.length < 5) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -386,6 +399,9 @@ function handle_command(prefix,command,message) { case "364": // Links case "367": // Ban List case "212": // Stats Command + while(message.length < 4) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -413,6 +429,9 @@ function handle_command(prefix,command,message) { case "253": // # unknown connections case "254": // # channels case "256": // Admin info + while(message.length < 3) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str2=message.shift(); @@ -454,6 +473,9 @@ function handle_command(prefix,command,message) { case "375": // MOTD Start case "372": // MOTD case "333": // Extended TOPIC info (apparently) + while(message.length < 2) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str="\x01H\x01C!! \x01N\x01C"+tmp_str.substr(1)+" "+message.join(" ")+"\x01N\x01W"; @@ -462,6 +484,9 @@ function handle_command(prefix,command,message) { case "331": // No Topic case "332": // Topic + while(message.length < 2) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str2=message.join(" "); @@ -475,6 +500,9 @@ function handle_command(prefix,command,message) { break; case "353": // Name reply + while(message.length < 3) { + message.push(""); + } message.shift(); message.shift(); tmp_str=message.shift(); @@ -499,6 +527,9 @@ function handle_command(prefix,command,message) { // <word1> <word2> :Message errors case "441": // Nick not on channel case "443": // User already on channel (invite) + while(message.length < 4) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str=tmp_str+" "+message.shift(); @@ -509,6 +540,9 @@ function handle_command(prefix,command,message) { // <word> :Message errors. case "433": // Nickname already in use + while(message.length < 2) { + message.push(""); + } message.shift(); nick=message.shift()+"_"; sock.send("NICK " + nick + "\r\n"); @@ -536,6 +570,9 @@ function handle_command(prefix,command,message) { case "474": // Banned from channel case "475": // Bad channel key (+k) case "482": // Not ChanOP so can't do that. + while(message.length < 3) { + message.push(""); + } message.shift(); tmp_str=message.shift(); tmp_str2=message.shift(); @@ -562,6 +599,10 @@ function handle_command(prefix,command,message) { case "491": // No O-lines for your host case "501": // Unknown MODE flag case "502": // Can't change other users mode + while(message.length < 3) { + message.push(""); + } + message.shift(); message.shift(); tmp_str=message.shift(); tmp_str="\x01H\x01R!! \x01N\x01R"+tmp_str.substr(1)+" "+message.join(" ")+"\x01N\x01W";