if a request has been canceled with RGWHTTPClient::cancel(), the client
may have been destroyed. check req_data->registered before reading
from req_data->client->receive_pause_skip
Fixes: http://tracker.ceph.com/issues/35851
Signed-off-by: Casey Bodley <cbodley@redhat.com>
bool pause = false;
- size_t& skip_bytes = req_data->client->receive_pause_skip;
-
- if (skip_bytes >= len) {
- skip_bytes -= len;
- return len;
- }
-
RGWHTTPClient *client;
{
client = req_data->client;
}
+ size_t& skip_bytes = client->receive_pause_skip;
+
+ if (skip_bytes >= len) {
+ skip_bytes -= len;
+ return len;
+ }
+
int ret = client->receive_data((char *)ptr + skip_bytes, len - skip_bytes, &pause);
if (ret < 0) {
dout(0) << "WARNING: client->receive_data() returned ret=" << ret << dendl;