about summary refs log tree commit diff
path: root/src/socks.py
blob: bcb76c0c360160eb034299aa5920ab06d2a36e32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import asyncio
from ssl import SSLSocket


_SOCK_TIME_DELAY = 1.e-3


async def ssl_sock_accept(sock: SSLSocket) -> tuple[SSLSocket, str]:
    while True:
        try:
            return sock.accept()
        except BlockingIOError:
            await asyncio.sleep(_SOCK_TIME_DELAY)


async def ssl_sock_recv(sock: SSLSocket, buflen: int = 1024):
    while (msg := sock.recv(buflen)) == b'':
        await asyncio.sleep(_SOCK_TIME_DELAY)
    return msg


async def ssl_sock_sendall(sock: SSLSocket, data: bytes):
    sock.sendall(data)