<li>Fix 2 race conditions detected with TSan, one in CobraMetricsPublisher::push and another one in WebSocketTransport::sendData (that one was bad).</li>
</ul>
<h2id="625-2019-09-23">[6.2.5] - 2019-09-23</h2>
<ul>
<li>Add simple Redis Server which is only capable of doing publish / subscribe. New ws redis_server sub-command to use it. The server is used in the unittest, so that we can run on CI in environment where redis isn not available like github actions env.</li>
</ul>
<h2id="624-2019-09-22">[6.2.4] - 2019-09-22</h2>
<ul>
<li>Add options to configure TLS ; contributed by Matt DeBoer. Only implemented for OpenSSL TLS backend for now.</li>
</ul>
<h2id="623-2019-09-21">[6.2.3] - 2019-09-21</h2>
<ul>
<li>Fix crash in the Linux unittest in the HTTP client code, in Socket::readBytes</li>
<li>Cobra Metrics Publisher code returns the message id of the message that got published, to be used to validated that it got sent properly when receiving an ack.</li>
</ul>
<h2id="622-2019-09-19">[6.2.2] - 2019-09-19</h2>
<ul>
<li>In DNS lookup code, make sure the weak pointer we use lives through the expected scope (if branch)</li>
</ul>
<h2id="621-2019-09-17">[6.2.1] - 2019-09-17</h2>
<ul>
<li>On error while doing a client handshake, additionally display port number next to the host name</li>
<li>add cobra metrics publisher + server unittest</li>
<li>add cobra client + server unittest</li>
<li>ws snake (cobra simple server) add basic support for unsubscription + subscribe send the proper subscription data + redis client subscription can be cancelled</li>
<li>IXCobraConnection / pdu handlers can crash if they receive json data which is not an object</li>
</ul>
<h2id="600-2019-09-04">[6.0.0] - 2019-09-04</h2>
<ul>
<li>all client autobahn test should pass !</li>
<li>zlib/deflate has a bug with windowsbits == 8, so we silently upgrade it to 9/ (fix autobahn test 13.X which uses 8 for the windows size)</li>
</ul>
<h2id="520-2019-09-04">[5.2.0] - 2019-09-04</h2>
<ul>
<li>Fragmentation: for sent messages which are compressed, the continuation fragments should not have the rsv1 bit set (fix all autobahn tests for zlib compression 12.X)</li>
<li>Websocket Server / do a case insensitive string search when looking for an Upgrade header whose value is websocket. (some client use WebSocket with some upper-case characters)</li>
</ul>
<h2id="519-2019-09-03">[5.1.9] - 2019-09-03</h2>
<ul>
<li>ws autobahn / report progress with spdlog::info to get timing info</li>
<li>ws autobahn / use condition variables for stopping test case + add more logging on errors</li>
<li><code>ws connect</code> add new option (-H, works like <ahref="https://stackoverflow.com/questions/356705/how-to-send-a-header-using-a-http-request-through-a-curl-call">curl</a>) to pass in extra HTTP headers when connecting</li>
<li>CobraConnection: sets a unique id field for all messages sent to <ahref="https://github.com/machinezone/cobra">cobra</a>.</li>
<li>CobraConnection: sets a counter as a field for each event published.</li>
</ul>
<h2id="506-2019-08-22">[5.0.6] - 2019-08-22</h2>
<ul>
<li>Windows: silly compile error (poll should be in the global namespace)</li>
</ul>
<h2id="505-2019-08-22">[5.0.5] - 2019-08-22</h2>
<ul>
<li>Windows: use select instead of WSAPoll, through a poll wrapper</li>
</ul>
<h2id="504-2019-08-20">[5.0.4] - 2019-08-20</h2>
<ul>
<li>Windows build fixes (there was a problem with the use of ::poll that has a different name on Windows (WSAPoll))</li>
</ul>
<h2id="503-2019-08-14">[5.0.3] - 2019-08-14</h2>
<ul>
<li>CobraMetricThreadedPublisher _enable flag is an atomic, and CobraMetricsPublisher is enabled by default</li>
</ul>
<h2id="502-2019-08-01">[5.0.2] - 2019-08-01</h2>
<ul>
<li>ws cobra_subscribe has a new -q (quiet) option</li>
<li>ws cobra_subscribe knows to and display msg stats (count and # of messages received per second)</li>
<li>ws cobra_subscribe, cobra_to_statsd and cobra_to_sentry commands have a new option, --filter to restrict the events they want to receive</li>
</ul>
<h2id="501-2019-07-25">[5.0.1] - 2019-07-25</h2>
<ul>
<li>ws connect command has a new option to send in binary mode (still default to text)</li>
<li>ws connect command has readline history thanks to libnoise-cpp. Now ws connect one can use using arrows to lookup previous sent messages and edit them</li>
</ul>
<h2id="500-2019-06-23">[5.0.0] - 2019-06-23</h2>
<h3id="changed">Changed</h3>
<ul>
<li>New HTTP server / still very early. ws gained a new command, httpd can run a simple webserver serving local files.</li>
<li>IXDNSLookup. Uses weak pointer + smart_ptr + shared_from_this instead of static sets + mutex to handle object going away before dns lookup has resolved</li>
<li>cobra_to_sentry / backtraces are reversed and line number is not extracted correctly</li>
<li>mbedtls and zlib are searched with find_package, and we use the vendored version if nothing is found</li>
<li>travis CI uses g++ on Linux</li>
</ul>
<h2id="400-2019-06-09">[4.0.0] - 2019-06-09</h2>
<h3id="changed_1">Changed</h3>
<ul>
<li>WebSocket::send() sends message in TEXT mode by default</li>
<li>WebSocketMessage sets a new binary field, which tells whether the received incoming message is binary or text</li>
<li>WebSocket::send takes a third arg, binary which default to true (can be text too)</li>
<li>WebSocket callback only take one object, a const ix::WebSocketMessagePtr& msg</li>