diff --git a/exec/ircd.js b/exec/ircd.js index 0cc1546855890fbe75318b94629a64231a498474..d332790f1c8931b38d044d414186af8e3e67176a 100644 --- a/exec/ircd.js +++ b/exec/ircd.js @@ -104,6 +104,8 @@ function true_array_len(my_array) { } function ip_to_int(ip) { + if (!ip) + return 0; var quads = ip.split("."); var addr = (quads[0]&0xff)<<24; addr|=(quads[1]&0xff)<<16; diff --git a/exec/load/ircd_channel.js b/exec/load/ircd_channel.js index 29db1e6eb320925390292b2b4746e973e97764d4..03a98f2aa1c820fbb148ef29e30ea0e46bb897b4 100644 --- a/exec/load/ircd_channel.js +++ b/exec/load/ircd_channel.js @@ -598,7 +598,7 @@ function IRCClient_do_join(chan_name,join_key) { } if (chan_name[0] != "&") server_bcast_to_servers(":" + this.nick + " SJOIN " + Channels[chan].created + " " + Channels[chan].nam,BAHAMUT); - server_bcast_to_servers(":" + this.nick + " JOIN " + Channels[chan].created,DREAMFORGE); + server_bcast_to_servers(":" + this.nick + " JOIN " + Channels[chan].nam + " " + Channels[chan].created,DREAMFORGE); } else { // create a new channel Channels[chan]=new Channel(chan); diff --git a/exec/load/ircd_server.js b/exec/load/ircd_server.js index a5760704b840489bb9614c8933528a34ef361e7b..7d794a88f23f43c0bdf0cca0f1f222bd83258cae 100644 --- a/exec/load/ircd_server.js +++ b/exec/load/ircd_server.js @@ -501,7 +501,8 @@ function Server_Work() { } } var true_hops = parseInt(NewNick.hops)+1; - this.bcast_to_servers_raw("NICK " + NewNick.nick + " " + true_hops + " " + NewNick.created + " " + NewNick.get_usermode(true) + " " + NewNick.uprefix + " " + NewNick.hostname + " " + NewNick.servername + " 0 " + cmd[9] + " :" + NewNick.realname); + this.bcast_to_servers_raw("NICK " + NewNick.nick + " " + true_hops + " " + NewNick.created + " " + NewNick.get_usermode(true) + " " + NewNick.uprefix + " " + NewNick.hostname + " " + NewNick.servername + " 0 " + cmd[9] + " :" + NewNick.realname,BAHAMUT); + this.bcast_to_servers_raw("NICK " + NewNick.nick + " " + true_hops + " " + NewNick.created + " " + NewNick.uprefix + " " + NewNick.hostname + " " + NewNick.servername + " 0 :" + NewNick.realname,DREAMFORGE); } else { // we're a user changing our nick. var ctuc = cmd[1].toUpperCase(); if ((Users[ctuc])&&Users[ctuc].nick.toUpperCase() != @@ -871,7 +872,8 @@ function Server_Work() { ThisOrigin.channels[chan.nam.toUpperCase()] = chan; chan.users[ThisOrigin.id] = ThisOrigin; ThisOrigin.bcast_to_channel(chan, "JOIN " + chan.nam, false); - this.bcast_to_servers_raw(":" + ThisOrigin.nick + " SJOIN " + chan.created + " " + chan.nam); + this.bcast_to_servers_raw(":" + ThisOrigin.nick + " SJOIN " + chan.created + " " + chan.nam,BAHAMUT); + this.bcast_to_servers_raw(":" + ThisOrigin.nick + " JOIN " + chan.nam,DREAMFORGE); } break; case "SQUIT": @@ -1008,7 +1010,6 @@ function Server_Work() { var dest_server = searchbyserver(cmd[1]); if (!dest_server) break; // someone messed up. - log("dest_server: " + dest_server); dest_server.rawout(":" + ThisOrigin.nick + " VERSION :" + dest_server.nick); } break; @@ -1203,7 +1204,12 @@ function IRCClient_server_chan_info(sni_chan) { if (this.type == DREAMFORGE) { var df_chan_occs = sni_chan.occupants().split(' '); for (dfocc in df_chan_occs) { - this.rawout(":" + df_chan_occs[dfocc] + " JOIN " + sni_chan.nam); + var cmember = df_chan_occs[dfocc]; + if (cmember[0] == "@") + cmember = cmember.slice(1); + if (cmember[0] == "+") + cmember = cmember.slice(1); + this.rawout(":" + cmember + " JOIN " + sni_chan.nam); } this.ircout("MODE " + sni_chan.nam + " " + sni_chan.chanmode(true) + " " + sni_chan.created); } else { /* Bahamut */ diff --git a/exec/load/ircd_unreg.js b/exec/load/ircd_unreg.js index ecc187992dc2aaa8c7e7838a134f80d64e30d19f..b1815a91a103146770e7fd7bf4e7b46a1be4a435 100644 --- a/exec/load/ircd_unreg.js +++ b/exec/load/ircd_unreg.js @@ -380,7 +380,9 @@ function Unregistered_Welcome() { ") [" + this.ip + "] {" + hcc_counter + "}"); if (server.client_update != undefined) server.client_update(this.socket, this.nick, this.hostname); - server_bcast_to_servers("NICK " + this.nick + " 1 " + new_user.created + " + " + this.uprefix + " " + this.hostname + " " + servername + " 0 " + ip_to_int(new_user.ip) + " :" + this.realname); + var nickstr = "NICK " + this.nick + " 1 " + new_user.created + " "; + server_bcast_to_servers(nickstr + "+ " + this.uprefix + " " + this.hostname + " " + servername + " 0 " + ip_to_int(new_user.ip) + " :" + this.realname,BAHAMUT); + server_bcast_to_servers(nickstr + this.uprefix + " " + this.hostname + " " + servername + " 0 " + " :" + this.realname,DREAMFORGE); // we're no longer unregistered. delete Unregistered[this.id]; delete this;