Chromium Code Reviews| Index: net/base/upload_file_element_reader.cc |
| diff --git a/net/base/upload_file_element_reader.cc b/net/base/upload_file_element_reader.cc |
| index d1f2a12ac8cd13c6d5037032f13cdd98baf2ea03..1c7cd44f71b70dcff032358b8ccf2e28976dd001 100644 |
| --- a/net/base/upload_file_element_reader.cc |
| +++ b/net/base/upload_file_element_reader.cc |
| @@ -28,27 +28,33 @@ int InitInternal(const base::FilePath& path, |
| const base::Time& expected_modification_time, |
| scoped_ptr<FileStream, FileStreamDeleter>* out_file_stream, |
| uint64* out_content_length) { |
| + out_file_stream->reset(); |
| + *out_content_length = 0; |
| + |
| scoped_ptr<FileStream> file_stream(new FileStream(NULL)); |
| int64 rv = file_stream->OpenSync( |
| path, base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ); |
| if (rv != OK) { |
| - // If the file can't be opened, we'll just upload an empty file. |
| + // If the file can't be opened, the upload should fail. |
| DLOG(WARNING) << "Failed to open \"" << path.value() |
| << "\" for reading: " << rv; |
| - file_stream.reset(); |
| + return rv; |
| } else if (range_offset) { |
| rv = file_stream->SeekSync(FROM_BEGIN, range_offset); |
| if (rv < 0) { |
| DLOG(WARNING) << "Failed to seek \"" << path.value() |
| << "\" to offset: " << range_offset << " (" << rv << ")"; |
| - file_stream.reset(); |
| + return rv; |
| } |
| } |
| int64 length = 0; |
| - if (file_stream.get() && |
| - file_util::GetFileSize(path, &length) && |
| - range_offset < static_cast<uint64>(length)) { |
| + if (!file_util::GetFileSize(path, &length)) { |
| + DLOG(WARNING) << "Failed to get file size of \"" << path.value() << "\""; |
| + return ERR_FILE_NOT_FOUND; |
| + } |
| + |
| + if (range_offset < static_cast<uint64>(length)) { |
| // Compensate for the offset. |
| length = std::min(length - range_offset, range_length); |
| } |
| @@ -61,8 +67,12 @@ int InitInternal(const base::FilePath& path, |
| // time_t to compare. This check is used for sliced files. |
| if (!expected_modification_time.is_null()) { |
| base::PlatformFileInfo info; |
| - if (file_util::GetFileInfo(path, &info) && |
| - expected_modification_time.ToTimeT() != info.last_modified.ToTimeT()) { |
| + if (file_util::GetFileInfo(path, &info)) { |
| + DLOG(WARNING) << "Failed to get file info of \"" << path.value() << "\""; |
| + return ERR_FILE_NOT_FOUND; |
|
mmenke
2013/10/29 15:29:31
I suggest not setting out_content_length or out_fi
tzik
2013/11/07 04:42:55
Done.
|
| + } |
| + |
| + if (expected_modification_time.ToTimeT() != info.last_modified.ToTimeT()) { |
| return ERR_UPLOAD_FILE_CHANGED; |
| } |
| } |