<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Just to add some more info on this thread in comparison to QF/c++ (at least version 1.13.3):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">QF/c++ 1.13.3 has this functionality (session validation per listening endpoint), provided in ThreadedSocketConnection.cpp in bool ThreadedSocketConnection::setSession(const std::string& msg )<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#17244C;mso-fareast-language:EN-GB">Aidan Chisholm</span></b><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#17244C;mso-fareast-language:EN-GB"><br>
Mobile: +44 (0) 7760 386 157<br>
Direct: +44 (0) 1285 405 030<br>
</span><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#B40027;mso-fareast-language:EN-GB"><a href="mailto:aidan.chisholm@iress.co.uk"><span style="color:#B40027;text-decoration:none">aidan.chisholm@iress.co.uk</span></a></span><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif;color:#17244C;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB"> Aidan Chisholm
<br>
<b>Sent:</b> 04 March 2016 12:06<br>
<b>To:</b> quickfixn@lists.quickfixn.com<br>
<b>Cc:</b> V2-Migration <V2Migration@iress.com.au><br>
<b>Subject:</b> QFN Acceptor IP and Port Validation<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi – I’m just querying if there’s any validation for CompID IP or Ports? Or plans to add in the future?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My testing has shown that even though sessions can be assigned their own unique endpoints through use of SocketAcceptPort and SocketAcceptHost config, this doesn’t stop ‘cross-contamination’.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Example Acceptor settings:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[SESSION]<o:p></o:p></p>
<p class="MsoNormal">BeginString=FIX.4.2<o:p></o:p></p>
<p class="MsoNormal">TargetCompID=ABC<o:p></o:p></p>
<p class="MsoNormal">SocketAcceptPort=1234<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[SESSION]<o:p></o:p></p>
<p class="MsoNormal">BeginString=FIX.4.2<o:p></o:p></p>
<p class="MsoNormal">TargetCompID=XYZ<o:p></o:p></p>
<p class="MsoNormal">SocketAcceptPort=4321<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Initially I thought the above config would only allow ABC to logon to port 1234, and XYZ to logon to port 4321.<o:p></o:p></p>
<p class="MsoNormal">But testing has showed that the listening endpoints (ThreadedSocketReactor) are agnostic and will accept logon from any CompID whether configured for that endpoint or not.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We’re looking at this from a security perspective, to make sure clients cannot pretend to be other clients configured on the same QFn instance.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks<o:p></o:p></p>
<p class="MsoNormal">Aidan<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size: 9pt; font-family: Arial, sans-serif;">'IRESS' is the  trading name
for  IRESS (UK) Limited (registered number 06836280) and certain trading
entities within its group, being IRESS Portal Limited (registered number
2596452); IRESS FS Limited (registered number 2958430); IRESS Technology
Limited (registered number 07784841); IRESS Solutions Limited (registered
number 3896352), IRESS Web  Limited (registered number 05501526), IRESS
Mortgage Services Limited (registered number 03598058), Proquote Limited
(registered number</span><span style="font-size: 9pt; font-family: Verdana, sans-serif;"> 03851830)</span><span style="font-size: 9pt; font-family: Arial, sans-serif;"> and Pulse Software Systems Limited (registered number 08230913);
each of which is registered in England and Wales and has its registered office
at 1 Kingmaker Court, Warwick Technology Park, Warwick CV34 6DY. Any reference
to the Group or 'we' herein means any or all of the above mentioned entities.<o:p></o:p></span></p>

<p class="MsoNormal"><span style="font-size: 9pt; font-family: Arial, sans-serif;">Information contained in this email is intended only for the
addressee and may contain privileged and/or confidential information. If you
have received this message in error please notify the sender immediately and
permanently delete the message, and do not use, copy or disclose the
information contained in this message or in any attachment.  Although we
operate anti-virus programs, we do not warrant that this email is virus free
and accept no responsibility in the event any viruses are passed on.  We
may monitor replies to this email for operational or business reasons.<br>
<br>
For more information about the Group please visit our web site at <a href="http://www.iress.co.uk/" target="_blank"><span style="text-decoration:
none;text-underline:none">www.iress.co.uk</span></a><o:p></o:p></span></p></body>
</html>