<?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/hl7socketreader/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/hl7socketreader/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 23 Apr 2024 15:23:59 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/hl7socketreader/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>edit or create a custom HL7 ACK for messages</title><link>https://sourceforge.net/p/hl7socketreader/bugs/18/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi !! Is there a way to edit or create custom HL7 ACKs? Currently the instrument I working is not accepting the default ACK sent by the socket, thanks in advance!&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Edgardo Prieto</dc:creator><pubDate>Tue, 23 Apr 2024 15:23:59 -0000</pubDate><guid>https://sourceforge.net1ebf1efe221699683585e9a261191663c3eddda7</guid></item><item><title>Socket reader not running in Service</title><link>https://sourceforge.net/p/hl7socketreader/bugs/17/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The Socketreader works fine on the Command Prompt mode but does not seem to work in the Service mode. Although it installs and runs, it does not seem to pickup my socketreader.cfg file and looking at the README file, you say I MUST use the --configfile option but when I do it says it is not a recognized option. Can you help please ...&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Francis Pelletier</dc:creator><pubDate>Tue, 19 Feb 2019 15:55:13 -0000</pubDate><guid>https://sourceforge.netbe073d847a5b060debe60ca554c031cd0e5774f0</guid></item><item><title>Bind socketReader to a single port?</title><link>https://sourceforge.net/p/hl7socketreader/bugs/16/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Is there a way to force socketReader to SEND from a specific port? At the moment it is sending from one port, waiting briefly for an MLLP ACK then resending the message &lt;em&gt;from another port&lt;/em&gt;. The net result is that the remote server replies but I never get the ACK because it is replying to the original port. Ideally I would like it to transmit / listen on one specific port. Can this be done? Thanks.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thomas Altfather Good</dc:creator><pubDate>Wed, 04 May 2016 15:14:17 -0000</pubDate><guid>https://sourceforge.net1b16ba529ec327cb2899b2ef9c36f768f121efbc</guid></item><item><title>Issue with 'nacksonly' and suggestion for dumped files</title><link>https://sourceforge.net/p/hl7socketreader/bugs/15/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello, first of all I want to let you know I am very pleased with this tool.&lt;br/&gt;
I hope you find this feedback useful.&lt;/p&gt;
&lt;p&gt;I have one issue and one suggestion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Issue&lt;/strong&gt;: According to the example configuration provided, one of the debug options for &lt;span&gt;[outgoing_socket]&lt;/span&gt; is supposed to dump all files, no matter they are ACKs or NAKs.&lt;/p&gt;
&lt;p&gt;I quote lines 176 – 178 from “&lt;strong&gt;example.cfg&lt;/strong&gt;”&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;   'nacksonly'       :   Defaults to True
       If set to True, only negative ACKs will be dumped to file.
       If set to False, all ACKs will be dumped.
&lt;/pre&gt;&lt;/div&gt;


&lt;/blockquote&gt;
&lt;p&gt;If you set this option to “True” only NAK files will be dumped. Which I believe is the correct behavior.&lt;br/&gt;
But if you set this option to False you won’t get all Files, actually you will get only ACK files.&lt;/p&gt;
&lt;p&gt;I have reviewed the code and found a conditional that prevents the dump of NAK files. As you can see in “&lt;strong&gt;handleMessage&lt;/strong&gt;” method in “&lt;strong&gt;Common/workerThreads.py&lt;/strong&gt;” on line 1259.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;if self.__debugopts and self.__debugopts.get('nacksonly'):
    # dump the NACK
    self.__debugHandleAck(self.message)
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I think NAK files should always be dumped.&lt;/p&gt;
&lt;p&gt;Summarizing the issue consist in having the “nacksonly” option working as a switch between ACK and NAK files, instead of just dumping NAK files when is set to True and all files when is set to False.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suggestion&lt;/strong&gt;: Currently you can define the prefix and the suffix for dumped files, but the middle is set with a timestamp “AAAAMMDDHHMMSS”. As you can see in “&lt;strong&gt;__debugHandleAck&lt;/strong&gt;” method in “&lt;strong&gt;Common/workerThreads.py&lt;/strong&gt;”.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;fpath = os.path.normpath(self.__debugopts.get('ackmsgdir') + '/' + self.__debugopts.get('ackmsgprefix') + isoDate + '_' + str(fileCounter).zfill(counterLength) + self.__debugopts.get('ackmsgsuffix'))
while os.path.exists(fpath):
    fileCounter += 1
    fpath = os.path.normpath(self.__debugopts.get('ackmsgdir') + '/' + self.__debugopts.get('ackmsgprefix') + isoDate + '_' + str(fileCounter).zfill(counterLength) + self.__debugopts.get('ackmsgsuffix'))
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I think it will very useful to have a config option to change the “&lt;strong&gt;isoDate&lt;/strong&gt;” for the &lt;strong&gt;MSA-3&lt;/strong&gt; or &lt;strong&gt;MSH-9&lt;/strong&gt; because in my opinion they contain a better way to uniquely identify the dumped files.&lt;/p&gt;
&lt;p&gt;Kind regards.&lt;/p&gt;
&lt;p&gt;Francisco Saez.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Francisco Saez</dc:creator><pubDate>Thu, 28 Apr 2016 21:38:50 -0000</pubDate><guid>https://sourceforge.netbc70c1b74fa085a1319cbf3115e2ba1975237398</guid></item><item><title>Issue with 'nacksonly' and suggestion</title><link>https://sourceforge.net/p/hl7socketreader/bugs/14/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello, first of all I want to let you know I am very pleased with this tool.&lt;br/&gt;
I hope you find this feedback useful.&lt;/p&gt;
&lt;p&gt;I have one issue and one suggestion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Issue:&lt;/strong&gt; According to the example configuration provided, one of the debug options for &lt;span&gt;[outgoing_socket]&lt;/span&gt; is supposed to dump all files, no matter they are ACKs or NAKs.&lt;/p&gt;
&lt;p&gt;I quote lines 176 – 178 from “&lt;strong&gt;example.cfg&lt;/strong&gt;”&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;       'nacksonly'       :   Defaults to True
           If set to True, only negative ACKs will be dumped to file.
           If set to False, all ACKs will be dumped.
&lt;/pre&gt;&lt;/div&gt;


&lt;/blockquote&gt;
&lt;p&gt;If you set this option to “True” only NAK files will be dumped. Which I believe is the correct behavior.&lt;br/&gt;
But if you set this option to False you won’t get all Files, actually you will get only ACK files.&lt;/p&gt;
&lt;p&gt;I have reviewed the code and found a conditional that prevents the dump of NAK files. As you can see in “&lt;strong&gt;handleMessage&lt;/strong&gt;” method in “&lt;strong&gt;Common/workerThreads.py&lt;/strong&gt;” on line 1259.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;                    if self.__debugopts and self.__debugopts.get('nacksonly'):
                        # dump the NACK
                        self.__debugHandleAck(self.message)
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I think NAK files should always be dumped.&lt;/p&gt;
&lt;p&gt;Summarizing the issue consist in having the “nacksonly” option working as a switch between ACK and NAK files, instead of  just dumping NAK files when is set to True and all files when is set to False.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suggestion:&lt;/strong&gt; Currently you can define the prefix and the suffix for dumped files, but the middle is set with a timestamp “AAAAMMDDHHMMSS”. As you can see in “&lt;strong&gt;_debugHandleAck&lt;/strong&gt;” method in “&lt;strong&gt;Common/workerThreads.py&lt;/strong&gt;”.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;            fpath = os.path.normpath(self.__debugopts.get('ackmsgdir') + '/' + self.__debugopts.get('ackmsgprefix') + isoDate + '_' + str(fileCounter).zfill(counterLength) + self.__debugopts.get('ackmsgsuffix'))
            while os.path.exists(fpath):
                fileCounter += 1
                fpath = os.path.normpath(self.__debugopts.get('ackmsgdir') + '/' + self.__debugopts.get('ackmsgprefix') + isoDate + '_' + str(fileCounter).zfill(counterLength) + self.__debugopts.get('ackmsgsuffix'))
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I think it will very useful to have a config option to change the “&lt;strong&gt;isoDate&lt;/strong&gt;” for the &lt;strong&gt;MSA-3&lt;/strong&gt; or &lt;strong&gt;MSH-9&lt;/strong&gt; because in my opinion they contain a better way to uniquely identify the dumped files.&lt;/p&gt;
&lt;p&gt;Kind regards.&lt;/p&gt;
&lt;p&gt;Francisco Saez.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Francisco Saez</dc:creator><pubDate>Tue, 26 Apr 2016 22:34:50 -0000</pubDate><guid>https://sourceforge.net98da387453771681ee2279a7f937b828a7f84544</guid></item><item><title>ACK leads to indefinite loop of sending messages</title><link>https://sourceforge.net/p/hl7socketreader/bugs/13/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;if you have multiple Out-Sockets which deliver the very same HL7 message, after the first successfull ACK the self.messageCtrlId is going to be set to None. This leads to the problem that the next ACK can not be handled anymore as it compares to None instead to the actual message ID. This leads to an indefinite loop of sending the very same HL7 message over and over again.&lt;/p&gt;
&lt;p&gt;To fix this, comment line 1249 of workerThreads.py out (#self._ _messageCtrlId = None)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Linus Betschart</dc:creator><pubDate>Mon, 21 Dec 2015 15:42:31 -0000</pubDate><guid>https://sourceforge.net53b476f55e275a4b8158cf42bd948fa3fe07dd82</guid></item><item><title>#11 socketReader should attempt to reconnect outgoing sockets</title><link>https://sourceforge.net/p/hl7socketreader/bugs/11/?limit=25#2ecc</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I set up a completely separate test environment.  It looks like if the VPN goes down (100% packet loss) the sending process just keeps retrying every 10 seconds, each time it tries to send the message it goes into the outbound queue of messages (aka Send-Q).  Once Send-Q is full, the operating system terminates the connection, which leads to the console message:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;Hl7Transmitter_test_file_to_test_socket_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;Hl7Transmitter_test_file_to_test_socket_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;probably&lt;/span&gt; &lt;span class="n"&gt;been&lt;/span&gt; &lt;span class="n"&gt;closed&lt;/span&gt; &lt;span class="n"&gt;already&lt;/span&gt;
&lt;span class="n"&gt;Done&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Queue&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;at DEBUG level (minute the sleeping 10 seconds message) the log has:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;939&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt;                           &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;receive&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;939&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt;                           &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;receive&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;955&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt;                           &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;socketReader&lt;/span&gt; &lt;span class="n"&gt;encountered&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;exception&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/home/derf/src/socketreader/Common/socketWrapper.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;shutdown&lt;/span&gt;
    &lt;span class="n"&gt;retval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__sock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SHUT_RDWR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/usr/lib/python2.7/socket.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;meth&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nl"&gt;error:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Errno&lt;/span&gt; &lt;span class="mi"&gt;107&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;Transport&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;connected&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;955&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt;                           &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;socketReader&lt;/span&gt; &lt;span class="n"&gt;encountered&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;exception&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/home/derf/src/socketreader/Common/socketWrapper.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;shutdown&lt;/span&gt;
    &lt;span class="n"&gt;retval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__sock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SHUT_RDWR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/usr/lib/python2.7/socket.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;meth&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nl"&gt;error:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Errno&lt;/span&gt; &lt;span class="mi"&gt;107&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;Transport&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;connected&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;955&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Hl7Transmitter_test_file_to_test_socket_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;socketReader&lt;/span&gt; &lt;span class="n"&gt;encountered&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;exception&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/home/derf/src/socketreader/Common/workerThreads.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;1323&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;threadStop&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__clientSocket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/home/derf/src/socketreader/Common/socketWrapper.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;shutdown&lt;/span&gt;
    &lt;span class="n"&gt;retval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__sock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shutdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SHUT_RDWR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="s"&gt;"/usr/lib/python2.7/socket.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;meth&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nl"&gt;error:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Errno&lt;/span&gt; &lt;span class="mi"&gt;107&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;Transport&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;connected&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;960&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Hl7Transmitter_test_file_to_test_socket_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;PROD&lt;/span&gt;     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;First&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="n"&gt;still&lt;/span&gt; &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;hl7&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;At this point no attempt is made to restart the sending thread. &lt;/p&gt;
&lt;p&gt;I think the main &lt;code&gt;while running:&lt;/code&gt; loop can be modified to check for dead threads and restart them.  Since the thread is removed from the threadList when it stops, if the main body keeps track of the configuration -&amp;gt; threads that &lt;em&gt;should&lt;/em&gt; be running, it can make a new thread to replace the thread that has disappeared.  In the event of a VPN outage, the new thread would attempt to connect until the VPN is fixed, at which point it can start sending messages again.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fred</dc:creator><pubDate>Mon, 22 Sep 2014 03:48:48 -0000</pubDate><guid>https://sourceforge.net0831572b1ec2d7c9816edb2a24bc6b32eab76638</guid></item><item><title>Exception during ACK when handling pre-2.3.1 messages (patch included)</title><link>https://sourceforge.net/p/hl7socketreader/bugs/12/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Somewhere prior to HL7-2.3.1, MSH-9 only contained a message type and did not include the &lt;code&gt;^trigger event^message structure&lt;/code&gt; components.  When receiving a message without MSH-9.2, an array index exception is triggered when it attempts to insert &lt;code&gt;message[0][8][1]&lt;/code&gt; into the ACK.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This patch checks if &lt;code&gt;message[0][8]&lt;/code&gt; has more than 1 component, and if so uses &lt;code&gt;ACK^trigger event&lt;/code&gt; for the response.  Otherwise, it uses &lt;code&gt;ACK&lt;/code&gt; for the response.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fred</dc:creator><pubDate>Wed, 03 Sep 2014 17:32:29 -0000</pubDate><guid>https://sourceforge.netf66036fb0fb90a766517105c9764fd5e3d796322</guid></item><item><title>socketReader should attempt to reconnect outgoing sockets</title><link>https://sourceforge.net/p/hl7socketreader/bugs/11/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Whenever the outbound socket is lost, socketReader does not try to reconnect. Idle sockets could be closed due to VPN tunnel timeout, TCP timeout, etc.  socketReader should attempt to restart the outgoing connection.&lt;/p&gt;
&lt;p&gt;In the console:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;Hl7Transmitter_test_orders_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;Hl7Transmitter_test_orders_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;probably&lt;/span&gt; &lt;span class="n"&gt;been&lt;/span&gt; &lt;span class="n"&gt;closed&lt;/span&gt; &lt;span class="n"&gt;already&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In the log file (configured to INFO level):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;835&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;send&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;835&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;send&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;679&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;receive&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;679&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;receive&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;679&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;SocketOps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;tried&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;receive&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;this message is repeated a lot over ~ 5 minutes before ending with:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;03&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;693&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Hl7Transmitter_test_orders_Thread&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nb"&gt;ERROR&lt;/span&gt;    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;socketReader&lt;/span&gt; &lt;span class="nx"&gt;encountered&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;socket&lt;/span&gt; &lt;span class="nx"&gt;exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="nx"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;most&lt;/span&gt; &lt;span class="nx"&gt;recent&lt;/span&gt; &lt;span class="nb"&gt;call&lt;/span&gt; &lt;span class="nb"&gt;last&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="nb"&gt;File&lt;/span&gt; &lt;span class="s2"&gt;"/data/EDI/socketreader/Common/workerThreads.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;1322&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;threadStop&lt;/span&gt;
    &lt;span class="bp"&gt;self.&lt;/span&gt;&lt;span class="nx"&gt;__clientSocket.fileno&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;    &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Just&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;check&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;socket&lt;/span&gt; &lt;span class="nx"&gt;still&lt;/span&gt; &lt;span class="nx"&gt;exists.&lt;/span&gt; &lt;span class="nx"&gt;Throws&lt;/span&gt; &lt;span class="nx"&gt;an&lt;/span&gt; &lt;span class="nx"&gt;exception&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt;&lt;span class="nx"&gt;.&lt;/span&gt;
  &lt;span class="nb"&gt;File&lt;/span&gt; &lt;span class="s2"&gt;"/data/EDI/socketreader/Common/socketWrapper.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;77&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;shutdown&lt;/span&gt;
    &lt;span class="n"&gt;retval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self.&lt;/span&gt;&lt;span class="nx"&gt;__sock.shutdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;socket.SHUT_RDWR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nb"&gt;File&lt;/span&gt; &lt;span class="s2"&gt;"/usr/lib/python2.7/socket.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;224&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;meth&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self.&lt;/span&gt;&lt;span class="nx"&gt;_sock&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="err"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;Errno&lt;/span&gt; &lt;span class="mi"&gt;107&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt; Transport endpoint is not connected
2014-09-03 11:13:22,693 - Hl7Transmitter_test_orders_Thread-6 - PROD     - First message still left in the queue:
&lt;span class="nt"&gt;&amp;lt;hl7&amp;gt;&lt;/span&gt;
2014-09-03 11:13:22,693 - Hl7Transmitter_test_orders_Thread-6 - INFO     - Thread stopped. Queue length: 2
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;socketReader had to be restarted in order to send the queued messages.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fred</dc:creator><pubDate>Wed, 03 Sep 2014 17:04:14 -0000</pubDate><guid>https://sourceforge.netb998ab86dbaa0a6a5ac4170405f33f572f56fea0</guid></item><item><title>#10 Can't configure File to socket mode</title><link>https://sourceforge.net/p/hl7socketreader/bugs/10/?limit=25#fd4c</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;labels&lt;/strong&gt;:  --&amp;gt; config&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: unread --&amp;gt; open-accepted&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;assigned_to&lt;/strong&gt;: Sebastian Weigmann&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sebastian Weigmann</dc:creator><pubDate>Fri, 29 Aug 2014 13:14:23 -0000</pubDate><guid>https://sourceforge.netb954293b776dc914366f88f75d6564766690ca8b</guid></item></channel></rss>