Skip to content

Commit ed46a02

Browse files
authored
Merge pull request #123 from g1331/fix/bf1/blaze
fix: 修复 BlazeSocket 连接关闭时的 SSL 错误
2 parents 00645d2 + 97d0d5e commit ed46a02

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

Diff for: utils/bf1/bf_utils.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1470,7 +1470,10 @@ async def get_player_list(
14701470
try:
14711471
response = await blaze_socket.send(packet)
14721472
except TimeoutError:
1473-
await blaze_socket.close()
1473+
try:
1474+
await blaze_socket.close()
1475+
except Exception as e:
1476+
logger.error(f"关闭连接时出错: {e}")
14741477
logger.error("Blaze后端超时!")
14751478
return "Blaze后端超时!"
14761479
if origin:

Diff for: utils/bf1/blaze/BlazeClient.py

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import random
22

3-
from utils.bf1.blaze.BlazeSocket import BlazeSocket, BlazeServerREQ
3+
from utils.bf1.blaze.BlazeSocket import BlazeServerREQ, BlazeSocket
44

55

66
class BlazeClient:
@@ -38,7 +38,12 @@ async def get_socket_for_pid(self, pid=None) -> BlazeSocket | None:
3838
client = self.clients_by_pid[pid]
3939
if client.connect:
4040
return client
41-
await client.close()
41+
try:
42+
await client.close()
43+
except Exception as e:
44+
from loguru import logger
45+
46+
logger.error(f"关闭客户端连接时出错: {e}")
4247
del self.clients_by_pid[pid]
4348

4449
new_client = BlazeClient()
@@ -51,14 +56,24 @@ async def get_socket_for_pid(self, pid=None) -> BlazeSocket | None:
5156
return None
5257

5358
async def close_all(self):
59+
from loguru import logger
60+
5461
for client in self.clients_by_pid.values():
55-
await client.close()
62+
try:
63+
await client.close()
64+
except Exception as e:
65+
logger.error(f"关闭客户端连接时出错: {e}")
5666
self.clients_by_pid.clear()
5767

5868
async def remove_client(self, pid: str):
5969
if pid in self.clients_by_pid:
6070
client = self.clients_by_pid[pid]
61-
await client.close()
71+
try:
72+
await client.close()
73+
except Exception as e:
74+
from loguru import logger
75+
76+
logger.error(f"关闭客户端连接时出错: {e}")
6277
del self.clients_by_pid[pid]
6378

6479

Diff for: utils/bf1/blaze/BlazeSocket.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,15 @@ async def connect_to_server(self):
109109
async def close(self):
110110
# 关闭连接
111111
self.connect = False
112-
self.writer.close()
113-
await self.writer.wait_closed()
112+
if self.writer:
113+
self.writer.close()
114+
try:
115+
await self.writer.wait_closed()
116+
except ssl.SSLError as e:
117+
# 处理SSL错误:APPLICATION_DATA_AFTER_CLOSE_NOTIFY
118+
logger.warning(f"SSL关闭连接时出现错误 (可忽略): {e}")
119+
except Exception as e:
120+
logger.error(f"关闭连接时出现错误: {e}")
114121
logger.success(f"已断开与Blaze服务器 {self.host}:{self.port} 的连接")
115122

116123
async def keepalive(self):

0 commit comments

Comments
 (0)