mirror of
https://github.com/ceph/ceph
synced 2025-01-14 06:53:11 +00:00
rgw: add pipe fd to set for select() in do_curl_wait()
when HAVE_CURL_MULTI_WAIT is 0, the pipe fd is never added to the readfds for select(), so FD_ISSET() is always false. this prevents us from ever trying to read from the fd, and the pipe's buffer eventually fills up and deadlocks callers of RGWHTTPManager::signal_thread() when they try to write to the pipe Fixes: http://tracker.ceph.com/issues/16368 Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
parent
b8b339c10a
commit
75897f82ab
@ -465,8 +465,11 @@ static int do_curl_wait(CephContext *cct, CURLM *handle, int signal_fd)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (signal_fd >= maxfd) {
|
||||
maxfd = signal_fd + 1;
|
||||
if (signal_fd > 0) {
|
||||
FD_SET(signal_fd, &fdread);
|
||||
if (signal_fd >= maxfd) {
|
||||
maxfd = signal_fd + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* forcing a strict timeout, as the returned fdsets might not reference all fds we wait on */
|
||||
|
Loading…
Reference in New Issue
Block a user