diff --git a/src/common/socks5.py b/src/common/socks5.py index d9d591c79fb8d04af67e4d50503e111f1934f5c3..e1c1099ad873136edc6c932df26069c271095954 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -489,7 +489,12 @@ class Socks5: return None fd = None if self.remaining_buff != '': - fd = self.get_fd() + try: + fd = self.get_fd() + except IOError, e: + self.disconnect(False) + self.file_props['error'] = -6 # file system error + return 0 fd.write(self.remaining_buff) lenn = len(self.remaining_buff) current_time = self.idlequeue.current_time() @@ -505,7 +510,12 @@ class Socks5: self.file_props['completed'] = True return 0 else: - fd = self.get_fd() + try: + fd = self.get_fd() + except IOError, e: + self.disconnect(False) + self.file_props['error'] = -6 # file system error + return 0 try: buff = self._recv(MAX_BUFF_LEN) except Exception: diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index 82974ca5b59e2eef22fc19d99376a9294aa92d76..2b3642da7d0ec7cda1d7d7bcad4078a7baf11545 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -228,8 +228,7 @@ _('Connection with peer cannot be established.')) sectext += '\n\t' + _('Recipient: %s') % jid if error_msg: sectext += '\n\t' + _('Error message: %s') % error_msg - dialogs.ErrorDialog(_('File transfer stopped by the contact at the other ' - 'end'), sectext) + dialogs.ErrorDialog(_('File transfer stopped'), sectext) self.tree.get_selection().unselect_all() def show_file_send_request(self, account, contact): diff --git a/src/gajim.py b/src/gajim.py index 1f114563dc94476597f53d31eadff4545206edc8..5bdea09a9d25a7add0545141edf4632145eb993c 100644 --- a/src/gajim.py +++ b/src/gajim.py @@ -1768,7 +1768,10 @@ class Interface: if gajim.config.get('notify_on_file_complete'): ft.show_completed(jid, file_props) elif file_props['error'] == -1: - ft.show_stopped(jid, file_props) + ft.show_stopped(jid, file_props, + error_msg=_('Remote contact stopped transfer')) + elif file_props['error'] == -6: + ft.show_stopped(jid, file_props, error_msg=_('Error opening file')) return msg_type = '' @@ -1777,7 +1780,7 @@ class Interface: 'notify_on_file_complete'): msg_type = 'file-completed' event_type = _('File Transfer Completed') - elif file_props['error'] == -1: + elif file_props['error'] in (-1, -6): msg_type = 'file-stopped' event_type = _('File Transfer Stopped') diff --git a/src/roster_window.py b/src/roster_window.py index f2ccdc370750ffd892353552c8d1c51a6ae884a4..65fc33bafd6424ff244cbf8b564d90fe8fea972e 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1838,7 +1838,12 @@ class RosterWindow: gajim.events.remove_events(account, jid, event) return True elif event.type_ in ('file-error', 'file-stopped'): - ft.show_stopped(jid, data) + msg_error = '' + if data['error'] == -1: + msg_err = _('Remote contact stopped transfer') + elif data['error'] == -6: + msg_err = _('Error opening file') + ft.show_stopped(jid, data, error_msg=msg_err) gajim.events.remove_events(account, jid, event) return True elif event.type_ == 'file-completed':