summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorAndrew Donald Kennedy <grkvlt@apache.org>2010-07-31 23:46:15 +0000
committerAndrew Donald Kennedy <grkvlt@apache.org>2010-07-31 23:46:15 +0000
commit43cb63667d6ddf2bc4a39f4ad1e1910ed5d0abc8 (patch)
tree9cb6439a884a202559e307b321238e4a1ecdeec2 /java
parentf4e6a71348753a99fbe99c4a8aabf29a55422ed5 (diff)
downloadqpid-python-43cb63667d6ddf2bc4a39f4ad1e1910ed5d0abc8.tar.gz
QPID-2668: Improve PlainPasswordPrincipalDatabase lock management
Applied patch from Sorin Suciu <ssuciu@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@981103 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java41
1 files changed, 15 insertions, 26 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
index 8665e579ba..cea4e90c31 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
@@ -179,39 +179,28 @@ public class PlainPasswordFilePrincipalDatabase implements PrincipalDatabase
throw new AccountNotFoundException(principal.getName());
}
+ char[] orig = user.getPassword();
+ _userUpdate.lock();
try
{
- try
- {
- _userUpdate.lock();
- char[] orig = user.getPassword();
- user.setPassword(password);
+ user.setPassword(password);
- try
- {
- savePasswordFile();
- }
- catch (IOException e)
- {
- _logger.error("Unable to save password file, password change for user '" + principal + "' discarded");
- //revert the password change
- user.setPassword(orig);
- return false;
- }
- return true;
- }
- finally
- {
- if (_userUpdate.isHeldByCurrentThread())
- {
- _userUpdate.unlock();
- }
- }
+ savePasswordFile();
+
+ return true;
}
- catch (Exception e)
+ catch (IOException e)
{
+ _logger.error("Unable to save password file due to '"+e.getMessage()
+ +"', password change for user '" + principal + "' discarded");
+ //revert the password change
+ user.setPassword(orig);
return false;
}
+ finally
+ {
+ _userUpdate.unlock();
+ }
}
public boolean createPrincipal(Principal principal, char[] password)