@@ -106,7 +106,7 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
106106 sock2 .close ()
107107 logging .error ('Host %s Not Found' , remoteAddr )
108108 return 1
109- sock2 .settimeout (1 )
109+ sock2 .settimeout (TIMEOUT )
110110 try :
111111 data = sock2 .recv (37 ).decode ()
112112 break ;
@@ -162,7 +162,6 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
162162 logging .error ('No response from device' )
163163 sock .close ()
164164 return 1
165-
166165 try :
167166 f = open (filename , "rb" )
168167 if (PROGRESS ):
@@ -191,18 +190,26 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
191190 sys .stderr .write ('\n ' )
192191 logging .info ('Waiting for result...' )
193192 try :
194- connection .settimeout (60 )
195- data = connection .recv (32 ).decode ()
196- logging .info ('Result: %s' ,data )
197- connection .close ()
198- f .close ()
199- sock .close ()
200- if (data != "OK" ):
201- sys .stderr .write ('\n ' )
202- logging .error ('%s' , data )
203- return 1 ;
204- return 0
205- except :
193+ count = 0
194+ while True :
195+ count = count + 1
196+ connection .settimeout (60 )
197+ data = connection .recv (32 ).decode ()
198+ logging .info ('Result: %s' ,data )
199+
200+ if data == "OK" :
201+ logging .info ('Success' )
202+ connection .close ()
203+ f .close ()
204+ sock .close ()
205+ return 0 ;
206+ if count == 5 :
207+ logging .error ('Error response from device' )
208+ connection .close ()
209+ f .close ()
210+ sock .close ()
211+ return 1
212+ except e :
206213 logging .error ('No Result!' )
207214 connection .close ()
208215 f .close ()
@@ -292,6 +299,12 @@ def parser(unparsed_args):
292299 action = "store_true" ,
293300 default = False
294301 )
302+ group .add_option ("-t" , "--timeout" ,
303+ dest = "timeout" ,
304+ type = "int" ,
305+ help = "Timeout to wait for the ESP8266 to accept invitation" ,
306+ default = 10
307+ )
295308 parser .add_option_group (group )
296309
297310 (options , args ) = parser .parse_args (unparsed_args )
@@ -312,6 +325,10 @@ def main(args):
312325 # check options
313326 global PROGRESS
314327 PROGRESS = options .progress
328+
329+ global TIMEOUT
330+ TIMEOUT = options .timeout
331+
315332 if (not options .esp_ip or not options .image ):
316333 logging .critical ("Not enough arguments." )
317334 return 1
0 commit comments