Skip to content
This repository was archived by the owner on Feb 11, 2026. It is now read-only.

Commit 146630d

Browse files
committed
фиксы сокета еще (стало только хуже)
1 parent 0fc808e commit 146630d

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

src/pymax/mixins/auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
class AuthMixin(ClientProtocol):
3030
def _check_phone(self) -> bool:
3131
return bool(re.match(PHONE_REGEX, self.phone))
32-
32+
3333
def _split_phone(self, phone: str) -> str:
3434
placeholder = ""
3535
result = ""
@@ -61,7 +61,7 @@ def _split_phone(self, phone: str) -> str:
6161
if phone.startswith("+998"):
6262
result = "+998 "
6363
placeholder = "00 000 00 00"
64-
phone = phone[len(result)-1:]
64+
phone = phone[len(result) - 1 :]
6565
for char in placeholder:
6666
if char == "0" and digit_index < len(phone):
6767
result += phone[digit_index]

src/pymax/mixins/socket.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ def _pack_packet(
8282
payload: dict[str, Any],
8383
) -> bytes:
8484
ver_b = ver.to_bytes(1, "big")
85-
cmd_b = cmd.to_bytes(2, "big")
86-
seq_b = (seq % 256).to_bytes(1, "big")
85+
cmd_b = cmd.to_bytes(1, "big")
86+
seq_b = seq.to_bytes(2, "big")
8787
opcode_b = opcode.to_bytes(2, "big")
8888
payload_bytes: bytes | None = msgpack.packb(payload)
8989
if payload_bytes is None:
@@ -255,6 +255,11 @@ async def connect(self, user_agent: UserAgentPayload | None = None) -> dict[str,
255255
self._outgoing = asyncio.Queue()
256256
self._pending = {}
257257
self._recv_task = self._create_safe_task(self._recv_loop(), name="recv_loop socket task")
258+
self._recv_task.add_done_callback(
259+
lambda t: self.logger.debug(
260+
"recv_task done: cancelled=%s, exc=%r", t.cancelled(), t.exception()
261+
)
262+
)
258263
self._outgoing_task = self._create_safe_task(
259264
self._outgoing_loop(), name="outgoing_loop socket task"
260265
)
@@ -364,11 +369,13 @@ async def _recv_loop(self) -> None:
364369
self.logger.debug("Received header: %s", header)
365370

366371
if not header:
372+
self.logger.error("No header received, exiting recv loop")
367373
break
368374

369375
datas = await self._recv_data(loop, header, sock)
370376

371377
if not datas:
378+
self.logger.warning("No data received, continuing recv loop")
372379
continue
373380

374381
consecutive_errors = 0
@@ -386,15 +393,15 @@ async def _recv_loop(self) -> None:
386393

387394
except asyncio.CancelledError:
388395
self.logger.debug("Recv loop cancelled")
389-
raise
396+
break
390397
except (
391398
ssl.SSLError,
392399
ssl.SSLEOFError,
393400
ConnectionResetError,
394401
BrokenPipeError,
395402
) as ssl_err:
396403
consecutive_errors += 1
397-
self.logger.error(
404+
self.logger.exception(
398405
"SSL/Connection error in recv_loop (error %d/%d): %s",
399406
consecutive_errors,
400407
max_consecutive_errors,

0 commit comments

Comments
 (0)