Commit Graph
100 Commits
Author SHA1 Message Date
Benjamin Sergeant 22b4e6a8fb 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 1ed39677ce SocketServer::handleConnection takes an std::shared_ptr<Socket> instead of a file descriptor 2019-09-30 21:48:55 -07:00
Benjamin Sergeant 562d7484e4 openSSLHandshake -> openSSLClientHandshake 2019-09-30 21:24:25 -07:00
Benjamin Sergeant 58d6e4bb26 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 0539d2df2e clang-format 2019-09-30 17:52:39 -07:00
Benjamin Sergeant e023dd9c36 ws has a --version option 2019-09-30 17:31:33 -07:00
Benjamin Sergeant a95cf727b1 bump version number 2019-09-29 22:10:07 -07:00
Benjamin Sergeant b96a65031e fix windows compile error in include/spdlog/details/pattern_formatter-inl.h 2019-09-29 22:00:57 -07:00
Benjamin Sergeant 2a838d01a7 docs: WITH_TLS => USE_TLS 2019-09-29 21:31:13 -07:00
Benjamin Sergeant 77863c0e8b unittest / specify a cacert for tls client tests 2019-09-29 21:24:22 -07:00
Benjamin Sergeant 2229159bd2 ws curl + http client tls option handling + ca cert processing for mbedtls 2019-09-29 21:13:11 -07:00
Benjamin Sergeant 89d2606b1d update copyright dates and authors 2019-09-29 20:09:51 -07:00
Benjamin Sergeant a7a41c51d9 openssl client: handle TLS options 2019-09-29 20:07:53 -07:00
Benjamin Sergeant 4de7cb191b most ws command take tls options, no-op for now (contributed by Matt DeBoer) 2019-09-29 18:29:51 -07:00
Benjamin Sergeant b3784b4c60 SocketTLSOptions: more methods (contributed by Matt DeBoer) 2019-09-29 17:35:18 -07:00
Benjamin Sergeant 816c53e3a3 ws transfer + send + receive / improved logging (contributed by Matt DeBoer) 2019-09-29 17:21:52 -07:00
Benjamin Sergeant 28c4b83ab9 Add ability to use OpenSSL on apple platforms. 2019-09-29 15:34:58 -07:00
Benjamin Sergeant 3a91894d62 update and change how we build with spdlog 2019-09-29 11:13:24 -07:00
Benjamin Sergeant 3c8cd6289b 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 06297ac756 DNS lookup test works on windows 2019-09-27 14:34:47 -07:00
Benjamin Sergeant 1b6584ccba 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 0499a80c55 Export port 8008 for Docker + test_ws.sh is /bin/sh compatible 2019-09-26 14:36:14 -07:00
Benjamin Sergeant f18980d010 http server unittest + refactoring 2019-09-26 09:45:59 -07:00
Benjamin Sergeant 2fb0ebb05b 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 7495c9ebb8 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 b26d463bad 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 f8a581aa69 fix doc 2019-09-24 15:42:28 -07:00
Benjamin Sergeant 01f3340718 speedup base64 code by reserving memory 2019-09-24 14:17:03 -07:00
Benjamin Sergeant a9b8b6decd wrong mutex being used ... 2019-09-24 14:10:41 -07:00
Benjamin Sergeant ea83327261 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 39c0fb0072 try to enable more tests on windows 2019-09-23 21:52:32 -07:00
Benjamin Sergeant 733b414b3b fix tsan errors on macOS when running the unittest 2019-09-23 21:51:55 -07:00
Benjamin Sergeant c32067013a fix warning + add redis server logging 2019-09-23 21:14:20 -07:00
Benjamin Sergeant fbf80f4ab1 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 8f8385f8f8 fix linux compilation error, by ordering dependant libraries properly 2019-09-23 12:32:04 -07:00
Benjamin Sergeant 122118196b move snake code to its own subfolder like ixcobra, ixcrypto, etc... 2019-09-23 11:46:16 -07:00
Benjamin Sergeant 6f2fe49a7b reformat everything with clang-format 2019-09-23 10:25:23 -07:00
Benjamin Sergeant b667c0ad40 fix unittest 2019-09-22 19:40:33 -07:00
Benjamin Sergeant 283cf83d47 fix unittest compiler warnings 2019-09-22 19:22:48 -07:00
Benjamin Sergeant ab1b5cd665 compile fixes 2019-09-22 18:52:57 -07:00
Benjamin Sergeant dbf6d00249 add gihub actions 2019-09-22 18:45:30 -07:00
Benjamin Sergeant d0963f4af0 compiled fixes on mac and windows 2019-09-22 18:43:57 -07:00
Benjamin Sergeant 1769199d32 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 8821183aea missing file in ws tool 2019-09-19 12:51:34 -07:00
Benjamin Sergeant a7cf151639 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 f7a12f52f8 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 1be3b8f4b1 rename test file 2019-09-17 12:07:31 -07:00
Benjamin Sergeant 0b844d8361 make test target does not try to install anything into /usr/local 2019-09-12 11:45:31 -07:00
Benjamin Sergeant 57086e28d8 fix unittest warnings + remove trailing spaces 2019-09-12 11:43:52 -07:00
Benjamin Sergeant a55d4cdb76 update pre-commit file 2019-09-10 22:18:16 -07:00
Benjamin Sergeant 40a45717db update clang format file 2019-09-10 22:17:08 -07:00
Benjamin SergeantandGitHub ae3856c10f Fix Windows CI with appveyor (#110)
Fix windows CI with appveyor + minor tweaks.
2019-09-07 14:07:00 -07:00
Benjamin SergeantandGitHub 308fda0b37 Update README.md 2019-09-05 14:30:51 -07:00
Benjamin SergeantandGitHub 06bc795133 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 08006ddd97 try to activate CI on windows again 2019-06-23 18:32:18 -07:00
Benjamin Sergeant fa4aee6ddc bump docker version 2019-06-23 18:17:24 -07:00
Benjamin SergeantandGitHub 691502d7ad Feature/httpd (#94)
* Stub code for http server

* can send a response, cannot process body yet

* write headers to the response

* remove commented code

* add simple test + set default http handler

* tweak CI + unittest

* add missing file

* rewrite http::trim in a simple way

* doc
2019-06-23 14:54:21 -07:00
Benjamin Sergeant 43deaba547 IXDNSLookup. Uses weak pointer + smart_ptr + shared_from_this instead of static sets + mutex to handle object going away before dns lookup has resolved 2019-06-19 00:43:59 -07:00
Benjamin Sergeant 2d02ae0f0c cobra_to_sentry / backtraces are reversed and line number is not extracted correctly 2019-06-13 10:18:40 -07:00
Benjamin Sergeant a8879da4fc disable windows on CI for now 2019-06-10 22:10:43 -07:00
Benjamin Sergeant 5f4a430845 disable building ws on windows on travis 2019-06-10 22:01:19 -07:00
Benjamin Sergeant b9231be305 (cmake) missing find_package(Threads) on UNIX 2019-06-10 13:39:22 -07:00
Benjamin Sergeant 7cb5cc05e4 Add -DUSE_VENDORED_THIRD_PARTY=1 to build ws 2019-06-10 13:26:41 -07:00
Benjamin Sergeant 750a752ac0 - mbedtls and zlib are searched with find_package, and we use the vendored version if nothing is found 2019-06-10 11:18:27 -07:00
Benjamin Sergeant 61e5f52286 - travis CI uses g++ on Linux 2019-06-09 14:27:45 -07:00
Benjamin Sergeant ce0b716f54 compile error in IXWebSocketMessageQTest 2019-06-09 12:25:36 -07:00
Benjamin Sergeant aae8e5ec65 fix IXWebSocketMessageQTest.cpp 2019-06-09 12:08:00 -07:00
Benjamin Sergeant 2723e8466e fix changelog 2019-06-09 12:02:38 -07:00
Benjamin Sergeant f13c610352 update README to reflect the new API 2019-06-09 12:02:02 -07:00
Benjamin Sergeant 55c65b08bf - WebSocket::send() sends message in TEXT mode by default
- WebSocketMessage sets a new binary field, which tells whether the received incoming message is binary or text
2019-06-09 11:56:47 -07:00
Benjamin Sergeant a11aa3e0dd WebSocket::send takes a third arg, binary which default to true (can be text too) 2019-06-09 11:35:31 -07:00
Benjamin Sergeant de0bf5ebcd WebSocket callback only take one object, a const ix::WebSocketMessagePtr& msg 2019-06-09 11:33:17 -07:00
Benjamin Sergeant 15369e1ae9 ... 2019-06-09 10:22:27 -07:00
Benjamin Sergeant d4115880b9 Add explicite WebSocket::sendBinary
New headers + WebSocketMessage class to hold message data, still not used across the board
2019-06-09 10:10:33 -07:00
Benjamin Sergeant 3c80c75e4a Add test/compatibility folder with small servers and clients written in different languages and different libraries to test compatibility. 2019-06-08 09:46:26 -07:00
Benjamin Sergeant 5cb72dce4c ws echo_server has a -g option to print a greeting message on connect 2019-06-08 09:16:33 -07:00
Benjamin Sergeant d2747487e3 IXSocketMbedTLS: better error handling in close and connect 2019-06-06 14:59:22 -07:00
Benjamin Sergeant 12e664fc61 add a changelog 2019-06-06 13:59:12 -07:00
Benjamin Sergeant cbf21b4008 add an option to easily disable per message deflate compression 2019-06-06 13:48:53 -07:00
Benjamin Sergeant 68c1bf7017 fix Dockerfile link 2019-06-05 19:38:44 -07:00
Benjamin Sergeant 257c901255 cobra to sentry / more error handling 2019-06-05 19:37:51 -07:00
Benjamin Sergeant 15d8c663da cobra to sentry fixes 2019-06-05 18:47:48 -07:00
Benjamin SergeantandGitHub d50125c62d Feature/http async (#90)
* unittest working / uses shared_ptr for a bunch of things 🗿

* fix command line tools

* fix ws + add doc

* add more logging
2019-06-05 17:04:24 -07:00
Benjamin Sergeant 9262880369 Fix compile error with JSON uint64_t 🚯 2019-06-04 13:45:29 -07:00
Benjamin Sergeant 2b111e8352 HttpResponse is a struct, not a tuple 🉐 2019-06-03 22:12:52 -07:00
Benjamin Sergeant a35cbdfb7c http / PUT fix 🐚 2019-06-03 21:12:39 -07:00
Benjamin Sergeant 6a41b7389f http client: stop hardcoding Accept header, and use a default value if one is passed in 👭 2019-06-03 14:02:54 -07:00
Benjamin Sergeant a187e69650 Add simple HTTP and HTTPS client test ㊙️ 2019-06-03 12:23:35 -07:00
Benjamin Sergeant fcacddbd9f (http client) / Add DEL and PUT method, make requests and other utilities public 👐 2019-06-03 11:38:56 -07:00
Benjamin SergeantandGitHub fa84ade6be Feature/ws windows (#86)
* try to build ws on window on travis 📮

* cmake invocation fixed on windows 🐝

* Can use mbedtls to calculate hmac + no openssl config option

* build only windows on travis 🕢

* run msbuild 💷

* proper command to build 🕛

* some build fixes

* change weird sizeof call 🐙

* warning and missing includes fixes 💮

* ifdef out statsd code on windows 🐍

* logic invertion in ifdef 👄

* bring back makefile 📜

* command line tool is built with mbedtls 🏥
2019-06-02 20:46:20 -07:00
Benjamin Sergeant 17eaa323ed play with podmena 2019-06-02 11:03:44 -07:00
Benjamin Sergeant 6177fe7803 add notes about mbedtls CMake 2019-06-01 18:00:25 -07:00
Benjamin SergeantandGitHub 57976cf613 Feature/mbedtls (#84)
* try to import mbedtls and build it

* add stubs socket class

* some boilterplate, read and write function implemented

* more boilterplate / current error in handshake because no CA cert is setup

* add something so skip ca verification, can ws curl https://google.com !

* cleanup / close implemented

* tweak CMakefiles

* typo in include

* update readme

* disable unittests
2019-06-01 17:41:48 -07:00
Benjamin Sergeant 977e8794ec (clang format) fix indent and make (rarely) accessor/setters in class on a single line 2019-05-31 00:53:14 -07:00
Benjamin Sergeant c68848eecc fix cobra to sentry + change ws docker file to use alpine (much smaller footprint) 2019-05-31 00:43:22 -07:00
Benjamin Sergeant c6dfb14953 clang format, based on cpprest 2019-05-30 08:46:50 -07:00
Benjamin Sergeant 5bad02ccae std::chrono::duration is not initialized to 0 units of time 2019-05-26 14:16:15 -07:00
Benjamin Sergeant 2e379cbf2a do not select on a closed file descriptor (doing so crash on Android) 2019-05-22 18:58:22 -07:00
Benjamin Sergeant 0e23584751 enable IXWebSocketMessageQTest.cpp on mac and windows 2019-05-22 11:03:13 -07:00
Benjamin Sergeant aa3f201ced one cpu on windows for executing tests 2019-05-17 15:45:31 -07:00