Here's a simple reproducer: ``` FileSystem fs1( std::string( "root:[log in to unmask]" ) ); DirectoryList *rsp1 = 0; XRootDStatus st1 = fs1.DirList( "/tmp", DirListFlags::None, rsp1 ); std::cout << st1.ToString() << std::endl; FileSystem fs2( std::string( "root:[log in to unmask]" ) ); DirectoryList *rsp2 = 0; XRootDStatus st2 = fs2.DirList( "/tmp", DirListFlags::None, rsp2 ); std::cout << st2.ToString() << std::endl; ``` In this scenario, a new connection is created for `user1` and is authenticated with `/tmp/user1proxy` credential. Afterwards, a new connection is being created for `user2` and is being authenticated with the cached credential (again `/tmp/user1proxy`). This is easy to spot if one uses expired proxy as the second credential, in this case the second dirls should fail, but it never does. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/issues/976 ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1