self-ping: do not /cycle on timeout, log only
This commit is contained in:
parent
8a23706b72
commit
b0a19bb019
1 changed files with 25 additions and 2 deletions
|
@ -53,6 +53,7 @@ class MucTab(ChatTab):
|
|||
plugin_commands = {} # type: Dict[str, Command]
|
||||
plugin_keys = {} # type: Dict[str, Callable]
|
||||
additional_information = {} # type: Dict[str, Callable[[str], str]]
|
||||
lagged = False
|
||||
|
||||
def __init__(self, core, jid, nick, password=None):
|
||||
ChatTab.__init__(self, core, jid)
|
||||
|
@ -411,6 +412,8 @@ class MucTab(ChatTab):
|
|||
if self.joined:
|
||||
if self.input.text:
|
||||
self.state = 'nonempty'
|
||||
elif self.lagged:
|
||||
self.state = 'disconnected'
|
||||
else:
|
||||
self.state = 'normal'
|
||||
else:
|
||||
|
@ -436,6 +439,7 @@ class MucTab(ChatTab):
|
|||
"""
|
||||
Handle MUC presence
|
||||
"""
|
||||
self.reset_lag()
|
||||
status_codes = set()
|
||||
for status_code in presence.xml.findall(STATUS_XPATH):
|
||||
status_codes.add(status_code.attrib['code'])
|
||||
|
@ -1143,6 +1147,7 @@ class MucTab(ChatTab):
|
|||
self.command_cycle(iq["error"]["text"] or "not in this room")
|
||||
self.core.refresh_window()
|
||||
else: # Re-send a self-ping in a few seconds
|
||||
self.reset_lag()
|
||||
self.enable_self_ping_event()
|
||||
|
||||
def search_for_color(self, nick):
|
||||
|
@ -1162,8 +1167,26 @@ class MucTab(ChatTab):
|
|||
return color
|
||||
|
||||
def on_self_ping_failed(self, iq):
|
||||
self.command_cycle("the MUC server is not responding")
|
||||
self.core.refresh_window()
|
||||
if not self.lagged:
|
||||
self.lagged = True
|
||||
info_text = dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
|
||||
self._text_buffer.add_message(
|
||||
"\x19%s}MUC service not responding." % info_text)
|
||||
self._state = 'disconnected'
|
||||
self.core.refresh_window()
|
||||
self.enable_self_ping_event()
|
||||
|
||||
def reset_lag(self):
|
||||
if self.lagged:
|
||||
self.lagged = False
|
||||
info_text = dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
|
||||
self._text_buffer.add_message(
|
||||
"\x19%s}MUC service is responding again." % info_text)
|
||||
if self != self.core.tabs.current_tab:
|
||||
self._state = 'joined'
|
||||
else:
|
||||
self._state = 'normal'
|
||||
self.core.refresh_window()
|
||||
|
||||
########################## UI ONLY #####################################
|
||||
|
||||
|
|
Loading…
Reference in a new issue