diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-09-12 19:23:48 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-10-03 13:44:13 +0200 |
commit | 052684f1ab1c8a4fcfb2c9057c33273acbaf660e (patch) | |
tree | 9cbb6c5004e16f90188b5495204b2ce0773453ab /src/providers/fail_over.h | |
parent | b196e1e91ec04ca5af93bfd2dcfc5225f4858a54 (diff) | |
download | sssd-052684f1ab1c8a4fcfb2c9057c33273acbaf660e.tar.gz sssd-052684f1ab1c8a4fcfb2c9057c33273acbaf660e.tar.xz sssd-052684f1ab1c8a4fcfb2c9057c33273acbaf660e.zip |
FO: Check server validity before setting statussssd-1_8_5
The list of resolved servers is allocated on the back end context and
kept in the fo_service structure. However, a single request often
resolves a server and keeps a pointer until the end of a request and
only then gives feedback about the server based on the request result.
This presents a big race condition in case the SRV resolution is used.
When there are requests coming in in parallel, it is possible that an
incoming request will invalidate a server until another request that
holds a pointer to the original server is able to give a feedback.
This patch simply checks if a server is in the list of servers
maintained by a service before reading its status.
https://fedorahosted.org/sssd/ticket/1364
Diffstat (limited to 'src/providers/fail_over.h')
-rw-r--r-- | src/providers/fail_over.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/providers/fail_over.h b/src/providers/fail_over.h index 8fbbe251b..2b0bb92d9 100644 --- a/src/providers/fail_over.h +++ b/src/providers/fail_over.h @@ -186,6 +186,6 @@ int fo_is_srv_lookup(struct fo_server *s); void fo_reset_services(struct fo_ctx *fo_ctx); -struct fo_service *fo_get_server_service(struct fo_server *server); +bool fo_svc_has_server(struct fo_service *service, struct fo_server *server); #endif /* !__FAIL_OVER_H__ */ |