mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Clear kernel keyring in client installer, save dbdir on new connections
This patch addresses two issues: 1. If a client is previously enrolled in an IPA server and the server gets re-installed then the client machine may still have a keyring entry for the old server. This can cause a redirect from the session URI to the negotiate one. As a rule, always clear the keyring when enrolling a new client. 2. We save the NSS dbdir in the connection so that when creating a new session we can determine if we need to re-initialize NSS or not. Most of the time we do not. The dbdir was not always being preserved between connections which could cause an NSS_Shutdown() to happen which would fail because of existing usage. This preserves the dbdir information when a new connection is created as part of the session mechanism. https://fedorahosted.org/freeipa/ticket/3108
This commit is contained in:
committed by
Martin Kosek
parent
9c0426c3ed
commit
5bf1cee702
@@ -546,8 +546,23 @@ class xmlclient(Connectible):
|
||||
# This shouldn't happen if we have a session but
|
||||
# it isn't fatal.
|
||||
pass
|
||||
|
||||
# Create a new serverproxy with the non-session URI. If there
|
||||
# is an existing connection we need to save the NSS dbdir so
|
||||
# we can skip an unnecessary NSS_Initialize() and avoid
|
||||
# NSS_Shutdown issues.
|
||||
serverproxy = self.create_connection(os.environ.get('KRB5CCNAME'), self.env.verbose, self.env.fallback, self.env.delegate)
|
||||
|
||||
dbdir = None
|
||||
current_conn = getattr(context, self.id, None)
|
||||
if current_conn is not None:
|
||||
dbdir = getattr(current_conn.conn._ServerProxy__transport, 'dbdir', None)
|
||||
if dbdir is not None:
|
||||
self.debug('Using dbdir %s' % dbdir)
|
||||
setattr(context, self.id, Connection(serverproxy, self.disconnect))
|
||||
if dbdir is not None:
|
||||
current_conn = getattr(context, self.id, None)
|
||||
current_conn.conn._ServerProxy__transport.dbdir = dbdir
|
||||
return self.forward(name, *args, **kw)
|
||||
raise NetworkError(uri=server, error=e.errmsg)
|
||||
except socket.error, e:
|
||||
|
||||
Reference in New Issue
Block a user