mirror of
				https://github.com/lunarmodules/luasocket.git
				synced 2025-10-30 18:05:44 +01:00 
			
		
		
		
	Local index in for loop was getting changed...
This commit is contained in:
		| @@ -1,11 +1,11 @@ | ||||
| function set_add(set, sock) | ||||
|     tinsert(set, sock) | ||||
|     table.insert(set, sock) | ||||
| end | ||||
|  | ||||
| function set_remove(set, sock) | ||||
|     for i = 1, getn(set) do | ||||
|     for i = 1, table.getn(set) do | ||||
|         if set[i] == sock then | ||||
|            tremove(set, i) | ||||
|            table.remove(set, i) | ||||
|            break | ||||
|         end | ||||
|     end  | ||||
| @@ -20,10 +20,10 @@ if arg then | ||||
|     port2 = arg[3] or port2 | ||||
| end | ||||
|  | ||||
| server1, error = bind(host, port1) | ||||
| server1, error = socket.bind(host, port1) | ||||
| if not server1 then print(error) exit() end | ||||
| server1:timeout(1) | ||||
| server2, error = bind(host, port2) | ||||
| server2, error = socket.bind(host, port2) | ||||
| if not server2 then print(error) exit() end | ||||
| server2:timeout(1) | ||||
|  | ||||
| @@ -35,7 +35,7 @@ sock_id[server2] = 2 | ||||
| next_id = 3 | ||||
|  | ||||
| while 1 do | ||||
|     local readable, _, error = select(sock_set, nil) | ||||
|     local readable, _, error = socket.select(sock_set, nil) | ||||
|     for _, sock in readable do | ||||
|         -- is it a server socket | ||||
|         if sock_id[sock] < 3 then | ||||
| @@ -44,8 +44,8 @@ while 1 do | ||||
|                 incomming:timeout(1) | ||||
| 				sock_id[incomming] = next_id | ||||
|                 set_add(sock_set, incomming)  | ||||
|                 write("Added client id ", next_id, ". ",  | ||||
| 					getn(sock_set)-2, " total.\n") | ||||
|                 io.write("Added client id ", next_id, ". ",  | ||||
| 					table.getn(sock_set)-2, " total.\n") | ||||
| 				next_id = next_id + 1 | ||||
|             end | ||||
|         -- it is a client socket | ||||
| @@ -55,17 +55,17 @@ while 1 do | ||||
|             if error then  | ||||
|                 sock:close() | ||||
|                 set_remove(sock_set, sock)  | ||||
|                 write("Removed client number ", id, ". ", | ||||
|                 io.write("Removed client number ", id, ". ", | ||||
| 					getn(sock_set)-2, " total.\n") | ||||
|             else | ||||
|             	write("Broadcasting line '", id, "> ", line, "'.\n") | ||||
|             	_, writable, error = select(nil, sock_set, 1) | ||||
|             	io.write("Broadcasting line '", id, "> ", line, "'.\n") | ||||
|             	__, writable, error = socket.select(nil, sock_set, 1) | ||||
|             	if not error then | ||||
|                 	for _, outgoing in writable do | ||||
|                         write("Sending to client ", sock_id[outgoing], "\n") | ||||
|                 	for ___, outgoing in writable do | ||||
|                         io.write("Sending to client ", sock_id[outgoing], "\n") | ||||
|                     	outgoing:send(id, "> ", line, "\r\n") | ||||
|                 	end | ||||
|             	else write("No one ready to listen!!!\n") end | ||||
|             	else io.write("No one ready to listen!!!\n") end | ||||
| 			end | ||||
|         end | ||||
|     end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user