mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-10-31 05:23:03 +00:00 
			
		
		
		
	Fix deadlock issue when joining large guilds.
This commit is contained in:
		| @@ -378,8 +378,6 @@ class Client: | ||||
|             log.info('Unhandled event {}'.format(event)) | ||||
|         else: | ||||
|             result = func(data) | ||||
|             if asyncio.iscoroutine(result): | ||||
|                yield from result | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def _make_websocket(self, initial=True): | ||||
|   | ||||
| @@ -338,6 +338,17 @@ class ConnectionState: | ||||
|         return self._add_server_from_data(data) | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def _chunk_and_dispatch(self, server, unavailable): | ||||
|         yield from self.chunker(server) | ||||
|         chunks = list(self.chunks_needed(server)) | ||||
|         if chunks: | ||||
|             yield from asyncio.wait(chunks) | ||||
|  | ||||
|         if unavailable == False: | ||||
|             self.dispatch('server_available', server) | ||||
|         else: | ||||
|             self.dispatch('server_join', server) | ||||
|  | ||||
|     def parse_guild_create(self, data): | ||||
|         unavailable = data.get('unavailable') | ||||
|         if unavailable == True: | ||||
| @@ -367,11 +378,8 @@ class ConnectionState: | ||||
|  | ||||
|             # since we're not waiting for 'useful' READY we'll just | ||||
|             # do the chunk request here | ||||
|             yield from self.chunker(server) | ||||
|             chunks = list(self.chunks_needed(server)) | ||||
|             if chunks: | ||||
|                 yield from asyncio.wait(chunks) | ||||
|  | ||||
|             utils.create_task(self._chunk_and_dispatch(server, unavailable), loop=self.loop) | ||||
|             return | ||||
|  | ||||
|         # Dispatch available if newly available | ||||
|         if unavailable == False: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user