View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001627||Anope Stable (2.0.x series)||General||public||2014-12-06 14:11||2014-12-11 21:40|
|Summary||0001627: +x usermode sometimes set on services restart when it should not be set|
|Description||When ns_keep_modes option on an account is set, then services give me +x when I restart them, although it does not happen on identify.|
|Steps To Reproduce||1. The server should set usermode +x for each connecting user.|
2. The user account should have keepmodes turned on, in my case, after doing it, I set modes +iIwW on myself.
3. I didn't test this in every possible scenario, in my case I had a ssl certificate fingerprint added to the account for login, and my client didn't use any form of SASL authentication.
4. I connect to the IRC server using ssl and my client certificate. when user registration finishes, I get usermode +x set on myself.
5. Because I have an irc operator account with ssl cert fingerprint set and autologin set to true, I am then logged in to the ircop account and subsequently get +o then +hs with appropriate snomask. Also, because my opertype has a vhost "sadmin.webczatnet.pl" set, server changes my displayed host to it and unsets +x mode as it should.
6. I see the server notice about me connecting, I believe that it is the time services see me. Services identify me using my fingerprint, and set +iIrwW, so everything seems correct.
7. I restart services. when they return to the network, I get usermode +x set again on me, that in turn unsets the vhost from my opertype, I don't think it should happen as usermode +x was never set on login.
|Additional Information||I use server inspircd-2.0.18, anope version 2.0 from git.|
|Tags||No tags attached.|
I tried to fix this issue, probably succeeded. this is the link to the pull request:
I have discovered what actually causes the bug.
When I connect and get +x on connection, my host is cloaked.
When I oper up and my vhost changes, inspircd unsets +x on me, but the mode change is not broadcast to other servers, only vhost change is.
So servers see the vhost change and then reflect this by unsetting +x in their view of the user, but anope does not and thinks the user still has +x, that is a small desync.