Den tis 22 juli 2025 kl 12:51 skrev Branko Čibej <br...@apache.org>:

> On 22. 7. 25 11:08, Graham Leggett wrote:
> > On 22 Jul 2025, at 08:23, Daniel Sahlberg<daniel.l.sahlb...@gmail.com>
> wrote:
> >
> >> I like the idea of having a sub_status. It might not make much sense to
> a
> >> random user, but for debugging purposes it might be useful. Of course it
> >> would be nice to match any subsystem error to proper SERF errors, but
> maybe
> >> it doesn't make sense to replicate EVERY error code that could happen.
> >> Maybe it is enough to know there was an error in loading an SSL
> certificate
> >> and we can then look up the sub_status in OpenSSL's error code. (We do
> this
> >> at $dayjob, our system vendor is returning an error code for "database
> >> error" and the subcode can then be referenced in the database vendor's
> >> error code listing).
> > In APR-util we return the underlying code, and the underlying string
> that matches that code, generated by the underlying library.
> >
> > The cost of obscuring that underlying error string is immense. Instead
> of instantly knowing the reason for the failure, in my case I contacted a
> vendor, who then gave a long list of possible reasons for the problem (but
> not the actual reason), which was impossible to diagnose without a
> debugger. We need to have the most specific error easily accessible to the
> end user, so the vendor gives exactly one answer.
> >
> > https://github.com/apache/apr/blob/trunk/include/apu_errno.h#L418
> >
> >> I tried to follow the code and I can't figure out if there is a place
> where
> >> we can store the callback function pointer, except in the
> >> serf_ssl_context_t, just like it is done right now.
> > This was the problem I had, there was nowhere else to put the callback.
> >
> > In httpd there is a clear hierarchy, if you have a request_rec in your
> hand, you can access the conn_rec above, the server_rec, and so on. There
> does not appear to be the same in serf.
>
>
> Serf has a clear hierarchy, too: context -> connection -> request/response.
>
>
> > serf_ssl_context_t represents a single SSL connection, but that
> structure contains no parent reference to the connection itself.
> >
> > I'm assuming this is reasonably straightforward to fix?
>
> We should add a link back to the parent serf_connection_t (which already
> links back to the serf_context_t). The error struct should have pointers
> to all three, context, connection and request (when available).
>
>
> The callback should be registered on the context, as that's the unit of
> thread isolation in Serf -- you must not use the same context
> simultaneously from different threads, so we know that any callbacks are
> triggered synchronously with serf_context_run() or similar.
>
>
> The only problem is that error info may live longer than those objects,
> so users MUST NOT stash those pointers "for later". We could solve that
> by careful use of pool cleanups, but I'd prefer to make the
> documentation extremely clear about those limitations.
>
>
> -- Brane
>

I can't quite figure out how the object hierachy is created. It seems the
serf_ssl_context_t is created quite "by itself".

@Branko Čibej <br...@apache.org> Can you give me some hints where to start
to add this backlink?

Cheers,
Daniel

Reply via email to