| 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..4f3522abdcc344de2549ce150f0b54b4ea55e79d 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);
|
| }
|
|
|