Benjamin Sergeant
ce9db42c23
socket polling / handle more error case such as hanged socket
2020-01-09 12:26:57 -08:00
Benjamin Sergeant
a844dbc587
websocket closing / handle failure to flush send buffer as an error case
2020-01-09 12:17:37 -08:00
Benjamin Sergeant
fe29579755
refactor receiving socket code in its own method
2020-01-09 12:00:42 -08:00
Matthew Albrecht
b816f1fbda
Allow custom OpenSSL lib, only include openssl/x509v3.h when used. ( #143 )
...
* Allow custom OpenSSL lib, only include openssl/x509v3.h when used.
Using fnmatch on Unix systems, PathMatchSpecA is the best WINAPI equivalent.
* Moved shlwapi into WIN32 block.
2020-01-08 13:57:57 -08:00
Matthew Albrecht
d72d516a92
Fixed build error with vcpkg installed. ( #141 )
2020-01-07 10:40:36 -08:00
Benjamin Sergeant
f6c482c65d
(apple ssl) unify read and write ssl utility code
2020-01-06 15:19:14 -08:00
Benjamin Sergeant
dec8a2b9ab
apple ssl: aesthetic change (get rid of yoda comparisons/conditionals)
2020-01-06 14:45:05 -08:00
Benjamin Sergeant
a5bc39be55
(websocket client) better error propagation when errors are detected while sending data + (ws send) detect failures to send big files, terminate in those cases and report error (troubleshooting #140 )
2020-01-06 14:34:43 -08:00
Benjamin Sergeant
f56098dd4c
(ws send) add option (-x) to disable per message deflate compression
2020-01-04 15:08:36 -08:00
Benjamin Sergeant
31682f5f2d
(ws send + receive) handle all message types (ping + pong + fragment) / investigate #140
2020-01-04 13:45:07 -08:00
Benjamin Sergeant
2eece1d11a
correct version number
2019-12-30 22:14:53 -08:00
Benjamin Sergeant
5ba05212ec
tag version
2019-12-30 17:17:28 -08:00
James Tyra
9e457871b4
Update IXSocketMbedTLS.cpp ( #139 )
...
fix bug with mbedtls server certificate loading.
2019-12-30 16:11:34 -08:00
James Tyra
b5481262fb
Update IXSocketMbedTLS.cpp ( #138 )
...
fix bug just introduced.
mbedstl_pk_setup() gets automatically called later.
2019-12-30 15:14:50 -08:00
James Tyra
98e98f083e
[2nd try] Update IXSocketMbedTLS.cpp ( #137 )
...
* Update IXSocketMbedTLS.cpp
fix initialization of mbedtls context.
without this, crashes under certain conditions.
* Update IXSocketMbedTLS.cpp
removed newline on 46
2019-12-30 14:38:25 -08:00
Benjamin Sergeant
d60777b9cc
clang-format
2019-12-30 08:46:18 -08:00
Benjamin Sergeant
8b5e42fe84
(ws cobra to sentry/statsd) fix for handling null events properly for empty queues + use queue to send data to statsd
2019-12-28 17:28:05 -08:00
Benjamin Sergeant
d89d152ad7
(ws cobra to sentry) handle null events for empty queues
2019-12-28 10:16:18 -08:00
Benjamin Sergeant
47a3736b24
(ws cobra to sentry) game is picked in a fair manner, so that all games get the same share of sent events
2019-12-27 19:10:15 -08:00
Benjamin Sergeant
1cd7cf340a
(ws cobra to sentry) refactor queue related code into a class
2019-12-27 18:24:45 -08:00
Benjamin Sergeant
3a25a05d9c
(ws cobra to sentry) bound the queue size used to hold up cobra messages before they are sent to sentry. Default queue size is a 100 messages. Without such limit the program runs out of memory when a subscriber receive a lot of messages that cannot make it to sentry
2019-12-25 22:15:57 -08:00
Benjamin Sergeant
d2acfd5d1f
(ws client) use correct compilation defines so that spdlog is not used as a header only library (reduce binary size and increase compilation speed)
2019-12-25 09:03:57 -08:00
Benjamin Sergeant
9dfcd8ea69
(ws client) all commands use spdlog instead of std::cerr or std::cout for logging
2019-12-24 21:55:34 -08:00
Benjamin Sergeant
ee65f95fe3
(cobra client) send a websocket ping every 30s to keep the connection opened
2019-12-24 17:16:41 -08:00
Benjamin Sergeant
b9cc6d7e23
(tls / apple) minor refactoring, move functions out of the anonymous namespace to become static member functions
2019-12-23 16:30:38 -08:00
Benjamin Sergeant
1e97e5e536
socket tls options: display ciphers
2019-12-23 12:25:25 -08:00
Benjamin Sergeant
ff489515be
v7.6.4
2019-12-22 20:32:10 -08:00
Benjamin Sergeant
536a502b60
(client) error handling, quote url in error case when failing to parse on
2019-12-22 20:30:29 -08:00
Benjamin Sergeant
d7318f97e6
(tls) add a simple description of the TLS configuration routine for debugging
2019-12-20 15:18:04 -08:00
Benjamin Sergeant
d1a4cab134
(mbedtls) correct support for using own certificate and private key
2019-12-20 15:13:26 -08:00
Benjamin Sergeant
8e7d310439
(ws commands) in websocket proxy, disable automatic reconnections + in Dockerfile, use alpine 3.11
2019-12-20 09:51:21 -08:00
Benjamin Sergeant
4e240e4992
formatting
2019-12-19 19:13:55 -08:00
Benjamin Sergeant
626e190d91
(cobra-to-sentry) capture application version from device field
2019-12-18 15:41:59 -08:00
Benjamin Sergeant
494f408320
(tls) Experimental TLS server support with mbedtls (windows) + process cert tlsoption (client + server)
2019-12-18 11:51:02 -08:00
Benjamin Sergeant
299afc1425
(tls servers) Make it clear that apple ssl and mbedtls backends do not support SSL in server mode
2019-12-18 10:43:05 -08:00
Benjamin Sergeant
0679b6399f
(tls options client) TLSOptions struct _validated member should be initialized to false
2019-12-17 14:10:28 -08:00
Benjamin Sergeant
862f8ea2d4
(websocket client) improve the error message when connecting to a non websocket server
2019-12-16 17:57:43 -08:00
Benjamin Sergeant
cae016564e
(server) attempt at fixing #131 by using blocking writes in server mode
2019-12-12 12:17:29 -08:00
Benjamin Sergeant
e223f8fac2
(ws) cobra to sentry - created events with sentry tags based on tags present in the cobra messages
2019-12-11 17:28:11 -08:00
Benjamin Sergeant
ba4cf75e0f
(mac) convert SSL errors to utf8
2019-12-06 16:45:49 -08:00
Benjamin Sergeant
0b2d816320
(ws) cobra to sentry. Handle Error 429 Too Many Requests and politely wait before sending more data to sentry
2019-12-05 15:59:29 -08:00
Benjamin Sergeant
18386ae66f
(ws) #125 / fix build problem when jsoncpp is not installed locally
2019-12-03 17:18:16 -08:00
Benjamin Sergeant
5c5ea6dec1
(ws) #125 / cmake detects an already installed jsoncpp and will try to use this one if present
2019-12-03 16:01:46 -08:00
Benjamin Sergeant
c91a0d2a35
(http client) use std::unordered_map instead of std::map for HttpParameters and HttpFormDataParameters class aliases
2019-12-03 09:25:00 -08:00
Benjamin Sergeant
d465511812
[ #113 ] Mention StreamSSL as an example windows schannel implementation
2019-12-03 09:22:27 -08:00
Benjamin Sergeant
6b98694caa
(client) internal IXDNSLookup class requires a valid cancellation request function callback to be passed in
2019-12-02 14:52:19 -08:00
Benjamin Sergeant
d82e05f72d
(client) fix an overflow in the exponential back off code
2019-12-02 13:51:45 -08:00
Benjamin Sergeant
a0d5f37402
(http client) Add support for multipart HTTP POST upload + (ixsentry) Add support for uploading a minidump to sentry
2019-11-25 21:11:11 -08:00
Benjamin Sergeant
155bbfa984
On Darwin SSL, add ability to skip peer verification.
2019-11-20 13:58:08 -08:00
Benjamin Sergeant
89aae8b344
bump version for 32-bit fix
2019-11-20 11:35:07 -08:00
fcojavmc
708969c126
Compile bug ( #122 )
...
* 1) IXWebSocketTransport: BUG: int type has no warranty of number of bits. It depends on compiler and architecture. In my system (64 bit) is 32 bit.
1 << 63 is bad idea in this case because the final number is 0 by overflow.
The symptom observed is that the server can't receive messages.
2) IXSocketFactory: Compilation Warning: Variable not in use.
* Better aproach suggested by Benjamin.
2019-11-20 11:12:24 -08:00
Benjamin Sergeant
cc492bf1a3
add a python websocket proxy which works on Linux, while ws proxy_server does not
2019-11-18 13:46:11 -08:00
Benjamin Sergeant
16c6f08e2d
fix android build + proxy work
2019-11-16 06:51:53 -08:00
Benjamin Sergeant
6e9f27d63c
bump version
2019-11-15 17:19:06 -08:00
Benjamin Sergeant
b07827790f
check max frame size ( #119 )
2019-10-28 21:53:31 -07:00
Benjamin Sergeant
c3a619f114
Add client support for websocket subprotocol. Look for the new addSubProtocol method for details
2019-10-13 13:37:34 -07:00
Benjamin Sergeant
128545cc2b
OpenSSL: add an extra cipher to the default cipher set, which let us connect to wss//echo.websocket.org
2019-10-10 09:37:27 -07:00
Benjamin Sergeant
852bf452b6
Freebsd ( #117 )
...
* add file
* CMake freebsd fix
2019-10-09 17:00:32 -07:00
Benjamin Sergeant
b38e80f846
(freebsd compile fix) add some missing socket related headers
2019-10-09 15:38:40 -07:00
Benjamin Sergeant
1f8944852a
bump version
2019-10-01 16:01:32 -07:00
Benjamin Sergeant
95dd03b298
Add mbed tls version in user agent string + set user agent properly when enabling openssl on macOS
2019-10-01 15:58:35 -07:00
Benjamin Sergeant
a0cfaff528
Implement SSL server with OpenSSL backend / still flaky
2019-10-01 15:43:37 -07:00
Benjamin Sergeant
d6542383ed
Add --tls option to pass to ws server command, to enable/disable tls
2019-10-01 13:54:46 -07:00
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
313949f087
SocketServer::handleConnection takes an std::shared_ptr<Socket> instead of a file descriptor
2019-09-30 21:48:55 -07:00
Benjamin Sergeant
e5c8e2e7f4
openSSLHandshake -> openSSLClientHandshake
2019-09-30 21:24:25 -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
7a26ff4de8
clang-format
2019-09-30 17:52:39 -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
55141aa875
ws curl + http client tls option handling + ca cert processing for mbedtls
2019-09-29 21:13:11 -07:00
Benjamin Sergeant
4e4792d6dc
update copyright dates and authors
2019-09-29 20:09:51 -07:00
Benjamin Sergeant
2aca019d84
openssl client: handle TLS options
2019-09-29 20:07:53 -07:00
Benjamin Sergeant
d1fb34694c
SocketTLSOptions: more methods (contributed by Matt DeBoer)
2019-09-29 17:35:18 -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
6762978ddf
http server unittest + refactoring
2019-09-26 09:45:59 -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
d3cee46e93
wrong mutex being used ...
2019-09-24 14:10:41 -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
169e225ccd
fix warning + add redis server logging
2019-09-23 21:14:20 -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
cd3c9d879c
reformat everything with clang-format
2019-09-23 10:25:23 -07:00
Benjamin Sergeant
398c4fbf99
fix unittest
2019-09-22 19:40:33 -07:00
Benjamin Sergeant
6f76fea188
compile fixes
2019-09-22 18:52:57 -07:00
Benjamin Sergeant
041fa3e340
compiled fixes on mac and windows
2019-09-22 18:43:57 -07:00
Matt DeBoer
408ee41990
WIP: support configurable certificates/keys, and root trust CAs ( #114 )
...
* wip: tls options implemented in openssl
* update naming, remove #define guard
* assert compiled with USE_TLS for tls options
* apply autoformatter
* include tls options impl
* style cleanup; auto ssl_err
* ssl_err -> sslErr
* be explicit about SSL_VERIFY_NONE
2019-09-22 18:06:15 -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
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
f9dc460325
cobra publish fix
2019-09-05 14:31:28 -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
a43046c921
ws autobahn / report progress with spdlog::info to get timing info
2019-09-04 10:16:32 -07:00