Check if read is completed.
@@ -246,7 +246,7 @@ | ||
246 | 246 | data = r.read(l) |
247 | 247 | elif r.status == 404: pass |
248 | 248 | else: raise Exception("status error %d" % r.status) |
249 | - except socket.error: | |
249 | + except socket.error, httplib.IncompleteRead: | |
250 | 250 | pass |
251 | 251 | else: |
252 | 252 | if data: |
@@ -279,8 +279,11 @@ | ||
279 | 279 | r = self.request("POST","/dat", data,headers) |
280 | 280 | else: |
281 | 281 | r = self.request("GET","/dat",None,headers) |
282 | - stat = r.status | |
283 | - data = r.read() | |
282 | + try: | |
283 | + stat = r.status | |
284 | + data = r.read() | |
285 | + except socket.error, httplib.IncompleteRead: | |
286 | + return None | |
284 | 287 | if stat == 200: |
285 | 288 | path = None |
286 | 289 | path = r.getheader("X-O2-Original-DAT-URL") |
@@ -303,7 +306,10 @@ | ||
303 | 306 | l = r.getheader('Content-Length') |
304 | 307 | if l: l = int(l) |
305 | 308 | else: return False |
306 | - return r.read(l) | |
309 | + try: | |
310 | + return r.read(l) | |
311 | + except socket.error, httplib.IncompleteRead: | |
312 | + return False | |
307 | 313 | else: raise Exception("ping status %d" % r.status) |
308 | 314 | return False |
309 | 315 | def collection(self, glob): |
@@ -313,7 +319,10 @@ | ||
313 | 319 | r = self.request("POST","/collection",board_xml,headers) |
314 | 320 | result = [] |
315 | 321 | if r.status == 200: |
316 | - data = r.read() | |
322 | + try: | |
323 | + data = r.read() | |
324 | + except socket.error, httplib.IncompleteRead: | |
325 | + return result | |
317 | 326 | # 本家o2on の bug 対策 |
318 | 327 | if data.rfind("</boards>") == -1: |
319 | 328 | index = data.rfind("<boards>") |
@@ -330,9 +339,13 @@ | ||
330 | 339 | def findvalue(self, kid): |
331 | 340 | headers = {"X-O2-Target-Key":hexlify(kid)} |
332 | 341 | r = self.request("GET","/findvalue",None,headers) |
342 | + try: | |
343 | + data = r.read() | |
344 | + except socket.error, httplib.IncompleteRead: | |
345 | + return [] | |
333 | 346 | if r.status == 200: |
334 | 347 | res = [] |
335 | - dom = xml.dom.minidom.parseString(r.read()) | |
348 | + dom = xml.dom.minidom.parseString(data) | |
336 | 349 | nodes = dom.getElementsByTagName("nodes") |
337 | 350 | keys = dom.getElementsByTagName("keys") |
338 | 351 | if len(nodes): |