<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/quickfix/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/quickfix/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 08 Sep 2020 02:53:34 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/quickfix/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>Tag appear multiple times NOT a part of repeating group tag</title><link>https://sourceforge.net/p/quickfix/bugs/109/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi, &lt;br/&gt;
We are currently using quickfixn, and we are having issue with the tag. &lt;br/&gt;
Tags appear multiple times randomly in some of the messages when there is a high load.. causing the message not being sent to the server. No other error log. We did not do any customization on the library.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tag 9 appears twice&lt;/li&gt;
&lt;li&gt;Tag 34, 49,52,56 appears 3x&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;20200907-06:00:37.994 : 8=FIX.4.4^9=246^9=310^35=D^34=60416^49=RakutenOOMS^52=20200907-06:00:37.993^56=RakutenBTS2^34=60417^49=RakutenOOMS^52=20200907-06:00:37.993^56=RakutenBTS2^1=066136706^11=0720629^22=99^38=300^40=2^44=9.00000000^48=7106^54=1^59=0^60=20200907-14:00:37.835^110=0^528=A^529=I^762=NM^453=2^448=00000^447=C^452=11^448=10065898^447=C^452=3^10=162^10=146^&lt;/p&gt;
&lt;p&gt;20200907-06:00:37.994 : 8=FIX.4.4^9=246^9=310^35=G^34=60415^49=RakutenOOMS^52=20200907-06:00:37.973^56=RakutenBTS2^34=60418^49=RakutenOOMS^52=20200907-06:00:37.994^56=RakutenBTS2^1=063207104^11=0720630^38=2500^40=2^41=0664514^44=0.66000000^48=8907^54=2^59=0^60=20200907-14:00:37.851^110=0^529=I^762=NM^453=2^448=00000^447=C^452=11^448=10015482^447=C^452=3^10=153^10=139^&lt;br/&gt;
20200907-06:00:37.994 :&lt;/p&gt;
&lt;p&gt;8=FIX.4.4^9=249^9=313^35=D^34=60414^49=RakutenOOMS^52=20200907-06:00:37.973^56=RakutenBTS2^34=60419^49=RakutenOOMS^52=20200907-06:00:37.994^56=RakutenBTS2^1=066962846^11=0720624^22=99^38=4000^40=2^44=0.19000000^48=71061D^54=1^59=0^60=20200907-14:00:37.754^110=0^528=A^529=I^762=NM^453=2^448=00000^447=C^452=11^448=10107491^447=C^452=3^10=065^10=055^&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anne Tio</dc:creator><pubDate>Tue, 08 Sep 2020 02:53:34 -0000</pubDate><guid>https://sourceforge.net16dc8c7e85f5b8f6e3d130ce640c23691c7b709e</guid></item><item><title>Logout message only coming through onLogout and not seeing reason.  Not message in to/from Admin</title><link>https://sourceforge.net/p/quickfix/bugs/108/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Using python quckfix 1.15.1 and logging into ASX test enviroment.  They are forcing a failover test and I need to get the seqNum of the logout message&lt;br/&gt;
Logon message goes out and is rejected with a logout; both message in my fix log.&lt;/p&gt;
&lt;p&gt;I see the logon in the toAdmin and add my additional logon tags, and get the logout message back, but only the logout method is called, (nothing in fromAdmin or toAdmin methods) and I can't see the reason in the code as there is no message.  I see the reason on the fix message.  ASX is forcing a failover test and I need to get the last seq number and then add this to next logon as NextExpectedMsgSeqNum, but onLogout doesn't have the message so I can't parse tag 58 and see the reason nor get the seq number and use that in the NextExpectedMsgSeqNum tag value.&lt;/p&gt;
&lt;p&gt;Messages are:&lt;br/&gt;
20190621-00:22:44.112711000 : 8=FIXT.1.19=10635=A34=149=TMAD252=20190621-00:22:44.11256=ASX98=0108=60141=Y553=TMAD2554=Aardvark201906!1137=910=181&lt;br/&gt;
20190621-00:22:44.338051000 : 8=FIXT.1.19=000012435=549=ASX56=TMAD234=952=20190621-00:22:44.2441409=10558=After fail-over, you MUST set next expected sequence number!10=083&lt;/p&gt;
&lt;p&gt;How do I get get / trap this logout message so I can determine the NextExpectedMsgSeqNum and add to the next logon?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Stan Bryl</dc:creator><pubDate>Fri, 21 Jun 2019 00:57:23 -0000</pubDate><guid>https://sourceforge.netfb6f03375a97515ec2953b51d35f767d6d52f8aa</guid></item><item><title>how to take backup of log file generated by QuickFix in .net</title><link>https://sourceforge.net/p/quickfix/bugs/107/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Team , &lt;br/&gt;
Can you please clarify on how to take the back up of log file generated by QuickFix in C# .Net and use of FileLogBackupPath in QuickFix config &lt;/p&gt;
&lt;p&gt;I tried code snippet posted in this post, but not able to find the getSessions method in initiator object and getLog is also  not present. &lt;/p&gt;
&lt;p&gt;ArrayList sessions = initiator.getSessions(); &lt;br/&gt;
{ &lt;br/&gt;
    foreach (var session in sessions) &lt;br/&gt;
    { &lt;br/&gt;
        SessionID sessionId = (SessionID)session; &lt;br/&gt;
        Log logFile = Session.lookupSession(sessionId).getLog(); &lt;br/&gt;
        logFile.backup(); &lt;br/&gt;
    } &lt;br/&gt;
} &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">abhay</dc:creator><pubDate>Mon, 13 May 2019 08:52:29 -0000</pubDate><guid>https://sourceforge.net88b194a6bbacc5632b6dcf7406172d5e54893f39</guid></item><item><title>Compilation issue - Python - Building error</title><link>https://sourceforge.net/p/quickfix/bugs/106/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello&lt;br/&gt;
I am trying to build  quickfix-1-15.1 for Python using comand "python setup.py install". Windows environment. I have Microsoft Visual Studio 14.0 installed.&lt;/p&gt;
&lt;p&gt;First i got an issue with extra_compile_args, compilation failed because of the Wno-xxxx options. I removed them in setup.py and it fixed this issue.&lt;/p&gt;
&lt;p&gt;Then it failed because of it could not find stdafx.h. I created an empty such file and it fixed this issue as well.&lt;/p&gt;
&lt;p&gt;But now i am getting a new one that i cannot sort out. Compilation is working but it fails linking, see error message below. I am not sure how it cannot find the right libraries, can you help?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Error message:&lt;/p&gt;
&lt;p&gt;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\Python36\libs /LIBPATH:C:\Python36\PCbuild\win32 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86" /LIBPATH:\cib.net\ShareHK\Soft\Sybclient\oc_1251\OCS-12_5\lib /LIBPATH:\cib.net\ShareHK\Soft\Sybclient\oc_1251\ADO.NET\dll /EXPORT:PyInit&lt;strong&gt;quickfix build\temp.win32-3.6\Release\C++\HttpServer.obj build\temp.win32-3.6\Release\C++\TimeRange.obj build\temp.win32-3.6\Release\C++\ThreadedSSLSocketAcceptor.obj build\temp.win32-3.6\Release\C++\ThreadedSocketInitiator.obj build\temp.win32-3.6\Release\C++\QuickfixPython.obj build\temp.win32-3.6\Release\C++\MessageSorters.obj build\temp.win32-3.6\Release\C++\MySQLStore.obj build\temp.win32-3.6\Release\C++\Group.obj build\temp.win32-3.6\Release\C++\ThreadedSSLSocketConnection.obj build\temp.win32-3.6\Release\C++\SessionFactory.obj build\temp.win32-3.6\Release\C++\MessageStore.obj build\temp.win32-3.6\Release\C++\SSLSocketAcceptor.obj build\temp.win32-3.6\Release\C++\SocketInitiator.obj build\temp.win32-3.6\Release\C++\MySQLLog.obj build\temp.win32-3.6\Release\C++\Initiator.obj build\temp.win32-3.6\Release\C++\FieldTypes.obj build\temp.win32-3.6\Release\C++\FieldMap.obj build\temp.win32-3.6\Release\C++\OdbcLog.obj build\temp.win32-3.6\Release\C++\Utility.obj build\temp.win32-3.6\Release\C++\Settings.obj build\temp.win32-3.6\Release\C++\SocketAcceptor.obj build\temp.win32-3.6\Release\C++\SocketServer.obj build\temp.win32-3.6\Release\C++\pugixml.obj build\temp.win32-3.6\Release\C++\NullStore.obj build\temp.win32-3.6\Release\C++\PostgreSQLLog.obj build\temp.win32-3.6\Release\C++\OdbcStore.obj build\temp.win32-3.6\Release\C++\DataDictionary.obj build\temp.win32-3.6\Release\C++\ThreadedSocketAcceptor.obj build\temp.win32-3.6\Release\C++\FileStore.obj build\temp.win32-3.6\Release\C++\PostgreSQLStore.obj build\temp.win32-3.6\Release\C++\Log.obj build\temp.win32-3.6\Release\C++\FileLog.obj build\temp.win32-3.6\Release\C++\Acceptor.obj build\temp.win32-3.6\Release\C++\ThreadedSSLSocketInitiator.obj build\temp.win32-3.6\Release\C++\ThreadedSocketConnection.obj build\temp.win32-3.6\Release\C++\UtilitySSL.obj build\temp.win32-3.6\Release\C++\SessionSettings.obj build\temp.win32-3.6\Release\C++\HttpConnection.obj build\temp.win32-3.6\Release\C++\Session.obj build\temp.win32-3.6\Release\C++\PUGIXML_DOMDocument.obj build\temp.win32-3.6\Release\C++\HttpParser.obj build\temp.win32-3.6\Release\C++\SocketConnector.obj build\temp.win32-3.6\Release\C++\DataDictionaryProvider.obj build\temp.win32-3.6\Release\C++\SSLSocketConnection.obj build\temp.win32-3.6\Release\C++\SSLSocketInitiator.obj build\temp.win32-3.6\Release\C++\HttpMessage.obj build\temp.win32-3.6\Release\C++\FieldConvertors.obj build\temp.win32-3.6\Release\C++\Dictionary.obj build\temp.win32-3.6\Release\C++\SocketConnection.obj build\temp.win32-3.6\Release\C++\Message.obj build\temp.win32-3.6\Release\C++\Parser.obj build\temp.win32-3.6\Release\C++\SocketMonitor.obj /OUT:build\lib.win32-3.6_quickfix.cp36-win32.pyd /IMPLIB:build\temp.win32-3.6\Release\C++_quickfix.cp36-win32.lib&lt;br/&gt;
   Creating library build\temp.win32-3.6\Release\C++_quickfix.cp36-win32.lib and object build\temp.win32-3.6\Release\C++_quickfix.cp36-win32.exp&lt;br/&gt;
QuickfixPython.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;WSAGetLastError@0&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;setsockopt@20&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;ioctlsocket@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;htons@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;getsockopt@20&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;recv@16&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;inet_ntoa@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;connect@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;ntohs@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;socket@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;send@16&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;getsockname@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;inet_addr@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;getpeername@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;WSAStartup@8&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;listen@8&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;shutdown@8&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;gethostbyname@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;closesocket@4&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;bind@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;accept@12&lt;br/&gt;
Utility.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp&lt;strong&gt;WSACleanup@0&lt;br/&gt;
ThreadedSocketConnection.obj : error LNK2001: unresolved external symbol &lt;/strong&gt;imp__select@20&lt;br/&gt;
build\lib.win32-3.6_quickfix.cp36-win32.pyd : fatal error LNK1120: 23 unresolved externals&lt;br/&gt;
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.exe' failed with exit status 1120&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Guillaume Prevost</dc:creator><pubDate>Mon, 21 May 2018 10:14:07 -0000</pubDate><guid>https://sourceforge.net881507c8cac2410fca072389c3a155ca35ae71a0</guid></item><item><title>Documentation error</title><link>https://sourceforge.net/p/quickfix/bugs/104/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;On the web page:&lt;br /&gt;
&lt;a href="http://www.quickfixengine.org/quickfix/doc/html/generating_databases.html" rel="nofollow"&gt;http://www.quickfixengine.org/quickfix/doc/html/generating_databases.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Under the heading "MSSQL" below, in the statement "You must have MySQL installed with ...." should have MySQL changed to MSSQL ?&lt;/p&gt;
&lt;p&gt;Generating QuickFIX Databases &lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;
&lt;p&gt;MSSQL&lt;/p&gt;
&lt;p&gt;You must have MySQL installed with the deamon running.&lt;/p&gt;
&lt;p&gt;Run the create script in src/sql/mssql. You must pass in a mssql user with permissions authorized to create a new database.&lt;/p&gt;
&lt;p&gt;create.bat sa&lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paul_Tabo</dc:creator><pubDate>Sat, 22 Nov 2014 01:49:45 -0000</pubDate><guid>https://sourceforge.net28265ed225ed5fb275e7bc460c903909c2676906</guid></item><item><title>Problem with connection timeout when connecting to an invalid ip</title><link>https://sourceforge.net/p/quickfix/bugs/103/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;There seems to be an issue with connecting to an invalid ip, especially for ip's for which the dns resolution fails.&lt;/p&gt;
&lt;p&gt;The connection attempt never gets timedout and so a new reconnection attempt is also not made.&lt;/p&gt;
&lt;p&gt;We have observed this issue on both windows 64 and solaris amd64.&lt;/p&gt;
&lt;p&gt;Additionally on Solaris amd64, it can also be observed while connecting to the loopback interface.&lt;/p&gt;
&lt;p&gt;In both cases, we can see the library is trying to connect to the ip, but there will be no updates after that.&lt;/p&gt;
&lt;p&gt;FIX.4.2-client-server::Connecting to ip_does_not_exist.com on port 19425&lt;/p&gt;
&lt;p&gt;Solaris amd64&lt;br /&gt;
FIX.4.2-client-server::Connecting to 127.0.0.1 on port 13014&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sandeep</dc:creator><pubDate>Fri, 06 Dec 2013 09:16:45 -0000</pubDate><guid>https://sourceforge.net3416926844606bee929f81f51116cd91b29e83b2</guid></item><item><title>Problem with nextTargetMsgSeqNum incrementation</title><link>https://sourceforge.net/p/quickfix/bugs/102/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The following problem was encountered. When a Logout message is received as the response on Logon message, the next target sequence number is incremented independently of the actual sequence number of the Logout message.&lt;/p&gt;
&lt;p&gt;Example:&lt;br /&gt;
Let nextTargetMsgSeqNum = N&lt;br /&gt;
1) The sender sends Logon message&lt;br /&gt;
2) The target replies with Logout message having msgSeqNum = M, where M &amp;gt; N&lt;br /&gt;
3) The sender increments the nextTargetMsgSeqNum though msgSeqNum of received Logout message is higher than nextTargetMsgSeqNum&lt;/p&gt;
&lt;p&gt;I expected that the nextTargetMsgSeqNum wouldn't be incremented in this situation.&lt;/p&gt;
&lt;p&gt;I suggest to increment nextTargetMsgSeqNum conditionally when processing Logout message.&lt;/p&gt;
&lt;p&gt;Example code:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;nextLogout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;throws&lt;/span&gt; &lt;span class="n"&gt;IOException&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RejectLogon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FieldNotFound&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;IncorrectDataFormat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;IncorrectTagValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;UnsupportedMessageType&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isLogoutSent&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Received logout request&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isSetField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIELD&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;: &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIELD&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;generateLogout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Sent logout response&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Received logout response&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLogoutReceived&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;final&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sequence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getHeader&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;getInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MsgSeqNum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIELD&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;isTargetTooHigh&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sequence&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;incrNextTargetMsgSeqNum&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resetOnLogout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;resetState&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In the current code nextTargetMsgSeqNum is incremented independently of the actual sequence number of the Logout message:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;nextLogout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;throws&lt;/span&gt; &lt;span class="n"&gt;IOException&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RejectLogon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FieldNotFound&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;IncorrectDataFormat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;IncorrectTagValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;UnsupportedMessageType&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isLogoutSent&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Received logout request&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isSetField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIELD&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;: &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIELD&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;generateLogout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Sent logout response&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Received logout response&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;getLog&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;onEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLogoutReceived&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;incrNextTargetMsgSeqNum&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resetOnLogout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;resetState&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">andrewm123</dc:creator><pubDate>Wed, 26 Jun 2013 13:40:59 -0000</pubDate><guid>https://sourceforge.net068fb33b5a4e2536fe9420e2ffcc08bc977aac1c</guid></item><item><title>NextTargetMsgSeqNum wrongly incremented?</title><link>https://sourceforge.net/p/quickfix/bugs/101/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;When acting as initiator, if the sender sends a logon request and receives a logout the expected incoming sequence number is incremented independently of the actual sequence number of the logout message.&lt;br /&gt;
Example:&lt;br /&gt;
1) supposing NextTargetMsgSeqNum = N, the sender sends a logon request&lt;br /&gt;
2) the target replies with a logout message having sequence number N+M (where M&amp;gt;=0)&lt;br /&gt;
3) the sender disconnects BUT NextTargetMsgSeqNum is incremented&lt;/p&gt;
&lt;p&gt;I was expected to have NextTargetMsgSeqNum not being changed.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gianni</dc:creator><pubDate>Fri, 29 Mar 2013 16:53:16 -0000</pubDate><guid>https://sourceforge.netd5c6e103203730603e4d8254e93105640d193f43</guid></item><item><title>acceptor issues logout after client logon after logout() </title><link>https://sourceforge.net/p/quickfix/bugs/100/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This is a revisit of ID: 3047737&lt;/p&gt;
&lt;p&gt;When the logout() method is used to force an acceptor to logout a connected client, subsequent attempts by the client to logon result in the acceptor immediately sending a logout after the initial logon messages are exchanged.&lt;/p&gt;
&lt;p&gt;This is seen in version 1.13.3 of the quickfix engine.&lt;/p&gt;
&lt;p&gt;The logout() method sets the enabled state in Session.cpp to false. On the next call to void Session::next( const UtcTimeStamp&amp;amp; timeStamp ) this forces the acceptor to send  a logout to the client:&lt;/p&gt;
&lt;p&gt;if( !isEnabled() || !isLogonTime(timeStamp) )&lt;br /&gt;
{&lt;br /&gt;
if( isLoggedOn() )&lt;br /&gt;
{&lt;br /&gt;
if( !m_state.sentLogout() )&lt;br /&gt;
{&lt;br /&gt;
m_state.onEvent( "Initiated logout request" );&lt;br /&gt;
generateLogout( m_state.logoutReason() );&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
return;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;When the client attempts a subsequent logon, the enabled state is still false.&lt;/p&gt;
&lt;p&gt;In void Session::nextLogon( const Message&amp;amp; logon, const UtcTimeStamp&amp;amp; timeStamp ) the enabled state is not changed so it remains false but the acceptor has sent a logon message to the client thus completing the logon sequence, the client now thinks it is logged on.&lt;/p&gt;
&lt;p&gt;On the next call to void Session::next( const UtcTimeStamp&amp;amp; timeStamp ) the acceptor, seeing that the enabled state is still false generates a logout.&lt;/p&gt;
&lt;p&gt;From this point on the client will continue to logon and be immediately logged out and there appears to be no way to change this behaviour.&lt;/p&gt;
&lt;p&gt;If we look at how an explicit logout from the client is treated in void Session::nextLogout( const Message&amp;amp; logout, const UtcTimeStamp&amp;amp; timeStamp )&lt;br /&gt;
we see that the enabled state is not changed to false and the client is subsequently able to logon again without the spurious logout being sent by the acceptor.&lt;/p&gt;
&lt;p&gt;I think it is reasonable to expect that the acceptor should be in the same state after a client initiated logout or a logout initiated by the logout() method.&lt;/p&gt;
&lt;p&gt;As a work around, in Session.cpp, I have modified void Session::nextLogon( const Message&amp;amp; logon, const UtcTimeStamp&amp;amp; timeStamp ) to set the enabled state to true for an acceptor:&lt;/p&gt;
&lt;p&gt;if ( !m_state.initiate()&lt;br /&gt;
|| (m_state.receivedReset() &amp;amp;&amp;amp; !m_state.sentReset()) )&lt;br /&gt;
{&lt;br /&gt;
if( logon.isSetField(m_state.heartBtInt()) )&lt;br /&gt;
logon.getField( m_state.heartBtInt() );&lt;br /&gt;
m_state.onEvent( "Received logon request" );&lt;br /&gt;
generateLogon( logon );&lt;br /&gt;
m_state.onEvent( "Responding to logon request" );&lt;br /&gt;
this-&amp;gt;logon();  // @@@ &lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
m_state.onEvent( "Received logon response" );&lt;/p&gt;
&lt;p&gt;This appears to fix the immediate problem, and clients that are forced to logout by the acceptor can now successfully logon again.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Stephen Oberski</dc:creator><pubDate>Fri, 15 Mar 2013 18:52:45 -0000</pubDate><guid>https://sourceforge.neta931a22c5d8091a1000fc96f3e9457b807dc7a47</guid></item><item><title>Quickfix LogViewer: doesn't release closed file</title><link>https://sourceforge.net/p/quickfix/bugs/99/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If you open a FIX-Log in the log viewer and you close it again, it is still blocked.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thomas</dc:creator><pubDate>Thu, 24 Jan 2013 15:05:24 -0000</pubDate><guid>https://sourceforge.net4104b6e3d4598126da25e49d0cae58d829f0092d</guid></item></channel></rss>