I’m using QuickFIX and C# to create a FIX acceptor (server). I want the client (the FIX initiator) to logon using a username and password. However, I’m not sure how I can do that in QuickFIX.
By debugging into the QuickFIX source code I have discovered the following sequence of events:
- QuickFIX will call
Session::verifyto verify the logon. Session::verifywill perform various checks of things like comp ID’s and sequence numbers and at some point determine that the logon received is valid.Session::verifywill then call theApplication::fromAdmincallback which I assume is the natural place to customize things like logon.- However, at this point the logon has already been determined to be OK by QuickFIX and a corresponding logon message will be returned by the acceptor when the callback returns.
How do I customize the FIX logon process in an acceptor? Is modifying the QuickFIX code my only option?
If you are using FIX 4.3 or later, the Logon message can have a Password tag. If you are using a previous version, make it a custom tag and add it to the dictionaries.
In the
fromAdminhandler, check that the password is correct (from a lookup table or elsewhere). If it is not, throw aRejectLogonexception. If this exception isn’t thrown, QuickFix will assume everything is a-ok and log the user on.Example (needs more sanity checks):