Skip to content

Commit b2d8a90

Browse files
committed
Merge pull request #187 from longbai/unicode
dns hijack
2 parents 47a2dd0 + f4c774e commit b2d8a90

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

Diff for: CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
### 修正
55
* 2.x unicode 问题 by @hunter007
66
* 上传重试判断
7+
* 上传时 dns劫持处理
78

89
### 增加
910
* fsizeMin 上传策略

Diff for: qiniu/http.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020

2121
def __return_wrapper(resp):
22-
if resp.status_code != 200:
22+
if resp.status_code != 200 or resp.headers.get('X-Reqid') is None:
2323
return None, ResponseInfo(resp)
2424
ret = resp.json() if resp.text != '' else {}
2525
return ret, ResponseInfo(resp)
@@ -111,20 +111,22 @@ def __init__(self, response, exception=None):
111111
self.error = 'unknown'
112112
else:
113113
self.error = ret['error']
114+
if self.req_id is None and self.status_code == 200:
115+
self.error = 'server is not qiniu'
114116

115117
def ok(self):
116-
return self.status_code == 200
118+
return self.status_code == 200 and self.req_id is not None
117119

118120
def need_retry(self):
119-
if self.__response is None:
121+
if self.__response is None or self.req_id is None:
120122
return True
121123
code = self.status_code
122124
if (code // 100 == 5 and code != 579) or code == 996:
123125
return True
124126
return False
125127

126128
def connect_failed(self):
127-
return self.__response is None
129+
return self.__response is None or self.req_id is None
128130

129131
def __str__(self):
130132
return ', '.join(['%s:%s' % item for item in self.__dict__.items()])

Diff for: qiniu/services/storage/uploader.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
import os
4+
import time
45

56
from qiniu import config
67
from qiniu.utils import urlsafe_base64_encode, crc32, file_crc32, _file_iter
@@ -128,7 +129,10 @@ def __init__(self, up_token, key, input_stream, data_size, params, mime_type,
128129
self.mime_type = mime_type
129130
self.progress_handler = progress_handler
130131
self.upload_progress_recorder = upload_progress_recorder or UploadProgressRecorder()
131-
self.modify_time = modify_time
132+
self.modify_time = modify_time or time.time()
133+
134+
print(self.modify_time)
135+
print(modify_time)
132136

133137
def record_upload_progress(self, offset):
134138
record_data = {
@@ -138,15 +142,20 @@ def record_upload_progress(self, offset):
138142
}
139143
if self.modify_time:
140144
record_data['modify_time'] = self.modify_time
145+
146+
print(record_data)
141147
self.upload_progress_recorder.set_upload_record(self.key, record_data)
142148

143149
def recovery_from_record(self):
144150
record = self.upload_progress_recorder.get_upload_record(self.key)
145151
if not record:
146152
return 0
147153

148-
if not record['modify_time'] or record['size'] != self.size or \
149-
record['modify_time'] != self.modify_time:
154+
try:
155+
if not record['modify_time'] or record['size'] != self.size or \
156+
record['modify_time'] != self.modify_time:
157+
return 0
158+
except KeyError:
150159
return 0
151160

152161
self.blockStatus = [{'ctx': ctx} for ctx in record['contexts']]

Diff for: test_qiniu.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ class ResumableUploaderTestCase(unittest.TestCase):
323323
params = {'x:a': 'a'}
324324
q = Auth(access_key, secret_key)
325325

326-
def test_putfile(self):
326+
def test_put_stream(self):
327327
localfile = __file__
328328
key = 'test_file_r'
329329
size = os.stat(localfile).st_size

0 commit comments

Comments
 (0)