socket: retry on EAGAIN

This commit is contained in:
ThomasV 2013-09-02 21:16:57 +02:00
parent 1650eefdd3
commit 803b292d9d

View file

@ -17,7 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import random, socket, ast, re, ssl import random, socket, ast, re, ssl, errno
import threading, traceback, sys, time, json, Queue import threading, traceback, sys, time, json, Queue
from version import ELECTRUM_VERSION, PROTOCOL_VERSION from version import ELECTRUM_VERSION, PROTOCOL_VERSION
@ -404,7 +404,13 @@ class Interface(threading.Thread):
try: try:
sent = self.s.send( out ) sent = self.s.send( out )
out = out[sent:] out = out[sent:]
except: except socket.error,e:
if e[0] in (errno.EWOULDBLOCK,errno.EAGAIN):
print_error( "EAGAIN: retrying")
time.sleep(0.1)
continue
else:
traceback.print_exc(file=sys.stdout)
# this happens when we get disconnected # this happens when we get disconnected
print_error( "Not connected, cannot send" ) print_error( "Not connected, cannot send" )
return None return None