diff --git a/exec/ircd.js b/exec/ircd.js
index 2e3f4016152285ba32992011a49f7e74ca3d3c9c..829d8ed3201f8a6c5380183c6dc0f38f4456f29a 100644
--- a/exec/ircd.js
+++ b/exec/ircd.js
@@ -806,20 +806,18 @@ function read_config_file() {
 }
 
 function create_new_socket(port) {
+	var newsock = new Socket();
 	log("Creating new socket object on port " + port);
-	var newsock = { socket: new Socket(), terminated: false };
-	if(!newsock.socket.bind(port)) {
-		log("!Error " + newsock.socket.error + " binding socket to TCP port " + port);
+	if(!newsock.bind(port)) {
+		log("!Error " + newsock.error + " binding socket to TCP port " + port);
 		return 0;
 	}
-	log(format("%04u ",newsock.socket.descriptor)
+	log(format("%04u ",newsock.descriptor)
 		+ "IRC server socket bound to TCP port " + port);
-	if(!newsock.socket.listen(5 /* backlog */)) {
-		log("!Error " + newsock.socket.error + " setting up socket for listening");
+	if(!newsock.listen(5 /* backlog */)) {
+		log("!Error " + newsock.error + " setting up socket for listening");
 		return 0;
 	}
-	newsock.socket.nonblocking = true;	// REQUIRED!
-	newsock.socket.debug = false;	// Will spam your log if true :)
 	return newsock;
 }
 
@@ -867,19 +865,26 @@ if(this.server==undefined) {	// Running from JSexec?
 	else if (mline_port)
 		default_port = mline_port;
 
-	server = create_new_socket(default_port)
-	if (!server)
+	server = { socket: false, terminated: false };
+	server.socket = create_new_socket(default_port)
+	if (!server.socket)
 		exit();
 }
 
+server.socket.nonblocking = true;	// REQUIRED!
+server.socket.debug = false;		// Will spam your log if true :)
+
 // Now open additional listening sockets as defined on the P:Line in ircd.conf
 open_plines = new Array();
 // Make our 'server' object the first open P:Line
-open_plines[0] = server;
+open_plines[0] = server.socket;
 for (pl in PLines) {
 	var new_pl_sock = create_new_socket(PLines[pl]);
-	if (new_pl_sock)
+	if (new_pl_sock) {
+		new_pl_sock.nonblocking = true;
+		new_pl_sock.debug = false;
 		open_plines.push(new_pl_sock);
+	}
 }
 
 if(this.branch!=undefined)
@@ -895,8 +900,8 @@ while (!server.terminated) {
 
 	// Setup a new socket if a connection is accepted.
 	for (pl in open_plines) {
-		if (open_plines[pl].socket.poll()) {
-			var client_sock=open_plines[pl].socket.accept();
+		if (open_plines[pl].poll()) {
+			var client_sock=open_plines[pl].accept();
 			if(client_sock) {
 				if (iszlined(client_sock.remote_ip_address)) {
 					client_sock.send(":" + servername + " 465 * :You've been Z:Lined from this server.\r\n");
@@ -2958,7 +2963,7 @@ function IRCClient_registered_commands(command, cmdline) {
 				this.server_notice("Invalid RESTART password.");
 				break;
 			}
-			rs_str = "Aieeeee!!!  Restarting server...";
+			var rs_str = "Aieeeee!!!  Restarting server...";
 			oper_notice("Notice",rs_str);
 			log("!WARNING " + rs_str + " per " + this.ircnuh);
 			terminate_everything(rs_str);