mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-19 15:36:02 +00:00
Fix deadlock issue when joining large guilds.
This commit is contained in:
parent
cc23a54d58
commit
8d7dd79673
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user