@@ -106,7 +106,7 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
106
106
sock2 .close ()
107
107
logging .error ('Host %s Not Found' , remoteAddr )
108
108
return 1
109
- sock2 .settimeout (1 )
109
+ sock2 .settimeout (TIMEOUT )
110
110
try :
111
111
data = sock2 .recv (37 ).decode ()
112
112
break ;
@@ -162,7 +162,6 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
162
162
logging .error ('No response from device' )
163
163
sock .close ()
164
164
return 1
165
-
166
165
try :
167
166
f = open (filename , "rb" )
168
167
if (PROGRESS ):
@@ -191,18 +190,26 @@ def serve(remoteAddr, localAddr, remotePort, localPort, password, filename, comm
191
190
sys .stderr .write ('\n ' )
192
191
logging .info ('Waiting for result...' )
193
192
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 :
206
213
logging .error ('No Result!' )
207
214
connection .close ()
208
215
f .close ()
@@ -292,6 +299,12 @@ def parser(unparsed_args):
292
299
action = "store_true" ,
293
300
default = False
294
301
)
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
+ )
295
308
parser .add_option_group (group )
296
309
297
310
(options , args ) = parser .parse_args (unparsed_args )
@@ -312,6 +325,10 @@ def main(args):
312
325
# check options
313
326
global PROGRESS
314
327
PROGRESS = options .progress
328
+
329
+ global TIMEOUT
330
+ TIMEOUT = options .timeout
331
+
315
332
if (not options .esp_ip or not options .image ):
316
333
logging .critical ("Not enough arguments." )
317
334
return 1
0 commit comments