}
}
-int RGWStreamIOBase::read(char *buf, int max, int *actual, bool hash /* = false */)
+int RGWStreamIOBase::read(char *buf, int max, int *actual)
{
int ret = read_data(buf, max);
if (ret < 0) {
return ret;
}
-int RGWStreamIO::read(char *buf, int max, int *actual, bool hash /* = false */)
+int RGWStreamIO::read(char *buf, int max, int *actual)
{
- int ret = RGWStreamIOBase::read(buf, max, actual, hash);
- if (ret < 0) {
- return ret;
+ const auto ret = RGWStreamIOBase::read(buf, max, actual);
+ if (ret >= 0) {
+ bytes_received += *actual;
}
- bytes_received += *actual;
+ return ret;
+}
+
+int RGWStreamIO::read(char *buf, int max, int *actual, bool hash /* = false */)
+{
+ const auto ret = read(buf, max, actual);
- if (hash) {
+ if (ret >= 0 && hash) {
if (!sha256_hash) {
sha256_hash = calc_hash_sha256_open_stream();
}
virtual int print(const char *format, ...);
virtual int write(const char *buf, int len);
virtual void flush() = 0;
- virtual int read(char *buf, int max, int *actual, bool hash = false);
+ virtual int read(char *buf, int max, int *actual);
virtual int send_status(int status, const char *status_name) = 0;
virtual int send_100_continue() = 0;
}
int write(const char *buf, int len) override;
- int read(char *buf, int max, int *actual, bool hash = false) override;
+
+ int read(char *buf, int max, int *actual) override;
+ virtual int read(char *buf, int max, int *actual, bool hash);
std::string grab_aws4_sha256_hash();