in server:
For comparing ACLs I use 'CompareAcls' class. It has constructor with XAttributes as parameter and in server part XAttributes are constructed from SFile, exactly as you wrote.

The only place where 'Acls' class steps in is File::modifyAcls() and this code should be involved in undochange command only.

Anyway, I'll double check I didn't mess up the pull request...I had multiple versions for a fix in my local repo...