2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-28 12:57:52 +00:00

Merge branch 'master' into new-api

This commit is contained in:
Dan 2018-04-12 11:31:53 +02:00
commit 70cd0500de
3 changed files with 18 additions and 9 deletions

View File

@ -32,8 +32,8 @@ class Connection:
2: TCPIntermediate 2: TCPIntermediate
} }
def __init__(self, ipv4: str, proxy: type, mode: int = 1): def __init__(self, address: tuple, proxy: type, mode: int = 1):
self.address = (ipv4, 80) self.address = address
self.proxy = proxy self.proxy = proxy
self.mode = self.MODES.get(mode, TCPAbridged) self.mode = self.MODES.get(mode, TCPAbridged)
self.lock = threading.Lock() self.lock = threading.Lock()

View File

@ -35,4 +35,4 @@ class DataCenter:
} }
def __new__(cls, dc_id: int, test_mode: bool): def __new__(cls, dc_id: int, test_mode: bool):
return cls.TEST[dc_id] if test_mode else cls.PROD[dc_id] return (cls.TEST[dc_id], 80) if test_mode else (cls.PROD[dc_id], 443)

View File

@ -19,6 +19,7 @@
import logging import logging
import platform import platform
import threading import threading
import time
from datetime import timedelta, datetime from datetime import timedelta, datetime
from hashlib import sha1, sha256 from hashlib import sha1, sha256
from io import BytesIO from io import BytesIO
@ -61,7 +62,7 @@ class Session:
INITIAL_SALT = 0x616e67656c696361 INITIAL_SALT = 0x616e67656c696361
NET_WORKERS = 1 NET_WORKERS = 1
WAIT_TIMEOUT = 30 WAIT_TIMEOUT = 15
MAX_RETRIES = 5 MAX_RETRIES = 5
ACKS_THRESHOLD = 8 ACKS_THRESHOLD = 8
PING_INTERVAL = 5 PING_INTERVAL = 5
@ -159,6 +160,9 @@ class Session:
log.info("Connection inited: Layer {}".format(layer)) log.info("Connection inited: Layer {}".format(layer))
except (OSError, TimeoutError, Error): except (OSError, TimeoutError, Error):
self.stop() self.stop()
except Exception as e:
self.stop()
raise e
else: else:
break break
@ -308,8 +312,10 @@ class Session:
break break
try: try:
self._send(functions.PingDelayDisconnect(0, self.PING_INTERVAL + 15), False) self._send(functions.PingDelayDisconnect(
except (OSError, TimeoutError): 0, self.WAIT_TIMEOUT + 10
), False)
except (OSError, TimeoutError, Error):
pass pass
log.debug("PingThread stopped") log.debug("PingThread stopped")
@ -338,7 +344,7 @@ class Session:
try: try:
self.current_salt = self._send(functions.GetFutureSalts(1)).salts[0] self.current_salt = self._send(functions.GetFutureSalts(1)).salts[0]
except (OSError, TimeoutError): except (OSError, TimeoutError, Error):
self.connection.close() self.connection.close()
break break
@ -395,12 +401,15 @@ class Session:
def send(self, data: Object): def send(self, data: Object):
for i in range(self.MAX_RETRIES): for i in range(self.MAX_RETRIES):
self.is_connected.wait() self.is_connected.wait(self.WAIT_TIMEOUT)
try: try:
return self._send(data) return self._send(data)
except (OSError, TimeoutError): except (OSError, TimeoutError):
(log.warning if i > 0 else log.info)("{}: {} Retrying {}".format(i, datetime.now(), type(data))) (log.warning if i > 2 else log.info)(
"{}: {} Retrying {}".format(i, datetime.now(), type(data))
)
time.sleep(1)
continue continue
else: else:
return None return None