mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-11-04 01:47:27 +03:00 
			
		
		
		
	Send MsgsAck in the same container along with the requests
This commit is contained in:
		
							parent
							
								
									1d8a02685f
								
							
						
					
					
						commit
						9d394ab18b
					
				| 
						 | 
					@ -64,13 +64,17 @@ class MtProtoSender:
 | 
				
			||||||
        """Sends the specified MTProtoRequest, previously sending any message
 | 
					        """Sends the specified MTProtoRequest, previously sending any message
 | 
				
			||||||
           which needed confirmation."""
 | 
					           which needed confirmation."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # If any message needs confirmation send an AckRequest first
 | 
					 | 
				
			||||||
        self._send_acknowledges()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Finally send our packed request(s)
 | 
					        # Finally send our packed request(s)
 | 
				
			||||||
        messages = [TLMessage(self.session, r) for r in requests]
 | 
					        messages = [TLMessage(self.session, r) for r in requests]
 | 
				
			||||||
        self._pending_receive.update({m.msg_id: m for m in messages})
 | 
					        self._pending_receive.update({m.msg_id: m for m in messages})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Pack everything in the same container if we need to send AckRequests
 | 
				
			||||||
 | 
					        if self._need_confirmation:
 | 
				
			||||||
 | 
					            messages.append(
 | 
				
			||||||
 | 
					                TLMessage(self.session, MsgsAck(self._need_confirmation))
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            self._need_confirmation.clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if len(messages) == 1:
 | 
					        if len(messages) == 1:
 | 
				
			||||||
            message = messages[0]
 | 
					            message = messages[0]
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
| 
						 | 
					@ -78,13 +82,9 @@ class MtProtoSender:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._send_message(message)
 | 
					        self._send_message(message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _send_acknowledges(self):
 | 
					    def _send_acknowledge(self, msg_id):
 | 
				
			||||||
        """Sends a messages acknowledge for all those who _need_confirmation"""
 | 
					        """Sends a message acknowledge for the given msg_id"""
 | 
				
			||||||
        if self._need_confirmation:
 | 
					        self._send_message(TLMessage(self.session, MsgsAck([msg_id])))
 | 
				
			||||||
            self._send_message(
 | 
					 | 
				
			||||||
                TLMessage(self.session, MsgsAck(self._need_confirmation))
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            del self._need_confirmation[:]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def receive(self, update_state):
 | 
					    def receive(self, update_state):
 | 
				
			||||||
        """Receives a single message from the connected endpoint.
 | 
					        """Receives a single message from the connected endpoint.
 | 
				
			||||||
| 
						 | 
					@ -338,8 +338,7 @@ class MtProtoSender:
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Acknowledge that we received the error
 | 
					            # Acknowledge that we received the error
 | 
				
			||||||
            self._need_confirmation.append(request_id)
 | 
					            self._send_acknowledge(request_id)
 | 
				
			||||||
            self._send_acknowledges()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if request:
 | 
					            if request:
 | 
				
			||||||
                request.rpc_error = error
 | 
					                request.rpc_error = error
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user