Skip to content

Commit 079126d

Browse files
authored
Update bouncer.js
Update of a few lines Tested with 35 clients on the BNC simultaneously on UnrealIRCd 5.0.5.1, it's been running for 18 hours without crash and without too many errors
1 parent ed213c7 commit 079126d

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

bouncer.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -809,18 +809,18 @@ function clientConnect(socket) {
809809
case '324':
810810
case 'MODE':
811811
if ( data[2] == "MODE" ) {
812-
_target=data[1]=='324'?data[3].trim():data[2].trim();
812+
_target=data[1]=='324'?data[3].trim():data[3].trim();
813813
_sender=data[1].substr(1).split("!")[0];
814-
_mode = data[1]=='324'?data[4].trim():data[3].trim();
814+
_mode = data[1]=='324'?data[4].trim():data[4].trim();
815815
_mode = _mode.indexOf(":")!=-1?_mode.substr(1):_mode;
816816
_mode_target=[];
817817
if(data[1]=='324') {
818818
if(data[5])
819819
_mode_target = data.slice(5,data.length);
820820
}
821821
else {
822-
if(data[4])
823-
_mode_target = data.slice(4,data.length);
822+
if(data[5])
823+
_mode_target = data.slice(5,data.length);
824824
}
825825
} else {
826826
_target=data[1]=='324'?data[3].trim():data[2].trim();
@@ -1089,7 +1089,7 @@ function clientConnect(socket) {
10891089
}
10901090
else if(this.channels[_channel]) {
10911091
for(x=0;x<this.channels[_channel].names.length;x++)
1092-
if(this.channels[_channel].names[x].replace("@","").replace("\+","").replace("~","").replace("%","")==_target)
1092+
if(this.channels[_channel].names[x].replace("@","").replace("+","").replace("~","").replace("%","")==_target)
10931093
break;
10941094
this.channels[_channel].names.splice(x,1);
10951095
}
@@ -1102,7 +1102,7 @@ function clientConnect(socket) {
11021102
}
11031103
else if(this.channels[_target]) {
11041104
for(x=0;x<this.channels[_target].names.length;x++)
1105-
if(this.channels[_target].names[x].replace("@","").replace("\+","").replace("~","").replace("%","")==_sender)
1105+
if(this.channels[_target].names[x].replace("@","").replace("+","").replace("~","").replace("%","")==_sender)
11061106
break;
11071107
this.channels[_target].names.splice(x,1);
11081108
this.channels[_target].userhosts.splice(x,1);
@@ -1113,9 +1113,10 @@ function clientConnect(socket) {
11131113
for (key in this.channels) {
11141114
if (this.channels.hasOwnProperty(key)) {
11151115
for(x=0;x<this.channels[key].names.length;x++)
1116-
if(this.channels[key].names[x].replace("@","").replace("\+","").replace("~","").replace("%","")==_sender)
1116+
if(this.channels[key].names[x].replace("@","").replace("+","").replace("~","").replace("%","")==_sender)
11171117
break;
11181118
this.channels[key].names.splice(x,1);
1119+
this.channels[key].userhosts.splice(x,1);
11191120
}
11201121
}
11211122
break;
@@ -1140,8 +1141,22 @@ function clientConnect(socket) {
11401141
this._getnames[_channel]=false;
11411142
break;
11421143
case 'NICK':
1143-
if(data[1].substr(1).split("!")[0]==this.nick) {
1144-
this.nick=data[3].substr(1).trim();
1144+
_sender = data[1].substr(1);
1145+
_new = data[3].substr(1).trim();
1146+
if(_sender==this.nick) {
1147+
this.nick=_new;
1148+
}
1149+
for (key in this.channels) {
1150+
if (this.channels.hasOwnProperty(key)) {
1151+
for(x=0;x<this.channels[key].names.length;x++) {
1152+
_statut = ( /(@|%|\+)/.test(this.channels[key].names[x].substr(0,1)) ? this.channels[key].names[x].substr(0,1) : "" );
1153+
if(this.channels[key].names[x].replace("@","").replace("+","").replace("~","").replace("%","")==_sender){
1154+
this.channels[key].names.splice(x,1);
1155+
this.channels[key].names.push(_statut+_new);
1156+
break;
1157+
}
1158+
}
1159+
}
11451160
}
11461161
break;
11471162
case '433':

0 commit comments

Comments
 (0)