rem: if ((target[0] == "#") && (this.mode&USERMODE_OPER) && (this.flags&OLINE_CAN_LGNOTICE)) { 
add: if ( (target[0] == "#") && (this.mode&USERMODE_OPER) && ( (this.flags&OLINE_CAN_LGNOTICE) || !this.local ) ) { 
context: function IRCClient_do_msg(target,type_str,send_str) {	if ((target[0] == "$") && (this.mode&USERMODE_OPER) &&	    (this.flags&OLINE_CAN_LGNOTICE))		return this.global(target,type_str,send_str);	var send_to_list = -1;	if (target[0] == "@" && ( (target[1] == "#") || target[1] == "&") ) {		send_to_list = CHANMODE_OP;		target = target.slice(1);	} else if (target[0]=="+" && ((target[1] == "#")|| target[1] == "&")) {		send_to_list = CHANMODE_VOICE;		target = target.slice(1);	}			if ((target[0] == "#") || (target[0] == "&")) {		var chan = Channels[target.toUpperCase()];		if (!chan) {			// check to see if it's a #*hostmask* oper message			if ((target[0] == "#") && (this.mode&USERMODE_OPER) &&			    (this.flags&OLINE_CAN_LGNOTICE)) {				return this.global(target,type_str,send_str);			} else {				this.numeric401(target);				return 0;			}		}		if ((chan.mode&CHANMODE_NOOUTSIDE) && !this.channels[chan.nam.toUpperCase()]) {			this.numeric(404, chan.nam + " :Cannot send to channel (+n: no outside messages)");			return 0;		}		if ( (chan.mode&CHANMODE_MODERATED) &&		     !chan.modelist[CHANMODE_VOICE][this.id] &&		     !chan.modelist[CHANMODE_OP][this.id] ) {			this.numeric(404, chan.nam + " :Cannot send to channel (+m: moderated)");			return 0;		}		if (chan.isbanned(this.nuh) &&		   !chan.modelist[CHANMODE_VOICE][this.id] &&		   !chan.modelist[CHANMODE_OP][this.id] ) {			this.numeric(404, chan.nam + " :Cannot send to channel (+b: you're banned!)");			return 0;		}		if(send_to_list == -1) {			var str = type_str +" "+ chan.nam +" :"+ send_str;			this.bcast_to_channel(chan, str, false);			this.bcast_to_channel_servers(chan, str);		} else {			var prefix_chr;			if (send_to_list == CHANMODE_OP)				prefix_chr="@";			else if (send_to_list == CHANMODE_VOICE)				prefix_chr="+";			var str = type_str +" " + prefix_chr + chan.nam + " :"+ send_str;			this.bcast_to_list(chan, str, false, send_to_list);			this.bcast_to_channel_servers(chan, str);		}	} else {		if (target.match("[@]")) {			var msg_arg = target.split('@');			var real_target = msg_arg[0];			var target_server = searchbyserver(msg_arg[1]);			if (!target_server) {				this.numeric401(target);				return 0;			}			if (target_server == -1) {				this.numeric(407, target + " :Duplicate recipients, no message delivered.");				return 0;			}			target = msg_arg[0] + "@" + msg_arg[1];		} else {			var real_target = target;		}		var target_socket = Users[real_target.toUpperCase()];		if (target_socket) {			if (target_server &&			    (target_server.parent != target_socket.parent)) {				this.numeric401(target);				return 0;			}			if (target_server && 			    (target_server.id == target_socket.parent) )				target = real_target;			var str = type_str + " " + target + " :" + send_str;			target_socket.originatorout(str,this);			if (target_socket.away && (type_str == "PRIVMSG") &&			    !this.server && this.local)				this.numeric(301, target_socket.nick + " :" + target_socket.away);		} else {			this.numeric401(target);			return 0;		}	}	return 1;}
meta: 9592	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9592/75a3bce73bf4bbdb6a013ed40602ea5d921d33b4/ircd.js/buggy/ircd.js