Pramod,
Very helpful. It looks like SunGuard is not generating this message quite
correctly. If you look at the logon they are sending, it contains a
repeating group as such:
384=9235=A385=R35=A385=S35=0385=R35=0385=S35=1385=R...
Field 384 is the begining of the repeating group saying that there are 92
repeating instances. The message than goes on to list the message types
the application supports and their directions. The problem is that they
are using field 35 (MsgType) to convey the supported message types wheras
the FIX spec requires that field 372 (RefMsgType) be used. QuickFIX is
therefore rejecting the message as invalid. You might want to write to
sunguard and let them know that in future versions they may want to start
using field 372 in accordance with the spec (or you can probably just
forward this to them)
In the meantime, QuickFIX can support receiving these messages. All you
need to do is modify the XML data dictionary that QuickFIX uses for
SunGuard connections to reflect their proprietary variation of this
message. In FIX42.xml you can simply change the following section:
<group number="384" name="NoMsgTypes">
<field number="372" name="RefMsgType" required="N" />
<field number="385" name="MsgDirection" required="N" />
</group>
to look like this:
<group number="384" name="NoMsgTypes">
<field number="35" name="MsgType" required="N" />
<field number="385" name="MsgDirection" required="N" />
</group>
I hope this resolves your QuickFIX<->SunGuard connectivity issues while
using long logon messages. Give my best to the folks at SunGuard.
--oren
|---------+----------------------------------->
| | "Pramod.S.Warrier" |
| | @THOUGHTWORKS_COM |
| | Sent by: |
| | ***@THOUGHTWORKS_COM |
| | |
| | |
| | 08/12/2002 09:14 AM |
| | |
|---------+----------------------------------->
------------------------------------------------------------------------------------------------------------------------------|
| |
| To: ***@thoughtworks.COM |
| cc: ***@ThoughtWorks.COM, quickfix-***@lists.sourceforge.net, |
| quickfix-developers-***@lists.sourceforge.net |
| Subject: Re: [Quickfix-developers] Problem inSendingandRecievingmessagesusingQuickFIX |
------------------------------------------------------------------------------------------------------------------------------|
Hi,
I have attached the log file that was generated by the SunGard
Acceptor that I am using. In the log file, the logon message sent by
them contains the list of message types that are accepted by the
SunGard Engine.
Thanks and Regards,
Pramod.
Ah ok. There is no reason that I can think of that QuickFIX should have
a
problem with those messages, but adding an explicit test case will tell
us
for sure. Is it possible for you to send us the message that Sunguard is
generating for the long logon? If so we can plug that message straight
into
our test suite and make sure that we are supporting it properly.
--oren
2002-08-12 13:20:22.654 -0- ACCEPTOR_QFTARGET> SUNGARD FIX Engine version
4.5 - SunGard 2002 Copyright (c)
2002-08-12 13:20:22.654 -0- ACCEPTOR_QFTARGET> Expires on 2002-12-31
2002-08-12 13:20:22.724 -0- ACCEPTOR_QFTARGET> # The setup parameters for
this session :
2002-08-12 13:20:22.724 -0- ACCEPTOR_QFTARGET> #
---------------------------------------
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # MODE = STORE_AND_FORWARD
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # SESSION_ID =
ACCEPTOR_QFTARGET
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # SENDER_COMP_ID = ACCEPTOR
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # TARGET_COMP_ID = QFTARGET
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # FIX_VERSION = FIX.4.2
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # LOG_FILE_LEVEL = 3
2002-08-12 13:20:22.734 -0- ACCEPTOR_QFTARGET> # LOG_AUTO_FLUSH = 1
2002-08-12 13:20:22.744 -0- ACCEPTOR_QFTARGET> # PTP_LATENCY = 5
2002-08-12 13:20:22.744 -0- ACCEPTOR_QFTARGET> # PTP_TIME_OUT = 50
2002-08-12 13:20:22.744 -0- ACCEPTOR_QFTARGET> # PTP_CONNECTION = TCPServer
2002-08-12 13:20:22.744 -0- ACCEPTOR_QFTARGET> # TCP_PORT = 9000
2002-08-12 13:20:22.744 -0- ACCEPTOR_QFTARGET> # ON_UNKNOWN_REJECT = CLOSE
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # STORAGE_TYPE = FILE
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # RMI_HOST = 127.0.0.1
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # RMI_PORT = 9999
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # OPERATOR_LOG_BUFFER = 0
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # OPERATOR_LOG_REFRESH = 0
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # MSG_TYPES_SUPPORT_SEND =
ALL
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # MSG_TYPES_SUPPORT_RECEIVE
= ALL
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # SET_CMD = set
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # HEARTBT_INT = 60
2002-08-12 13:20:22.754 -0- ACCEPTOR_QFTARGET> # RESTORE_TIMEOUT = 10
2002-08-12 13:20:22.764 -0- ACCEPTOR_QFTARGET> # POST_LOGIN_TIMEOUT = 10
2002-08-12 13:20:22.764 -0- ACCEPTOR_QFTARGET> # IN_SYNC_TIMEOUT = 25
2002-08-12 13:20:22.764 -0- ACCEPTOR_QFTARGET> # IN_EOD_TIMEOUT = 10
2002-08-12 13:20:22.774 -0- ACCEPTOR_QFTARGET> # ENCRYPT_METHOD = 0
2002-08-12 13:20:22.774 -0- ACCEPTOR_QFTARGET> # ENC_FILE_NAME =
ACCEPTOR_QFTARGET_logon.txt
2002-08-12 13:20:22.774 -0- ACCEPTOR_QFTARGET> # IN_SEQ_NUM_NAME =
ACCEPTOR_QFTARGET_IN
2002-08-12 13:20:22.774 -0- ACCEPTOR_QFTARGET> # OUT_SEQ_NUM_NAME =
ACCEPTOR_QFTARGET_OUT
2002-08-12 13:20:22.784 -0- ACCEPTOR_QFTARGET> # WORK_DIRECTORY = .
\Acceptor\
2002-08-12 13:20:22.784 -0- ACCEPTOR_QFTARGET> # OUTGOING_DBS_NAME =
ACCEPTOR_QFTARGET_OUT
2002-08-12 13:20:22.784 -0- ACCEPTOR_QFTARGET> # HEARTBT_LATENCY = 5
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # LOGON_INITIATOR = true
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # LAST_EOD_PERFORMED_NAME =
ACCEPTOR_QFTARGET_LAST_EOD_PERFORMED
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # IN_EOD_NAME =
ACCEPTOR_QFTARGET_IN_EOD
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # EOD_SENT_NAME =
ACCEPTOR_QFTARGET_EOD_SENT
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # EOD_RECEIVED_NAME =
ACCEPTOR_QFTARGET_EOD_RECEIVED
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # RECONNECT_COUNT = 3
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # SUPPORT_ROLE = true
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> # End of the setup
parameters for this session.
2002-08-12 13:20:22.794 -0- ACCEPTOR_QFTARGET> #
---------------------------------------------
2002-08-12 13:20:22.854 -0- ACCEPTOR_QFTARGET> FIX formatter created
[FixFormatter version: FIX.4.2]
2002-08-12 13:20:22.944 -0- ACCEPTOR_QFTARGET> PTP connection created
[TCP/IP-Server(null:9000)]
2002-08-12 13:20:23.115 -0- ACCEPTOR_QFTARGET> Encryption Factory created
[No Encryption [0]]
2002-08-12 13:20:23.155 -0- ACCEPTOR_QFTARGET> Registering RMI service
Operator/FIXSession/ACCEPTOR/QFTARGET ...
2002-08-12 13:20:23.155 -0- ACCEPTOR_QFTARGET> RMI service
Operator/FIXSession/ACCEPTOR/QFTARGET is ready.
2002-08-12 13:20:23.175 -0- ACCEPTOR_QFTARGET> FIX Engine ACCEPTOR_QFTARGET
created successfully.
2002-08-12 13:20:23.205 -1- ACCEPTOR_QFTARGET> Clear PTP: cleared PTP
incoming queue, stopped outgoing queue dispatcher and cleared outgoing PTP
queue.
2002-08-12 13:20:23.205 -0- ACCEPTOR_QFTARGET> FIX Engine started...
2002-08-12 13:20:24.597 -2- ACCEPTOR_QFTARGET> APPL request to open
connection.
2002-08-12 13:20:24.617 -1- ACCEPTOR_QFTARGET> Fix state changed from
Closed to InConnect. Reason: API REQUEST [0] Open
2002-08-12 13:20:24.627 -1- ACCEPTOR_QFTARGET> Clear PTP: cleared PTP
incoming queue, stopped outgoing queue dispatcher and cleared outgoing PTP
queue.
2002-08-12 13:20:24.627 -1- ACCEPTOR_QFTARGET> Trying to open PTP
communication.
2002-08-12 13:20:24.647 -2- ACCEPTOR_QFTARGET> API state changed from:
CLOSED to: CONNECTING
2002-08-12 13:20:24.897 -1- ACCEPTOR_QFTARGET> Fix state changed from
InConnect to InLogin. Reason: PARTNER REQUEST [1] Opened PTP connection
successfully
2002-08-12 13:20:24.917 -3- ACCEPTOR_QFTARGET> Received message from PTP
with sequence number greater than expected. 8=FIX.4.29=6735=A34=2
49=QFTARGET52=20020812-13:20:1456=ACCEPTOR98=0108=6010=224
2002-08-12 13:20:24.967 -1- ACCEPTOR_QFTARGET> sent Login message in
response to Login received. 35=A49=ACCEPTOR56=QFTARGET34=1
52=20020812-07:50:24.92798=0108=60384=9235=A385=R35=A385=S35=0
385=R35=0385=S35=1385=R35=1385=S35=2385=R35=2385=S35=3385=R
35=3385=S35=4385=R35=4385=S35=5385=R35=5385=S35=6385=S35=7
385=S35=8385=S35=9385=S35=B385=S35=C385=S35=D385=S35=E385=S
35=F385=S35=G385=S35=H385=S35=J385=S35=K385=S35=L385=S35=M
385=S35=N385=S35=P385=S35=Q385=S35=R385=S35=S385=S35=T385=S
35=V385=S35=W385=S35=X385=S35=Y385=S35=Z385=S35=a385=S35=b
385=S35=c385=S35=d385=S35=e385=S35=f385=S35=g385=S35=h385=S
35=i385=S35=j385=S35=k385=S35=l385=S35=m385=S35=6385=R35=7
385=R35=8385=R35=9385=R35=B385=R35=C385=R35=D385=R35=E385=R
35=F385=R35=G385=R35=H385=R35=J385=R35=K385=R35=L385=R35=M
385=R35=N385=R35=P385=R35=Q385=R35=R385=R35=S385=R35=T385=R
35=V385=R35=W385=R35=X385=R35=Y385=R35=Z385=R35=a385=R35=b
385=R35=c385=R35=d385=R35=e385=R35=f385=R35=g385=R35=h385=R
35=i385=R35=j385=R35=k385=R35=l385=R35=m385=R
2002-08-12 13:20:24.977 -1- ACCEPTOR_QFTARGET> Fix state changed from
InLogin to PostLogin. Reason: PARTNER REQUEST [1] Received logon message
2002-08-12 13:20:24.987 -1- ACCEPTOR_QFTARGET> saved message received on
incoming PTP queue for later use.
2002-08-12 13:20:25.007 -1- ACCEPTOR_QFTARGET> sent ResendRequest message.
35=249=ACCEPTOR56=QFTARGET34=252=20020812-07:50:24.9877=116=1
2002-08-12 13:20:25.007 -1- ACCEPTOR_QFTARGET> Starting Restore Timer until
sequence number 1 is received.
2002-08-12 13:20:25.518 -1- ACCEPTOR_QFTARGET> Fix state changed from
PostLogin to InConnect. Reason: COMMUNICATION PROBLEM [6] PTP
communication closed while in an open communication state.
2002-08-12 13:20:25.518 -1- ACCEPTOR_QFTARGET> Stopped RestoreState timer.
2002-08-12 13:20:25.628 -1- ACCEPTOR_QFTARGET> Clear PTP: cleared PTP
incoming queue, stopped outgoing queue dispatcher and cleared outgoing PTP
queue.
(See attached file: pwarrier.vcf)