Jeff Kaufman wrote: > when I try to fetch anything over https it spins in ssl_buckets.c
I have a bit more detail now: I was wrong before, and the loop is not entirely within serf. I was misunderstanding what the debugger was telling me; sorry! The relevant code is essentially: handle_response() { ... status = EAGAIN; while (APR_STATUS_IS_EAGAIN(status)) { // The response-handling code must be robust to packets coming in all at // once, one byte at a time, or anything in between. EAGAIN indicates // that more data is available in the socket so another read should // be issued before returning. status = serf_bucket_response_status(...); } ... } Looking at serf_get.c I see that if serf_bucket_response_status() returns any non-zero status at all then serf_get:handle_response passes that status up to the caller. So I think our comment is wrong, and we should be letting the caller handle this case. I've changed our code to do the same thing as serf_get.c and https fetching now works. I don't know why this worked in 1.1.0 and not in 1.3.8, but I now have our serf integration working again. Thanks!