Commit Graph

247 Commits

Author SHA1 Message Date
Benjamin Sergeant afed387bcf Socket Factory has only one function which works for server and client code, and can do tls for both 2019-09-30 22:06:46 -07:00
Benjamin Sergeant 845bbc5208 all ws subcommands propagate tls options to servers (unimplemented) or ws or http client (implemented) (contributed by Matt DeBoer) 2019-09-30 18:21:20 -07:00
Benjamin Sergeant a1f3c40a2d ws has a --version option 2019-09-30 17:31:33 -07:00
Benjamin Sergeant 1fdbc2bc22 bump version number 2019-09-29 22:10:07 -07:00
Benjamin Sergeant 7939f7ad50 docs: WITH_TLS => USE_TLS 2019-09-29 21:31:13 -07:00
Matt DeBoer 8bfc3c5ea6 document basic usage 2019-09-29 21:29:28 -07:00
Benjamin Sergeant f6bf2531bb Add ability to use OpenSSL on apple platforms. 2019-09-29 15:34:58 -07:00
Benjamin Sergeant 0ee675e554 ixcobra / fix crash in CobraConnection::publishNext when the queue is empty + handle CobraConnection_PublishMode_Batch in CobraMetricsThreadedPublisher 2019-09-28 10:36:47 -07:00
Benjamin Sergeant 4cd11fdbc7 mbedtls fixes / the unittest now pass on macOS, and hopefully will on Windows/AppVeyor as well. 2019-09-27 14:07:01 -07:00
Benjamin Sergeant 658650cf24 http server: in redirect mode, POST request are given a 200 status code and an empty response 2019-09-26 09:27:27 -07:00
Benjamin Sergeant 8a662b35e1 Http server: add options to ws https to redirect all requests to a given url. 2019-09-26 09:10:30 -07:00
Benjamin Sergeant 3cd7c0194f Stop having ws send subcommand send a binary message in text mode, which would cause error in make ws_test shell script test 2019-09-25 15:39:43 -07:00
Benjamin Sergeant 05f29639e5 fix doc 2019-09-24 15:42:28 -07:00
Benjamin Sergeant 94c589f696 Fix 2 race conditions detected with TSan, one in CobraMetricsPublisher::push and another one in WebSocketTransport::sendData (that one was bad). 2019-09-24 11:46:54 -07:00
Benjamin Sergeant ceb0c602c9 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. 2019-09-23 21:04:01 -07:00
Benjamin Sergeant 041fa3e340 compiled fixes on mac and windows 2019-09-22 18:43:57 -07:00
Benjamin Sergeant ed4be773a2 Fix crash in the Linux unittest in the HTTP client code, in Socket::readBytes. 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. 2019-09-21 09:23:58 -07:00
Benjamin Sergeant 47b3368f78 In DNS lookup code, make sure the weak pointer we use lives through the expected scope (if branch) 2019-09-19 12:51:11 -07:00
Benjamin Sergeant 20ce498d23 On error while doing a client handshake, additionally display port number next to the host name 2019-09-17 12:08:52 -07:00
Benjamin Sergeant e2121d809e fix unittest warnings + remove trailing spaces 2019-09-12 11:43:52 -07:00
Benjamin Sergeant 65c5c5f894 update ws CLI11 (our command line argument parsing library) to the latest, which fix a compiler bug about optional 2019-09-09 21:25:33 -07:00
Benjamin Sergeant 64d3c99f99 improve some websocket error messages + add a utility function with unittest to parse status line and stop using scanf which triggers warnings on Windows 2019-09-09 21:23:57 -07:00
Benjamin Sergeant fb271953f7 websocket and http server: server does not close the bound client socket in many cases 2019-09-09 16:48:26 -07:00
Benjamin Sergeant 7080c5679f move poll wrapper on top of select (only used on Windows) to the ix namespace 2019-09-08 11:15:08 -07:00
Benjamin Sergeant 427db5bd59 Fix Windows CI with appveyor (#110)
Fix windows CI with appveyor + minor tweaks.
2019-09-07 14:07:00 -07:00
Benjamin Sergeant 37a7b362d8 add cobra metrics publisher + server unittest 2019-09-05 21:57:05 -07:00
Benjamin Sergeant 24b2475b11 ws snake (cobra simple server) add basic support for unsubscription + subscribe send the proper subscription data + redis client subscription can be cancelled 2019-09-05 20:28:34 -07:00
Benjamin Sergeant 2defe6f597 IXCobraConnection / pdu handlers can crash if they receive json data which is not an object 2019-09-05 20:24:42 -07:00
Benjamin Sergeant 003afc8b56 all client autobahn test should pass ! last failing one was ...
+- 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)
2019-09-04 21:01:30 -07:00
Benjamin Sergeant 95a97a197a 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)
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)
2019-09-04 18:23:56 -07:00
Benjamin Sergeant eccd8b3c0e ws autobahn / use condition variables for stopping test case + add more logging on errors 2019-09-04 12:21:54 -07:00
Benjamin Sergeant a43046c921 ws autobahn / report progress with spdlog::info to get timing info 2019-09-04 10:16:32 -07:00
Benjamin Sergeant 0bf185e143 Per message deflate/compression: handle fragmented messages (fix autobahn test: 12.1.X and probably others) 2019-09-03 17:42:48 -07:00
Benjamin Sergeant da3d134be0 Receiving invalid UTF-8 TEXT message should fail and close the connection (fix remaining autobahn test: 6.X UTF-8 Handling) 2019-09-03 16:07:48 -07:00
Benjamin Sergeant fdd1ad9b17 Validate close codes. Autobahn 7.9.* 2019-09-03 15:43:16 -07:00
Benjamin Sergeant 1be8d9d46f Validate that the close reason is proper utf-8. Autobahn 7.5.1 2019-09-03 14:35:40 -07:00
Benjamin Sergeant 51799353a6 Sending invalid UTF-8 TEXT message should fail and close the connection (fix remaining autobahn test: 6.X UTF-8 Handling) 2019-09-03 14:12:40 -07:00
Benjamin Sergeant 3ad13a592d Framentation: data and continuation blocks received out of order (fix autobahn test: 5.9 through 5.20 Fragmentation) 2019-09-03 12:02:56 -07:00
Benjamin Sergeant 55934918ff Sending invalid UTF-8 TEXT message should fail and close the connection (fix **tons** of autobahn test: 6.X UTF-8 Handling) 2019-09-03 10:30:22 -07:00
Benjamin Sergeant ab93e4f168 Message type (TEXT or BINARY) is invalid for received fragmented messages (fix autobahn test: 5.3 through 5.8 Fragmentation) 2019-09-03 09:13:38 -07:00
Benjamin Sergeant cbe3e7617c Ping and Pong messages cannot be fragmented (autobahn test: 5.1 and 5.2 Fragmentation) 2019-09-02 10:13:40 -07:00
Benjamin Sergeant 94c8966e86 Close connections when reserved bits are used (autobahn test: 3 Reserved Bits) 2019-09-01 16:23:00 -07:00
Benjamin Sergeant d973a062c2 changelog 2019-09-01 11:39:00 -07:00
Benjamin Sergeant b5b0de2083 +add utf-8 validation code, not hooked up properly yet
+ws autobahn / Add code to test websocket client compliance with the autobahn test-suite
+Ping received with a payload too large (> 125 bytes) trigger a connection closure
+cobra / add tracking about published messages
+cobra / publish returns a message id, that can be used when
+cobra / new message type in the message received handler when publish/ok is received (can be used to implement an ack system).
2019-08-31 16:47:10 -07:00
Benjamin Sergeant 7a73ec7c06 New option to cap the max wait between reconnection attempts. Still default to 10s. (setMaxWaitBetweenReconnectionRetries) (#108) 2019-08-30 12:46:35 -07:00
Benjamin Sergeant 225b7d7db7 doc / bring back detailed APIs 2019-08-26 22:11:35 -07:00
Benjamin Sergeant 56def6def4 Add md doc made with mkdocs 2019-08-26 21:25:45 -07:00