mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-11-04 09:57:29 +03:00 
			
		
		
		
	
							parent
							
								
									592e107f52
								
							
						
					
					
						commit
						82304b18eb
					
				| 
						 | 
					@ -19,12 +19,12 @@ class TcpClient:
 | 
				
			||||||
        self.delay = 0.1  # Read delay when there was no data available
 | 
					        self.delay = 0.1  # Read delay when there was no data available
 | 
				
			||||||
        self._lock = Lock()
 | 
					        self._lock = Lock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _recreate_socket(self):
 | 
					    def _recreate_socket(self, mode):
 | 
				
			||||||
        if self._proxy is None:
 | 
					        if self._proxy is None:
 | 
				
			||||||
            self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 | 
					            self._socket = socket.socket(mode, socket.SOCK_STREAM)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            import socks
 | 
					            import socks
 | 
				
			||||||
            self._socket = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM)
 | 
					            self._socket = socks.socksocket(mode, socket.SOCK_STREAM)
 | 
				
			||||||
            if type(self._proxy) is dict:
 | 
					            if type(self._proxy) is dict:
 | 
				
			||||||
                self._socket.set_proxy(**self._proxy)
 | 
					                self._socket.set_proxy(**self._proxy)
 | 
				
			||||||
            else:  # tuple, list, etc.
 | 
					            else:  # tuple, list, etc.
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,12 @@ class TcpClient:
 | 
				
			||||||
           'timeout' must be given in seconds
 | 
					           'timeout' must be given in seconds
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        if not self.connected:
 | 
					        if not self.connected:
 | 
				
			||||||
            self._recreate_socket()
 | 
					            if ':' in ip:  # IPv6
 | 
				
			||||||
 | 
					                self._recreate_socket(socket.AF_INET6)
 | 
				
			||||||
 | 
					                self._socket.settimeout(timeout)
 | 
				
			||||||
 | 
					                self._socket.connect((ip, port, 0, 0))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self._recreate_socket(socket.AF_INET)
 | 
				
			||||||
                self._socket.settimeout(timeout)
 | 
					                self._socket.settimeout(timeout)
 | 
				
			||||||
                self._socket.connect((ip, port))
 | 
					                self._socket.connect((ip, port))
 | 
				
			||||||
            self._socket.setblocking(False)
 | 
					            self._socket.setblocking(False)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -230,7 +230,7 @@ class TelegramBareClient:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # region Working with different Data Centers
 | 
					    # region Working with different Data Centers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _get_dc(self, dc_id, cdn=False):
 | 
					    def _get_dc(self, dc_id, ipv6=True, cdn=False):
 | 
				
			||||||
        """Gets the Data Center (DC) associated to 'dc_id'"""
 | 
					        """Gets the Data Center (DC) associated to 'dc_id'"""
 | 
				
			||||||
        if not self.dc_options:
 | 
					        if not self.dc_options:
 | 
				
			||||||
            raise ConnectionError(
 | 
					            raise ConnectionError(
 | 
				
			||||||
| 
						 | 
					@ -238,8 +238,10 @@ class TelegramBareClient:
 | 
				
			||||||
                'Stabilise a successful initial connection first.')
 | 
					                'Stabilise a successful initial connection first.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            return next(dc for dc in self.dc_options
 | 
					            return next(
 | 
				
			||||||
                        if dc.id == dc_id and bool(dc.cdn) == cdn)
 | 
					                dc for dc in self.dc_options if dc.id == dc_id and
 | 
				
			||||||
 | 
					                bool(dc.ipv6) == ipv6 and bool(dc.cdn) == cdn
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
        except StopIteration:
 | 
					        except StopIteration:
 | 
				
			||||||
            if not cdn:
 | 
					            if not cdn:
 | 
				
			||||||
                raise
 | 
					                raise
 | 
				
			||||||
| 
						 | 
					@ -248,7 +250,7 @@ class TelegramBareClient:
 | 
				
			||||||
                rsa.add_key(pk.public_key)
 | 
					                rsa.add_key(pk.public_key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.dc_options = self(GetConfigRequest()).dc_options
 | 
					            self.dc_options = self(GetConfigRequest()).dc_options
 | 
				
			||||||
            return self._get_dc(dc_id, cdn=cdn)
 | 
					            return self._get_dc(dc_id, ipv6=ipv6, cdn=cdn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _get_exported_client(self, dc_id,
 | 
					    def _get_exported_client(self, dc_id,
 | 
				
			||||||
                             init_connection=False,
 | 
					                             init_connection=False,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user