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!

Reply via email to