Commit ce5b7b96 authored by mercury233's avatar mercury233

update socket connections

parent ab79baf5
...@@ -73,9 +73,9 @@ ban_user = (name) -> ...@@ -73,9 +73,9 @@ ban_user = (name) ->
for room in ROOM_all when room and room.established for room in ROOM_all when room and room.established
for player in room.players for player in room.players
if player and player.name == name if player and player.name == name
settings.ban.banned_ip.push(player.remoteAddress) settings.ban.banned_ip.push(player.ip)
ygopro.stoc_send_chat_to_room(room, "#{player.name} 被系统请出了房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{player.name} 被系统请出了房间", ygopro.constants.COLORS.RED)
player.end() player.destroy()
continue continue
return return
...@@ -198,7 +198,7 @@ ROOM_find_or_create_random = (type, player_ip)-> ...@@ -198,7 +198,7 @@ ROOM_find_or_create_random = (type, player_ip)->
return room and room.random_type != '' and !room.started and return room and room.random_type != '' and !room.started and
((type == '' and room.random_type != 'T') or room.random_type == type) and ((type == '' and room.random_type != 'T') or room.random_type == type) and
room.get_playing_player().length < max_player and room.get_playing_player().length < max_player and
(room.get_host() == null or room.get_host().remoteAddress != ROOM_players_oppentlist[player_ip]) and (room.get_host() == null or room.get_host().ip != ROOM_players_oppentlist[player_ip]) and
(playerbanned == room.deprecated) (playerbanned == room.deprecated)
if result if result
result.welcome = '对手已经在等你了,开始决斗吧!' result.welcome = '对手已经在等你了,开始决斗吧!'
...@@ -506,7 +506,7 @@ class Room ...@@ -506,7 +506,7 @@ class Room
@watcher_buffers = [] @watcher_buffers = []
@recorder_buffers = [] @recorder_buffers = []
@players = [] @players = []
@watcher.end() if @watcher @watcher.destroy() if @watcher
@deleted = true @deleted = true
index = _.indexOf(ROOM_all, this) index = _.indexOf(ROOM_all, this)
ROOM_all[index] = null unless index == -1 ROOM_all[index] = null unless index == -1
...@@ -543,24 +543,16 @@ class Room ...@@ -543,24 +543,16 @@ class Room
connect: (client)-> connect: (client)->
@players.push client @players.push client
client.ip = client.remoteAddress
connect_count = 0
if client.remoteAddress != '::ffff:127.0.0.1'
if connect_count = ROOM_connected_ip[client.remoteAddress]
connect_count++
else
connect_count = 1
ROOM_connected_ip[client.remoteAddress] = connect_count
if @random_type if @random_type
client.abuse_count = 0 client.abuse_count = 0
host_player = @get_host() host_player = @get_host()
if host_player && (host_player != client) if host_player && (host_player != client)
# 进来时已经有人在等待了,互相记录为匹配过 # 进来时已经有人在等待了,互相记录为匹配过
ROOM_players_oppentlist[host_player.remoteAddress] = client.remoteAddress ROOM_players_oppentlist[host_player.ip] = client.ip
ROOM_players_oppentlist[client.remoteAddress] = host_player.remoteAddress ROOM_players_oppentlist[client.ip] = host_player.ip
else else
# 第一个玩家刚进来,还没就位 # 第一个玩家刚进来,还没就位
ROOM_players_oppentlist[client.remoteAddress] = null ROOM_players_oppentlist[client.ip] = null
if @established if @established
roomlist.update(this) if !@private and !@started and settings.modules.enable_websocket_roomlist roomlist.update(this) if !@private and !@started and settings.modules.enable_websocket_roomlist
...@@ -596,6 +588,13 @@ class Room ...@@ -596,6 +588,13 @@ class Room
# 网络连接 # 网络连接
net.createServer (client) -> net.createServer (client) ->
client.ip = client.remoteAddress
connect_count = ROOM_connected_ip[client.ip] or 0
if client.ip != '::ffff:127.0.0.1'
connect_count++
ROOM_connected_ip[client.ip] = connect_count
#log.info "connect", client.ip, ROOM_connected_ip[client.ip]
# server stand for the connection to ygopro server process # server stand for the connection to ygopro server process
server = new net.Socket() server = new net.Socket()
client.server = server client.server = server
...@@ -610,11 +609,12 @@ net.createServer (client) -> ...@@ -610,11 +609,12 @@ net.createServer (client) ->
if connect_count > 0 if connect_count > 0
connect_count-- connect_count--
ROOM_connected_ip[client.ip] = connect_count ROOM_connected_ip[client.ip] = connect_count
#log.info "disconnect", client.ip, ROOM_connected_ip[client.ip]
tribute(client) tribute(client)
unless client.closed unless client.closed
client.closed = true client.closed = true
room.disconnect(client) if room room.disconnect(client) if room
server.end() server.destroy()
return return
client.on 'error', (error)-> client.on 'error', (error)->
...@@ -624,42 +624,45 @@ net.createServer (client) -> ...@@ -624,42 +624,45 @@ net.createServer (client) ->
if connect_count > 0 if connect_count > 0
connect_count-- connect_count--
ROOM_connected_ip[client.ip] = connect_count ROOM_connected_ip[client.ip] = connect_count
#log.info "err disconnect", client.ip, ROOM_connected_ip[client.ip]
tribute(client) tribute(client)
unless client.closed unless client.closed
client.closed = error client.closed = error
room.disconnect(client, error) if room room.disconnect(client, error) if room
server.end() server.destroy()
return return
client.on 'timeout', ()-> client.on 'timeout', ()->
server.end() server.destroy()
return return
server.on 'close', (had_error) -> server.on 'close', (had_error) ->
#log.info "server closed", client.name, had_error #log.info "server closed", client.name, had_error
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
#log.info "server close", client.ip, ROOM_connected_ip[client.ip]
tribute(server) tribute(server)
room.disconnector = 'server' if room room.disconnector = 'server' if room
server.closed = true unless server.closed server.closed = true unless server.closed
unless client.closed unless client.closed
ygopro.stoc_send_chat(client, "服务器关闭了连接", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "服务器关闭了连接", ygopro.constants.COLORS.RED)
client.end() client.destroy()
return return
server.on 'error', (error)-> server.on 'error', (error)->
#log.info "server error", client.name, error #log.info "server error", client.name, error
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
#log.info "server err close", client.ip, ROOM_connected_ip[client.ip]
tribute(server) tribute(server)
room.disconnector = 'server' if room room.disconnector = 'server' if room
server.closed = error server.closed = error
unless client.closed unless client.closed
ygopro.stoc_send_chat(client, "服务器错误: #{error}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "服务器错误: #{error}", ygopro.constants.COLORS.RED)
client.end() client.destroy()
return return
if ROOM_bad_ip[client.remoteAddress] > 5 if ROOM_bad_ip[client.ip] > 5
log.info 'BAD IP', client.remoteAddress log.info 'BAD IP', client.ip
client.end() client.destroy()
return return
if settings.modules.enable_cloud_replay if settings.modules.enable_cloud_replay
...@@ -673,11 +676,11 @@ net.createServer (client) -> ...@@ -673,11 +676,11 @@ net.createServer (client) ->
if err if err
log.info "cloud replay unzip error: " + err log.info "cloud replay unzip error: " + err
ygopro.stoc_send_chat(client, "播放录像出错", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "播放录像出错", ygopro.constants.COLORS.RED)
client.end() client.destroy()
return return
ygopro.stoc_send_chat(client, "正在观看云录像:R##{replay.replay_id} #{replay.player_names} #{replay.date_time}", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client, "正在观看云录像:R##{replay.replay_id} #{replay.player_names} #{replay.date_time}", ygopro.constants.COLORS.BABYBLUE)
client.write replay_buffer client.write replay_buffer
client.end() client.destroy()
return return
return return
...@@ -734,14 +737,14 @@ net.createServer (client) -> ...@@ -734,14 +737,14 @@ net.createServer (client) ->
looplimit++ looplimit++
#log.info(looplimit) #log.info(looplimit)
if looplimit > 800 or ROOM_bad_ip[client.remoteAddress] > 5 if looplimit > 800 or ROOM_bad_ip[client.ip] > 5
log.info("error ctos", client.name, client.remoteAddress) log.info("error ctos", client.name, client.ip)
bad_ip_count = ROOM_bad_ip[client.remoteAddress] bad_ip_count = ROOM_bad_ip[client.ip]
if bad_ip_count if bad_ip_count
ROOM_bad_ip[client.remoteAddress] = bad_ip_count + 1 ROOM_bad_ip[client.ip] = bad_ip_count + 1
else else
ROOM_bad_ip[client.remoteAddress] = 1 ROOM_bad_ip[client.ip] = 1
client.end() client.destroy()
break break
if client.established if client.established
...@@ -804,7 +807,7 @@ net.createServer (client) -> ...@@ -804,7 +807,7 @@ net.createServer (client) ->
#log.info(looplimit) #log.info(looplimit)
if looplimit > 800 if looplimit > 800
log.info("error stoc", client.name) log.info("error stoc", client.name)
server.end() server.destroy()
break break
client.write buffer for buffer in datas client.write buffer for buffer in datas
...@@ -835,7 +838,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -835,7 +838,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else if info.pass.toUpperCase()=="R" and settings.modules.enable_cloud_replay else if info.pass.toUpperCase()=="R" and settings.modules.enable_cloud_replay
ygopro.stoc_send_chat(client,"以下是您近期的云录像,密码处输入 R#录像编号 即可观看", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client,"以下是您近期的云录像,密码处输入 R#录像编号 即可观看", ygopro.constants.COLORS.BABYBLUE)
redisdb.lrange client.remoteAddress+":replays", 0, 2, (err, result)-> redisdb.lrange client.ip+":replays", 0, 2, (err, result)->
_.each result, (replay_id,id)-> _.each result, (replay_id,id)->
redisdb.hgetall "replay:"+replay_id, (err, replay)-> redisdb.hgetall "replay:"+replay_id, (err, replay)->
if err or !replay if err or !replay
...@@ -851,13 +854,13 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -851,13 +854,13 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
msg: 1 msg: 1
code: 2 code: 2
} }
client.end() client.destroy()
return), 500 return), 500
else if info.pass[0...2].toUpperCase()=="R#" and settings.modules.enable_cloud_replay else if info.pass[0...2].toUpperCase()=="R#" and settings.modules.enable_cloud_replay
replay_id=info.pass.split("#")[1] replay_id=info.pass.split("#")[1]
if (replay_id>0 and replay_id<=9) if (replay_id>0 and replay_id<=9)
redisdb.lindex client.remoteAddress+":replays", replay_id-1, (err, replay_id)-> redisdb.lindex client.ip+":replays", replay_id-1, (err, replay_id)->
if err or !replay_id if err or !replay_id
log.info "cloud replay replayid error: " + err if err log.info "cloud replay replayid error: " + err if err
ygopro.stoc_die(client, "没有找到录像") ygopro.stoc_die(client, "没有找到录像")
...@@ -879,7 +882,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -879,7 +882,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
msg: 4 msg: 4
code: settings.version code: settings.version
} }
client.end() client.destroy()
else if !info.pass.length and !settings.modules.enable_random_duel and !settings.modules.enable_windbot else if !info.pass.length and !settings.modules.enable_random_duel and !settings.modules.enable_windbot
ygopro.stoc_die(client, "房间名为空,请填写主机密码") ygopro.stoc_die(client, "房间名为空,请填写主机密码")
...@@ -998,38 +1001,38 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -998,38 +1001,38 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
else if !client.name or client.name=="" else if !client.name or client.name==""
ygopro.stoc_die(client, "请输入正确的用户名") ygopro.stoc_die(client, "请输入正确的用户名")
else if ROOM_connected_ip[client.remoteAddress] > 10 else if ROOM_connected_ip[client.ip] > 5
log.warn("MULTI LOGIN", client.name, client.remoteAddress) log.warn("MULTI LOGIN", client.name, client.ip)
ygopro.stoc_die(client, "同时开启的客户端数量过多 " + client.remoteAddress) ygopro.stoc_die(client, "同时开启的客户端数量过多 " + client.ip)
else if _.indexOf(settings.ban.banned_user, client.name) > -1 #账号被封 else if _.indexOf(settings.ban.banned_user, client.name) > -1 #账号被封
settings.ban.banned_ip.push(client.remoteAddress) settings.ban.banned_ip.push(client.ip)
log.warn("BANNED USER LOGIN", client.name, client.remoteAddress) log.warn("BANNED USER LOGIN", client.name, client.ip)
ygopro.stoc_die(client, "您的账号已被封禁") ygopro.stoc_die(client, "您的账号已被封禁")
else if _.indexOf(settings.ban.banned_ip, client.remoteAddress) > -1 #IP被封 else if _.indexOf(settings.ban.banned_ip, client.ip) > -1 #IP被封
log.warn("BANNED IP LOGIN", client.name, client.remoteAddress) log.warn("BANNED IP LOGIN", client.name, client.ip)
ygopro.stoc_die(client, "您的账号已被封禁") ygopro.stoc_die(client, "您的账号已被封禁")
else if _.any(settings.ban.badword_level3, (badword) -> else if _.any(settings.ban.badword_level3, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
log.warn("BAD NAME LEVEL 3", client.name, client.remoteAddress) log.warn("BAD NAME LEVEL 3", client.name, client.ip)
ygopro.stoc_die(client, "您的用户名存在不适当的内容") ygopro.stoc_die(client, "您的用户名存在不适当的内容")
else if _.any(settings.ban.badword_level2, (badword) -> else if _.any(settings.ban.badword_level2, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
log.warn("BAD NAME LEVEL 2", client.name, client.remoteAddress) log.warn("BAD NAME LEVEL 2", client.name, client.ip)
ygopro.stoc_die(client, "您的用户名存在不适当的内容") ygopro.stoc_die(client, "您的用户名存在不适当的内容")
else if _.any(settings.ban.badword_level1, (badword) -> else if _.any(settings.ban.badword_level1, (badword) ->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return name.match(regexp) return name.match(regexp)
, name = client.name) , name = client.name)
log.warn("BAD NAME LEVEL 1", client.name, client.remoteAddress) log.warn("BAD NAME LEVEL 1", client.name, client.ip)
ygopro.stoc_die(client, "您的用户名存在不适当的内容,请注意更改") ygopro.stoc_die(client, "您的用户名存在不适当的内容,请注意更改")
else if info.pass.length && !ROOM_validate(info.pass) else if info.pass.length && !ROOM_validate(info.pass)
...@@ -1045,7 +1048,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)-> ...@@ -1045,7 +1048,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server)->
ygopro.stoc_send_chat(client, "您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client, "您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新", ygopro.constants.COLORS.BABYBLUE)
#log.info 'join_game',info.pass, client.name #log.info 'join_game',info.pass, client.name
room = ROOM_find_or_create_by_name(info.pass, client.remoteAddress) room = ROOM_find_or_create_by_name(info.pass, client.ip)
if !room if !room
ygopro.stoc_die(client, "服务器已经爆满,请稍候再试") ygopro.stoc_die(client, "服务器已经爆满,请稍候再试")
else if room.error else if room.error
...@@ -1221,7 +1224,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)-> ...@@ -1221,7 +1224,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server)->
if client.kick_count>=5 if client.kick_count>=5
ygopro.stoc_send_chat_to_room(room, "#{client.name} 被系统请出了房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{client.name} 被系统请出了房间", ygopro.constants.COLORS.RED)
ROOM_ban_player(player.name, player.ip, "挂房间") ROOM_ban_player(player.name, player.ip, "挂房间")
client.end() client.destroy()
return true return true
ygopro.stoc_send_chat_to_room(room, "#{player.name} 被请出了房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{player.name} 被请出了房间", ygopro.constants.COLORS.RED)
return false return false
...@@ -1263,7 +1266,7 @@ wait_room_start = (room, time)-> ...@@ -1263,7 +1266,7 @@ wait_room_start = (room, time)->
if player and player.is_host if player and player.is_host
ROOM_ban_player(player.name, player.ip, "挂房间") ROOM_ban_player(player.name, player.ip, "挂房间")
ygopro.stoc_send_chat_to_room(room, "#{player.name} 被系统请出了房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{player.name} 被系统请出了房间", ygopro.constants.COLORS.RED)
player.end() player.destroy()
return return
#tip #tip
...@@ -1320,7 +1323,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)-> ...@@ -1320,7 +1323,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server)->
room.dueling_players = [] room.dueling_players = []
for player in room.players when player.pos != 7 for player in room.players when player.pos != 7
room.dueling_players[player.pos] = player room.dueling_players[player.pos] = player
room.player_datas.push ip: player.remoteAddress, name: player.name room.player_datas.push ip: player.ip, name: player.name
if settings.modules.tips if settings.modules.tips
ygopro.stoc_send_random_tip(client) ygopro.stoc_send_random_tip(client)
return return
...@@ -1363,7 +1366,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1363,7 +1366,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
if !(room and room.random_type) if !(room and room.random_type)
return cancel return cancel
if client.abuse_count>=5 if client.abuse_count>=5
log.warn "BANNED CHAT", client.name, client.remoteAddress, msg log.warn "BANNED CHAT", client.name, client.ip, msg
ygopro.stoc_send_chat(client, "您已被禁言!", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "您已被禁言!", ygopro.constants.COLORS.RED)
return true return true
oldmsg = msg oldmsg = msg
...@@ -1371,13 +1374,13 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1371,13 +1374,13 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return msg.match(regexp) return msg.match(regexp)
, msg)) , msg))
log.warn "BAD WORD LEVEL 3", client.name, client.remoteAddress, oldmsg log.warn "BAD WORD LEVEL 3", client.name, client.ip, oldmsg
cancel = true cancel = true
if client.abuse_count>0 if client.abuse_count>0
ygopro.stoc_send_chat(client, "您的发言存在严重不适当的内容,禁止您使用随机对战功能!", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "您的发言存在严重不适当的内容,禁止您使用随机对战功能!", ygopro.constants.COLORS.RED)
ROOM_ban_player(client.name, client.ip, "发言违规") ROOM_ban_player(client.name, client.ip, "发言违规")
ROOM_ban_player(client.name, client.ip, "发言违规", 3) ROOM_ban_player(client.name, client.ip, "发言违规", 3)
client.end() client.destroy()
return true return true
else else
client.abuse_count=client.abuse_count+4 client.abuse_count=client.abuse_count+4
...@@ -1386,7 +1389,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1386,7 +1389,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return msg.match(regexp) return msg.match(regexp)
, msg)) , msg))
log.warn "BAD WORD LEVEL 2", client.name, client.remoteAddress, oldmsg log.warn "BAD WORD LEVEL 2", client.name, client.ip, oldmsg
client.abuse_count=client.abuse_count+3 client.abuse_count=client.abuse_count+3
ygopro.stoc_send_chat(client, "您的发言存在不适当的内容,发送失败!", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "您的发言存在不适当的内容,发送失败!", ygopro.constants.COLORS.RED)
cancel = true cancel = true
...@@ -1398,7 +1401,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1398,7 +1401,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
return return
, msg) , msg)
if oldmsg != msg if oldmsg != msg
log.warn "BAD WORD LEVEL 1", client.name, client.remoteAddress, oldmsg log.warn "BAD WORD LEVEL 1", client.name, client.ip, oldmsg
client.abuse_count=client.abuse_count+1 client.abuse_count=client.abuse_count+1
ygopro.stoc_send_chat(client, "请使用文明用语!") ygopro.stoc_send_chat(client, "请使用文明用语!")
struct = ygopro.structs["chat"] struct = ygopro.structs["chat"]
...@@ -1409,7 +1412,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1409,7 +1412,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
regexp = new RegExp(badword, 'i') regexp = new RegExp(badword, 'i')
return msg.match(regexp) return msg.match(regexp)
, msg)) , msg))
log.info "BAD WORD LEVEL 0", client.name, client.remoteAddress, oldmsg log.info "BAD WORD LEVEL 0", client.name, client.ip, oldmsg
if client.abuse_count>=5 if client.abuse_count>=5
ygopro.stoc_send_chat_to_room(room, "#{client.name} 已被禁言!", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{client.name} 已被禁言!", ygopro.constants.COLORS.RED)
ROOM_ban_player(client.name, client.ip, "发言违规") ROOM_ban_player(client.name, client.ip, "发言违规")
...@@ -1548,7 +1551,7 @@ setInterval ()-> ...@@ -1548,7 +1551,7 @@ setInterval ()->
room.last_active_time = moment() room.last_active_time = moment()
ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机") ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机")
ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 被系统请出了房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 被系统请出了房间", ygopro.constants.COLORS.RED)
room.waiting_for_player.server.end() room.waiting_for_player.server.destroy()
else if time_passed >= (settings.modules.hang_timeout - 20) and not (time_passed % 10) else if time_passed >= (settings.modules.hang_timeout - 20) and not (time_passed % 10)
ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 已经很久没有操作了,若继续挂机,将于#{settings.modules.hang_timeout - time_passed}秒后被请出房间", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{room.waiting_for_player.name} 已经很久没有操作了,若继续挂机,将于#{settings.modules.hang_timeout - time_passed}秒后被请出房间", ygopro.constants.COLORS.RED)
return return
......
...@@ -98,9 +98,9 @@ ...@@ -98,9 +98,9 @@
for (l = 0, len1 = ref.length; l < len1; l++) { for (l = 0, len1 = ref.length; l < len1; l++) {
player = ref[l]; player = ref[l];
if (player && player.name === name) { if (player && player.name === name) {
settings.ban.banned_ip.push(player.remoteAddress); settings.ban.banned_ip.push(player.ip);
ygopro.stoc_send_chat_to_room(room, player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED);
player.end(); player.destroy();
continue; continue;
} }
} }
...@@ -283,7 +283,7 @@ ...@@ -283,7 +283,7 @@
max_player = type === 'T' ? 4 : 2; max_player = type === 'T' ? 4 : 2;
playerbanned = bannedplayer && bannedplayer.count > 3 && moment() < bannedplayer.time; playerbanned = bannedplayer && bannedplayer.count > 3 && moment() < bannedplayer.time;
result = _.find(ROOM_all, function(room) { result = _.find(ROOM_all, function(room) {
return room && room.random_type !== '' && !room.started && ((type === '' && room.random_type !== 'T') || room.random_type === type) && room.get_playing_player().length < max_player && (room.get_host() === null || room.get_host().remoteAddress !== ROOM_players_oppentlist[player_ip]) && (playerbanned === room.deprecated); return room && room.random_type !== '' && !room.started && ((type === '' && room.random_type !== 'T') || room.random_type === type) && room.get_playing_player().length < max_player && (room.get_host() === null || room.get_host().ip !== ROOM_players_oppentlist[player_ip]) && (playerbanned === room.deprecated);
}); });
if (result) { if (result) {
result.welcome = '对手已经在等你了,开始决斗吧!'; result.welcome = '对手已经在等你了,开始决斗吧!';
...@@ -668,7 +668,7 @@ ...@@ -668,7 +668,7 @@
this.recorder_buffers = []; this.recorder_buffers = [];
this.players = []; this.players = [];
if (this.watcher) { if (this.watcher) {
this.watcher.end(); this.watcher.destroy();
} }
this.deleted = true; this.deleted = true;
index = _.indexOf(ROOM_all, this); index = _.indexOf(ROOM_all, this);
...@@ -717,26 +717,16 @@ ...@@ -717,26 +717,16 @@
}; };
Room.prototype.connect = function(client) { Room.prototype.connect = function(client) {
var connect_count, host_player; var host_player;
this.players.push(client); this.players.push(client);
client.ip = client.remoteAddress;
connect_count = 0;
if (client.remoteAddress !== '::ffff:127.0.0.1') {
if (connect_count = ROOM_connected_ip[client.remoteAddress]) {
connect_count++;
} else {
connect_count = 1;
}
}
ROOM_connected_ip[client.remoteAddress] = connect_count;
if (this.random_type) { if (this.random_type) {
client.abuse_count = 0; client.abuse_count = 0;
host_player = this.get_host(); host_player = this.get_host();
if (host_player && (host_player !== client)) { if (host_player && (host_player !== client)) {
ROOM_players_oppentlist[host_player.remoteAddress] = client.remoteAddress; ROOM_players_oppentlist[host_player.ip] = client.ip;
ROOM_players_oppentlist[client.remoteAddress] = host_player.remoteAddress; ROOM_players_oppentlist[client.ip] = host_player.ip;
} else { } else {
ROOM_players_oppentlist[client.remoteAddress] = null; ROOM_players_oppentlist[client.ip] = null;
} }
} }
if (this.established) { if (this.established) {
...@@ -789,12 +779,18 @@ ...@@ -789,12 +779,18 @@
})(); })();
net.createServer(function(client) { net.createServer(function(client) {
var server; var connect_count, server;
client.ip = client.remoteAddress;
connect_count = ROOM_connected_ip[client.ip] || 0;
if (client.ip !== '::ffff:127.0.0.1') {
connect_count++;
}
ROOM_connected_ip[client.ip] = connect_count;
server = new net.Socket(); server = new net.Socket();
client.server = server; client.server = server;
client.setTimeout(300000); client.setTimeout(300000);
client.on('close', function(had_error) { client.on('close', function(had_error) {
var connect_count, room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
connect_count = ROOM_connected_ip[client.ip]; connect_count = ROOM_connected_ip[client.ip];
if (connect_count > 0) { if (connect_count > 0) {
...@@ -808,10 +804,10 @@ ...@@ -808,10 +804,10 @@
room.disconnect(client); room.disconnect(client);
} }
} }
server.end(); server.destroy();
}); });
client.on('error', function(error) { client.on('error', function(error) {
var connect_count, room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
connect_count = ROOM_connected_ip[client.ip]; connect_count = ROOM_connected_ip[client.ip];
if (connect_count > 0) { if (connect_count > 0) {
...@@ -825,10 +821,10 @@ ...@@ -825,10 +821,10 @@
room.disconnect(client, error); room.disconnect(client, error);
} }
} }
server.end(); server.destroy();
}); });
client.on('timeout', function() { client.on('timeout', function() {
server.end(); server.destroy();
}); });
server.on('close', function(had_error) { server.on('close', function(had_error) {
var room; var room;
...@@ -842,7 +838,7 @@ ...@@ -842,7 +838,7 @@
} }
if (!client.closed) { if (!client.closed) {
ygopro.stoc_send_chat(client, "服务器关闭了连接", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "服务器关闭了连接", ygopro.constants.COLORS.RED);
client.end(); client.destroy();
} }
}); });
server.on('error', function(error) { server.on('error', function(error) {
...@@ -855,12 +851,12 @@ ...@@ -855,12 +851,12 @@
server.closed = error; server.closed = error;
if (!client.closed) { if (!client.closed) {
ygopro.stoc_send_chat(client, "服务器错误: " + error, ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "服务器错误: " + error, ygopro.constants.COLORS.RED);
client.end(); client.destroy();
} }
}); });
if (ROOM_bad_ip[client.remoteAddress] > 5) { if (ROOM_bad_ip[client.ip] > 5) {
log.info('BAD IP', client.remoteAddress); log.info('BAD IP', client.ip);
client.end(); client.destroy();
return; return;
} }
if (settings.modules.enable_cloud_replay) { if (settings.modules.enable_cloud_replay) {
...@@ -876,12 +872,12 @@ ...@@ -876,12 +872,12 @@
if (err) { if (err) {
log.info("cloud replay unzip error: " + err); log.info("cloud replay unzip error: " + err);
ygopro.stoc_send_chat(client, "播放录像出错", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "播放录像出错", ygopro.constants.COLORS.RED);
client.end(); client.destroy();
return; return;
} }
ygopro.stoc_send_chat(client, "正在观看云录像:R#" + replay.replay_id + " " + replay.player_names + " " + replay.date_time, ygopro.constants.COLORS.BABYBLUE); ygopro.stoc_send_chat(client, "正在观看云录像:R#" + replay.replay_id + " " + replay.player_names + " " + replay.date_time, ygopro.constants.COLORS.BABYBLUE);
client.write(replay_buffer); client.write(replay_buffer);
client.end(); client.destroy();
}); });
}; };
} }
...@@ -940,15 +936,15 @@ ...@@ -940,15 +936,15 @@
} }
} }
looplimit++; looplimit++;
if (looplimit > 800 || ROOM_bad_ip[client.remoteAddress] > 5) { if (looplimit > 800 || ROOM_bad_ip[client.ip] > 5) {
log.info("error ctos", client.name, client.remoteAddress); log.info("error ctos", client.name, client.ip);
bad_ip_count = ROOM_bad_ip[client.remoteAddress]; bad_ip_count = ROOM_bad_ip[client.ip];
if (bad_ip_count) { if (bad_ip_count) {
ROOM_bad_ip[client.remoteAddress] = bad_ip_count + 1; ROOM_bad_ip[client.ip] = bad_ip_count + 1;
} else { } else {
ROOM_bad_ip[client.remoteAddress] = 1; ROOM_bad_ip[client.ip] = 1;
} }
client.end(); client.destroy();
break; break;
} }
} }
...@@ -1020,7 +1016,7 @@ ...@@ -1020,7 +1016,7 @@
looplimit++; looplimit++;
if (looplimit > 800) { if (looplimit > 800) {
log.info("error stoc", client.name); log.info("error stoc", client.name);
server.end(); server.destroy();
break; break;
} }
} }
...@@ -1050,7 +1046,7 @@ ...@@ -1050,7 +1046,7 @@
ygopro.stoc_die(client, settings.modules.stop); ygopro.stoc_die(client, settings.modules.stop);
} else if (info.pass.toUpperCase() === "R" && settings.modules.enable_cloud_replay) { } else if (info.pass.toUpperCase() === "R" && settings.modules.enable_cloud_replay) {
ygopro.stoc_send_chat(client, "以下是您近期的云录像,密码处输入 R#录像编号 即可观看", ygopro.constants.COLORS.BABYBLUE); ygopro.stoc_send_chat(client, "以下是您近期的云录像,密码处输入 R#录像编号 即可观看", ygopro.constants.COLORS.BABYBLUE);
redisdb.lrange(client.remoteAddress + ":replays", 0, 2, function(err, result) { redisdb.lrange(client.ip + ":replays", 0, 2, function(err, result) {
_.each(result, function(replay_id, id) { _.each(result, function(replay_id, id) {
redisdb.hgetall("replay:" + replay_id, function(err, replay) { redisdb.hgetall("replay:" + replay_id, function(err, replay) {
if (err || !replay) { if (err || !replay) {
...@@ -1068,12 +1064,12 @@ ...@@ -1068,12 +1064,12 @@
msg: 1, msg: 1,
code: 2 code: 2
}); });
client.end(); client.destroy();
}), 500); }), 500);
} else if (info.pass.slice(0, 2).toUpperCase() === "R#" && settings.modules.enable_cloud_replay) { } else if (info.pass.slice(0, 2).toUpperCase() === "R#" && settings.modules.enable_cloud_replay) {
replay_id = info.pass.split("#")[1]; replay_id = info.pass.split("#")[1];
if (replay_id > 0 && replay_id <= 9) { if (replay_id > 0 && replay_id <= 9) {
redisdb.lindex(client.remoteAddress + ":replays", replay_id - 1, function(err, replay_id) { redisdb.lindex(client.ip + ":replays", replay_id - 1, function(err, replay_id) {
if (err || !replay_id) { if (err || !replay_id) {
if (err) { if (err) {
log.info("cloud replay replayid error: " + err); log.info("cloud replay replayid error: " + err);
...@@ -1097,7 +1093,7 @@ ...@@ -1097,7 +1093,7 @@
msg: 4, msg: 4,
code: settings.version code: settings.version
}); });
client.end(); client.destroy();
} else if (!info.pass.length && !settings.modules.enable_random_duel && !settings.modules.enable_windbot) { } else if (!info.pass.length && !settings.modules.enable_random_duel && !settings.modules.enable_windbot) {
ygopro.stoc_die(client, "房间名为空,请填写主机密码"); ygopro.stoc_die(client, "房间名为空,请填写主机密码");
} else if (info.pass.length && settings.modules.mycard_auth && info.pass.slice(0, 2) !== 'AI') { } else if (info.pass.length && settings.modules.mycard_auth && info.pass.slice(0, 2) !== 'AI') {
...@@ -1225,36 +1221,36 @@ ...@@ -1225,36 +1221,36 @@
}); });
} else if (!client.name || client.name === "") { } else if (!client.name || client.name === "") {
ygopro.stoc_die(client, "请输入正确的用户名"); ygopro.stoc_die(client, "请输入正确的用户名");
} else if (ROOM_connected_ip[client.remoteAddress] > 10) { } else if (ROOM_connected_ip[client.ip] > 5) {
log.warn("MULTI LOGIN", client.name, client.remoteAddress); log.warn("MULTI LOGIN", client.name, client.ip);
ygopro.stoc_die(client, "同时开启的客户端数量过多 " + client.remoteAddress); ygopro.stoc_die(client, "同时开启的客户端数量过多 " + client.ip);
} else if (_.indexOf(settings.ban.banned_user, client.name) > -1) { } else if (_.indexOf(settings.ban.banned_user, client.name) > -1) {
settings.ban.banned_ip.push(client.remoteAddress); settings.ban.banned_ip.push(client.ip);
log.warn("BANNED USER LOGIN", client.name, client.remoteAddress); log.warn("BANNED USER LOGIN", client.name, client.ip);
ygopro.stoc_die(client, "您的账号已被封禁"); ygopro.stoc_die(client, "您的账号已被封禁");
} else if (_.indexOf(settings.ban.banned_ip, client.remoteAddress) > -1) { } else if (_.indexOf(settings.ban.banned_ip, client.ip) > -1) {
log.warn("BANNED IP LOGIN", client.name, client.remoteAddress); log.warn("BANNED IP LOGIN", client.name, client.ip);
ygopro.stoc_die(client, "您的账号已被封禁"); ygopro.stoc_die(client, "您的账号已被封禁");
} else if (_.any(settings.ban.badword_level3, function(badword) { } else if (_.any(settings.ban.badword_level3, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
}, name = client.name)) { }, name = client.name)) {
log.warn("BAD NAME LEVEL 3", client.name, client.remoteAddress); log.warn("BAD NAME LEVEL 3", client.name, client.ip);
ygopro.stoc_die(client, "您的用户名存在不适当的内容"); ygopro.stoc_die(client, "您的用户名存在不适当的内容");
} else if (_.any(settings.ban.badword_level2, function(badword) { } else if (_.any(settings.ban.badword_level2, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
}, name = client.name)) { }, name = client.name)) {
log.warn("BAD NAME LEVEL 2", client.name, client.remoteAddress); log.warn("BAD NAME LEVEL 2", client.name, client.ip);
ygopro.stoc_die(client, "您的用户名存在不适当的内容"); ygopro.stoc_die(client, "您的用户名存在不适当的内容");
} else if (_.any(settings.ban.badword_level1, function(badword) { } else if (_.any(settings.ban.badword_level1, function(badword) {
var regexp; var regexp;
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return name.match(regexp); return name.match(regexp);
}, name = client.name)) { }, name = client.name)) {
log.warn("BAD NAME LEVEL 1", client.name, client.remoteAddress); log.warn("BAD NAME LEVEL 1", client.name, client.ip);
ygopro.stoc_die(client, "您的用户名存在不适当的内容,请注意更改"); ygopro.stoc_die(client, "您的用户名存在不适当的内容,请注意更改");
} else if (info.pass.length && !ROOM_validate(info.pass)) { } else if (info.pass.length && !ROOM_validate(info.pass)) {
ygopro.stoc_die(client, "房间密码不正确"); ygopro.stoc_die(client, "房间密码不正确");
...@@ -1267,7 +1263,7 @@ ...@@ -1267,7 +1263,7 @@
buffer = struct.buffer; buffer = struct.buffer;
ygopro.stoc_send_chat(client, "您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新", ygopro.constants.COLORS.BABYBLUE); ygopro.stoc_send_chat(client, "您的版本号过低,可能出现未知问题,电脑用户请升级版本,YGOMobile用户请等待作者更新", ygopro.constants.COLORS.BABYBLUE);
} }
room = ROOM_find_or_create_by_name(info.pass, client.remoteAddress); room = ROOM_find_or_create_by_name(info.pass, client.ip);
if (!room) { if (!room) {
ygopro.stoc_die(client, "服务器已经爆满,请稍候再试"); ygopro.stoc_die(client, "服务器已经爆满,请稍候再试");
} else if (room.error) { } else if (room.error) {
...@@ -1470,7 +1466,7 @@ ...@@ -1470,7 +1466,7 @@
if (client.kick_count >= 5) { if (client.kick_count >= 5) {
ygopro.stoc_send_chat_to_room(room, client.name + " 被系统请出了房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, client.name + " 被系统请出了房间", ygopro.constants.COLORS.RED);
ROOM_ban_player(player.name, player.ip, "挂房间"); ROOM_ban_player(player.name, player.ip, "挂房间");
client.end(); client.destroy();
return true; return true;
} }
ygopro.stoc_send_chat_to_room(room, player.name + " 被请出了房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, player.name + " 被请出了房间", ygopro.constants.COLORS.RED);
...@@ -1533,7 +1529,7 @@ ...@@ -1533,7 +1529,7 @@
if (player && player.is_host) { if (player && player.is_host) {
ROOM_ban_player(player.name, player.ip, "挂房间"); ROOM_ban_player(player.name, player.ip, "挂房间");
ygopro.stoc_send_chat_to_room(room, player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED);
player.end(); player.destroy();
} }
} }
} }
...@@ -1625,7 +1621,7 @@ ...@@ -1625,7 +1621,7 @@
} }
room.dueling_players[player.pos] = player; room.dueling_players[player.pos] = player;
room.player_datas.push({ room.player_datas.push({
ip: player.remoteAddress, ip: player.ip,
name: player.name name: player.name
}); });
} }
...@@ -1689,7 +1685,7 @@ ...@@ -1689,7 +1685,7 @@
return cancel; return cancel;
} }
if (client.abuse_count >= 5) { if (client.abuse_count >= 5) {
log.warn("BANNED CHAT", client.name, client.remoteAddress, msg); log.warn("BANNED CHAT", client.name, client.ip, msg);
ygopro.stoc_send_chat(client, "您已被禁言!", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "您已被禁言!", ygopro.constants.COLORS.RED);
return true; return true;
} }
...@@ -1699,13 +1695,13 @@ ...@@ -1699,13 +1695,13 @@
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return msg.match(regexp); return msg.match(regexp);
}, msg)) { }, msg)) {
log.warn("BAD WORD LEVEL 3", client.name, client.remoteAddress, oldmsg); log.warn("BAD WORD LEVEL 3", client.name, client.ip, oldmsg);
cancel = true; cancel = true;
if (client.abuse_count > 0) { if (client.abuse_count > 0) {
ygopro.stoc_send_chat(client, "您的发言存在严重不适当的内容,禁止您使用随机对战功能!", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "您的发言存在严重不适当的内容,禁止您使用随机对战功能!", ygopro.constants.COLORS.RED);
ROOM_ban_player(client.name, client.ip, "发言违规"); ROOM_ban_player(client.name, client.ip, "发言违规");
ROOM_ban_player(client.name, client.ip, "发言违规", 3); ROOM_ban_player(client.name, client.ip, "发言违规", 3);
client.end(); client.destroy();
return true; return true;
} else { } else {
client.abuse_count = client.abuse_count + 4; client.abuse_count = client.abuse_count + 4;
...@@ -1716,7 +1712,7 @@ ...@@ -1716,7 +1712,7 @@
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return msg.match(regexp); return msg.match(regexp);
}, msg)) { }, msg)) {
log.warn("BAD WORD LEVEL 2", client.name, client.remoteAddress, oldmsg); log.warn("BAD WORD LEVEL 2", client.name, client.ip, oldmsg);
client.abuse_count = client.abuse_count + 3; client.abuse_count = client.abuse_count + 3;
ygopro.stoc_send_chat(client, "您的发言存在不适当的内容,发送失败!", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat(client, "您的发言存在不适当的内容,发送失败!", ygopro.constants.COLORS.RED);
cancel = true; cancel = true;
...@@ -1727,7 +1723,7 @@ ...@@ -1727,7 +1723,7 @@
msg = msg.replace(regexp, "**"); msg = msg.replace(regexp, "**");
}, msg); }, msg);
if (oldmsg !== msg) { if (oldmsg !== msg) {
log.warn("BAD WORD LEVEL 1", client.name, client.remoteAddress, oldmsg); log.warn("BAD WORD LEVEL 1", client.name, client.ip, oldmsg);
client.abuse_count = client.abuse_count + 1; client.abuse_count = client.abuse_count + 1;
ygopro.stoc_send_chat(client, "请使用文明用语!"); ygopro.stoc_send_chat(client, "请使用文明用语!");
struct = ygopro.structs["chat"]; struct = ygopro.structs["chat"];
...@@ -1739,7 +1735,7 @@ ...@@ -1739,7 +1735,7 @@
regexp = new RegExp(badword, 'i'); regexp = new RegExp(badword, 'i');
return msg.match(regexp); return msg.match(regexp);
}, msg)) { }, msg)) {
log.info("BAD WORD LEVEL 0", client.name, client.remoteAddress, oldmsg); log.info("BAD WORD LEVEL 0", client.name, client.ip, oldmsg);
} }
} }
if (client.abuse_count >= 5) { if (client.abuse_count >= 5) {
...@@ -1951,7 +1947,7 @@ ...@@ -1951,7 +1947,7 @@
room.last_active_time = moment(); room.last_active_time = moment();
ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机"); ROOM_ban_player(room.waiting_for_player.name, room.waiting_for_player.ip, "挂机");
ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 被系统请出了房间", ygopro.constants.COLORS.RED);
room.waiting_for_player.server.end(); room.waiting_for_player.server.destroy();
} else if (time_passed >= (settings.modules.hang_timeout - 20) && !(time_passed % 10)) { } else if (time_passed >= (settings.modules.hang_timeout - 20) && !(time_passed % 10)) {
ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 已经很久没有操作了,若继续挂机,将于" + (settings.modules.hang_timeout - time_passed) + "秒后被请出房间", ygopro.constants.COLORS.RED); ygopro.stoc_send_chat_to_room(room, room.waiting_for_player.name + " 已经很久没有操作了,若继续挂机,将于" + (settings.modules.hang_timeout - time_passed) + "秒后被请出房间", ygopro.constants.COLORS.RED);
} }
......
...@@ -158,5 +158,5 @@ for name, declaration of structs_declaration ...@@ -158,5 +158,5 @@ for name, declaration of structs_declaration
msg: 1 msg: 1
code: 2 code: 2
} if client } if client
client.end() if client client.destroy() if client
return return
\ No newline at end of file
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
}); });
} }
if (client) { if (client) {
client.end(); client.destroy();
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment