Commit Graph
100 Commits
Author SHA1 Message Date
Benjamin Sergeant 6762978ddf http server unittest + refactoring 2019-09-26 09:45:59 -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 5c18ffdae2 speedup base64 code by reserving memory 2019-09-24 14:17:03 -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 490fbf4cb5 try to enable more tests on windows 2019-09-23 21:52:32 -07:00
Benjamin Sergeant d46ce7eb63 fix tsan errors on macOS when running the unittest 2019-09-23 21:51:55 -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 95722e3bbb fix linux compilation error, by ordering dependant libraries properly 2019-09-23 12:32:04 -07:00
Benjamin Sergeant 1cde26771a move snake code to its own subfolder like ixcobra, ixcrypto, etc... 2019-09-23 11:46:16 -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 e7b4a985b4 fix unittest compiler warnings 2019-09-22 19:22:48 -07:00
Benjamin Sergeant 6f76fea188 compile fixes 2019-09-22 18:52:57 -07:00
Benjamin Sergeant f6b8e7f234 add gihub actions 2019-09-22 18:45:30 -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 fcdb57f31d missing file in ws tool 2019-09-19 12:51:34 -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 354c9b412e rename test file 2019-09-17 12:07:31 -07:00
Benjamin Sergeant 1c08cedd8a make test target does not try to install anything into /usr/local 2019-09-12 11:45:31 -07:00
Benjamin Sergeant e2121d809e fix unittest warnings + remove trailing spaces 2019-09-12 11:43:52 -07:00
Benjamin Sergeant 9c1065bc1b update pre-commit file 2019-09-10 22:18:16 -07:00
Benjamin Sergeant 27136bbce8 update clang format file 2019-09-10 22:17:08 -07:00
Benjamin SergeantandGitHub 427db5bd59 Fix Windows CI with appveyor (#110)
Fix windows CI with appveyor + minor tweaks.
2019-09-07 14:07:00 -07:00
Benjamin SergeantandGitHub 30b83b5ff0 Update README.md 2019-09-05 14:30:51 -07:00
Benjamin SergeantandGitHub 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 dc1aa676c4 try to activate CI on windows again 2019-06-23 18:32:18 -07:00
Benjamin Sergeant 5ae9cc1cd7 bump docker version 2019-06-23 18:17:24 -07:00
Benjamin SergeantandGitHub f84bc53c8d 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 b26e9d0338 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 dbd62b8622 cobra_to_sentry / backtraces are reversed and line number is not extracted correctly 2019-06-13 10:18:40 -07:00
Benjamin Sergeant 20c80352bf disable windows on CI for now 2019-06-10 22:10:43 -07:00
Benjamin Sergeant 9d70fb2b86 disable building ws on windows on travis 2019-06-10 22:01:19 -07:00
Benjamin Sergeant 71aad26d44 (cmake) missing find_package(Threads) on UNIX 2019-06-10 13:39:22 -07:00
Benjamin Sergeant 3a1918eb2f Add -DUSE_VENDORED_THIRD_PARTY=1 to build ws 2019-06-10 13:26:41 -07:00
Benjamin Sergeant a1709c07d9 - 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 b8c1176c79 - travis CI uses g++ on Linux 2019-06-09 14:27:45 -07:00
Benjamin Sergeant 03b5a57474 compile error in IXWebSocketMessageQTest 2019-06-09 12:25:36 -07:00
Benjamin Sergeant f58cf4826a fix IXWebSocketMessageQTest.cpp 2019-06-09 12:08:00 -07:00
Benjamin Sergeant d050cc5e13 fix changelog 2019-06-09 12:02:38 -07:00
Benjamin Sergeant 6ef88b6303 update README to reflect the new API 2019-06-09 12:02:02 -07:00
Benjamin Sergeant 3e15840b14 - 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 0d147cbd94 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 be93f7480a WebSocket callback only take one object, a const ix::WebSocketMessagePtr& msg 2019-06-09 11:33:17 -07:00
Benjamin Sergeant 2e5f24f1f8 ... 2019-06-09 10:22:27 -07:00
Benjamin Sergeant 23cf4bd59b 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 051c34bc5d 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 9623ceb4d5 ws echo_server has a -g option to print a greeting message on connect 2019-06-08 09:16:33 -07:00
Benjamin Sergeant e1a7395880 IXSocketMbedTLS: better error handling in close and connect 2019-06-06 14:59:22 -07:00
Benjamin Sergeant 51aeeca024 add a changelog 2019-06-06 13:59:12 -07:00
Benjamin Sergeant 076e8bf6a3 add an option to easily disable per message deflate compression 2019-06-06 13:48:53 -07:00
Benjamin Sergeant 73c5b9b847 fix Dockerfile link 2019-06-05 19:38:44 -07:00
Benjamin Sergeant f4f3eed78d cobra to sentry / more error handling 2019-06-05 19:37:51 -07:00
Benjamin Sergeant 89909c15bc cobra to sentry fixes 2019-06-05 18:47:48 -07:00
Benjamin SergeantandGitHub 78b3d7ff2d 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 012193c74e Fix compile error with JSON uint64_t 🚯 2019-06-04 13:45:29 -07:00
Benjamin Sergeant 539abe5151 HttpResponse is a struct, not a tuple 🉐 2019-06-03 22:12:52 -07:00
Benjamin Sergeant 7e5aba140e http / PUT fix 🐚 2019-06-03 21:12:39 -07:00
Benjamin Sergeant 6b933391e5 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 1e2a5ee21d Add simple HTTP and HTTPS client test ㊙️ 2019-06-03 12:23:35 -07:00
Benjamin Sergeant 225a5ef808 (http client) / Add DEL and PUT method, make requests and other utilities public 👐 2019-06-03 11:38:56 -07:00
Benjamin SergeantandGitHub 396d0d9bdc 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 88c8fb74bb play with podmena 2019-06-02 11:03:44 -07:00
Benjamin Sergeant fd902c7a58 add notes about mbedtls CMake 2019-06-01 18:00:25 -07:00
Benjamin SergeantandGitHub 06cbebe22e 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 ba4a9e1586 (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 285386e47f fix cobra to sentry + change ws docker file to use alpine (much smaller footprint) 2019-05-31 00:43:22 -07:00
Benjamin Sergeant c65fec7271 clang format, based on cpprest 2019-05-30 08:46:50 -07:00
Benjamin Sergeant 879a4b38aa std::chrono::duration is not initialized to 0 units of time 2019-05-26 14:16:15 -07:00
Benjamin Sergeant 13c87e38ed do not select on a closed file descriptor (doing so crash on Android) 2019-05-22 18:58:22 -07:00
Benjamin Sergeant 718154cfb4 enable IXWebSocketMessageQTest.cpp on mac and windows 2019-05-22 11:03:13 -07:00
Benjamin Sergeant d6eabae4f0 one cpu on windows for executing tests 2019-05-17 15:45:31 -07:00
Benjamin Sergeant 6bd81bb92e add back IXWebSocketMessageQueue, with its unittest disabled 2019-05-16 22:41:39 -07:00
Benjamin Sergeant 126a91dfec Linux build fix: strncpy needs <string.h> 2019-05-16 22:21:15 -07:00
Benjamin Sergeant 51fa147b99 Revert "Merge branch 'Dimon4eg-message-queue'"
This reverts commit 13fa325134, reversing
changes made to aecd5e9c94.
2019-05-16 22:15:17 -07:00
Benjamin Sergeant 6160877167 Fix Address Sanitizer heap-buffer-overflow in WebSocketHandshakeKeyGen::generate
=================================================================
==5077==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6070000077e0 at pc 0x00010ba18c54 bp 0x70000dd45b10 sp 0x70000dd45b08
READ of size 1 at 0x6070000077e0 thread T12
    #0 0x10ba18c53 in WebSocketHandshakeKeyGen::generate(char const*, char*) libwshandshake.hpp:113
    #1 0x10ba2065a in ix::WebSocketHandshake::serverHandshake(int, int) IXWebSocketHandshake.cpp:356
    #2 0x10b9c4952 in ix::WebSocketTransport::connectToSocket(int, int) IXWebSocketTransport.cpp:190
    #3 0x10b97e4c2 in ix::WebSocket::connectToSocket(int, int) IXWebSocket.cpp:193
2019-05-16 21:59:03 -07:00
Benjamin Sergeant 717f049579 Merge branch 'Dimon4eg-message-queue' 2019-05-16 19:26:45 -07:00
Benjamin Sergeant f71331056c bring back socket mutex which is needed, some CI failures are happening without it 2019-05-16 19:23:32 -07:00
Benjamin Sergeant c131ff2662 disable socket mutex usage in WebSocketTransport 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 616447e01d remove dead code 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 8c1d66bcf3 refactor connect unittest so that it hits a local server instead of a remote server 2019-05-16 19:23:32 -07:00
Benjamin Sergeant bea580b906 travis makefile fix 2019-05-16 19:23:32 -07:00
Benjamin Sergeant c513e02b24 try to run ws test on linux + macOS on travis 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 90d71deb0f Add constants for closing code and messages 2019-05-16 19:23:32 -07:00
Benjamin Sergeant fc0776303a first socket test hit a local server instead of a remote server / this can help with a windows intermittent failure 2019-05-16 19:23:32 -07:00
Benjamin Sergeant bb0c6f9a8a build ws on travis (mac + linux) 2019-05-16 19:23:32 -07:00
Benjamin Sergeant dae21e7681 use a regular mutex instead of a recursive one + stop properly 2019-05-16 19:23:32 -07:00
Benjamin Sergeant d28437ecc0 adding logging to IXWebSocketTestConnectionDisconnection makes it fails reliably 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 7fec24af67 Update README.md 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 0de3637569 Update README.md 2019-05-16 19:23:32 -07:00
Benjamin Sergeant f94c7cef59 -j option actually work ... 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 7734d63b1b unittest / add options to set the number of jobs 2019-05-16 19:23:32 -07:00
Benjamin Sergeant f894504761 enum class HttpErrorCode derives from int 2019-05-16 19:23:32 -07:00
Benjamin Sergeant 7aa9b4ee64 try to re-enable some tests 2019-05-16 19:23:32 -07:00