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':