| Index: util/net/http_body.cc | 
| diff --git a/util/net/http_body.cc b/util/net/http_body.cc | 
| index e731c598e4d0257b7627cdd27987a789164f19b6..cdf810e37f5eeda4a264685306473d6d2bbac944 100644 | 
| --- a/util/net/http_body.cc | 
| +++ b/util/net/http_body.cc | 
| @@ -14,17 +14,13 @@ | 
|  | 
| #include "util/net/http_body.h" | 
|  | 
| -#include <fcntl.h> | 
| #include <string.h> | 
| -#include <unistd.h> | 
|  | 
| #include <algorithm> | 
| #include <limits> | 
|  | 
| #include "base/logging.h" | 
| -#include "base/posix/eintr_wrapper.h" | 
| #include "base/stl_util.h" | 
| -#include "util/file/file_io.h" | 
|  | 
| namespace crashpad { | 
|  | 
| @@ -50,37 +46,34 @@ ssize_t StringHTTPBodyStream::GetBytesBuffer(uint8_t* buffer, size_t max_len) { | 
| } | 
|  | 
| FileHTTPBodyStream::FileHTTPBodyStream(const base::FilePath& path) | 
| -    : HTTPBodyStream(), path_(path), fd_(kUnopenedFile) { | 
| +    : HTTPBodyStream(), path_(path), file_(), file_state_(kUnopenedFile) { | 
| } | 
|  | 
| FileHTTPBodyStream::~FileHTTPBodyStream() { | 
| -  if (fd_ >= 0) { | 
| -    LoggingCloseFile(fd_); | 
| -  } | 
| } | 
|  | 
| ssize_t FileHTTPBodyStream::GetBytesBuffer(uint8_t* buffer, size_t max_len) { | 
| -  switch (fd_) { | 
| +  switch (file_state_) { | 
| case kUnopenedFile: | 
| -      fd_ = HANDLE_EINTR(open(path_.value().c_str(), O_RDONLY)); | 
| -      if (fd_ < 0) { | 
| -        fd_ = kFileOpenError; | 
| -        PLOG(ERROR) << "Cannot open " << path_.value(); | 
| +      file_.reset(LoggingOpenFileForRead(path_)); | 
| +      if (!file_.is_valid()) { | 
| +        file_state_ = kFileOpenError; | 
| return -1; | 
| } | 
| +      file_state_ = kReading; | 
| break; | 
| case kFileOpenError: | 
| return -1; | 
| case kClosedAtEOF: | 
| return 0; | 
| -    default: | 
| +    case kReading: | 
| break; | 
| } | 
|  | 
| -  ssize_t rv = ReadFile(fd_, buffer, max_len); | 
| +  ssize_t rv = ReadFile(file_.get(), buffer, max_len); | 
| if (rv == 0) { | 
| -    LoggingCloseFile(fd_); | 
| -    fd_ = kClosedAtEOF; | 
| +    file_.reset(); | 
| +    file_state_ = kClosedAtEOF; | 
| } else if (rv < 0) { | 
| PLOG(ERROR) << "read"; | 
| } | 
|  |