Benjamin Sergeant
dd0d7c268f
CobraMetricThreadedPublisher _enable flag is an atomic, and CobraMetricsPublisher is enabled by default
2019-08-14 19:54:30 -07:00
Benjamin Sergeant
b2bfccac0a
clang format
2019-08-13 10:59:18 -07:00
Benjamin Sergeant
8b8b352e61
fix #99 / Connect error descriptions are invalid
2019-08-13 10:49:11 -07:00
Benjamin Sergeant
4dd5950406
fix typo in README
2019-07-23 13:52:16 -07:00
Benjamin Sergeant
4fb268585c
dns / use cancellable instead of blocking
2019-06-30 23:26:14 -07:00
Benjamin Sergeant
3a2495c456
make IXDNSLookup more robust
2019-06-26 19:12:48 -07:00
Benjamin Sergeant
1d4d058ed0
simplify IXDNSLookup
2019-06-26 16:25:07 -07:00
Benjamin Sergeant
15a1347531
use poll instead of select in SocketServer
2019-06-25 17:18:24 -07:00
Benjamin Sergeant
4cbfa71338
switch from select to poll to deal with Android 9 giving us high socket fds when calling ::connect
2019-06-25 17:11:27 -07:00
Benjamin Sergeant
705625af0a
refactor select code + add protection against large fds (cf Android 9)
2019-06-25 15:41:39 -07:00
Benjamin Sergeant
eea42bff66
select refactoring IXSocket::select -> IXSocket::poll
2019-06-25 10:16:40 -07:00
Benjamin Sergeant
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
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
d2747487e3
IXSocketMbedTLS: better error handling in close and connect
2019-06-06 14:59:22 -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
15d8c663da
cobra to sentry fixes
2019-06-05 18:47:48 -07:00
Benjamin Sergeant
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
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 Sergeant
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
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
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
Kumamon38
49fd2a9e53
Clean ( #82 )
...
Thanks
2019-05-21 12:14:58 -07:00
Kumamon38
3990d3bcbf
fix close bug and tests : let poll do his job when closing ( #79 )
...
* let poll do his job when closing
* try fix test
* try fix test
* Update IXWebSocketTransport.cpp
* add log to find issue on CI
* add log to find issue on CI
* add log to find issue on CI
* add log to find issue on CI
* add log to find issue on CI
* change state immediately, and send close frame after
* add immediate close test
* disable test for windows
2019-05-21 09:34:08 -07:00
Benjamin Sergeant
83c261977d
add back IXWebSocketMessageQueue, with its unittest disabled
2019-05-16 22:41:39 -07:00
Benjamin Sergeant
6ca28d96bf
Linux build fix: strncpy needs <string.h>
2019-05-16 22:21:15 -07:00
Benjamin Sergeant
c4a5647b62
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
720d5593a5
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
773cbb4907
bring back socket mutex which is needed, some CI failures are happening without it
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
a696264b48
disable socket mutex usage in WebSocketTransport
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
b7db5f77fb
remove dead code
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
0e59927384
Add constants for closing code and messages
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
cdbed26d1f
use a regular mutex instead of a recursive one + stop properly
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
24a32a0603
enum class HttpErrorCode derives from int
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
09956d7500
recursive mutex + enable test that was breaking on Ubuntu Xenial + gcc + tsan
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
288b05a048
more protection against socket when closing
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
570fa01c04
close and stop with code and reason + docker = ubuntu xenial
2019-05-16 19:23:32 -07:00
Dimon4eg
2a69038c4c
add isEnabledAutomaticReconnection ( #75 )
...
* add isEnabledAutomaticReconnection
* test isEnabledAutomaticReconnection
* rename
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
0ba127e447
Revert "Revert "fix cast warning caught on windows""
...
This reverts commit 25eaf730bc
.
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
7714bdf7e0
Revert "fix cast warning caught on windows"
...
This reverts commit 4edb7447df
.
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
4e5e7ae50a
fix cast warning caught on windows
2019-05-16 19:23:32 -07:00
Benjamin Sergeant
9217b27d40
server code / add dedicated thread to close/join terminated connection threads
2019-05-16 19:23:31 -07:00
Kumamon38
dad2b64e15
save timepoints after connect and not in contructor, adjusted tests ( #72 )
...
* save timepoints after connect and not in contructor, adjusted tests
* move call into setReadyState
* more time to detect client close in test
2019-05-16 19:20:29 -07:00
Dimon4eg
e527ab1613
fix for Windows ( #69 )
...
* fix for Windows
* fix condition
* make condition only on Windows
2019-05-16 19:20:29 -07:00
dimon4eg
a41d08343c
Merge branch 'master' into message-queue
2019-05-12 22:00:10 +03:00
Benjamin Sergeant
156288b17b
all derived class use final keyword
2019-05-12 11:43:21 -07:00
dimon4eg
6467f98241
add setOnMessageCallback with r-value
2019-05-12 20:59:18 +03:00
dimon4eg
b24e4334f6
correct style
2019-05-12 20:16:02 +03:00
dimon4eg
bf8abcbf4a
fix warnings
2019-05-12 20:05:28 +03:00
dimon4eg
bb484414b1
update comment
2019-05-12 20:00:15 +03:00
dimon4eg
7c5567db56
Added WebSocketMessageQueue
2019-05-12 01:49:06 +03:00
Dimon4eg
4c4f99606e
use C++11 enums ( #67 )
...
* use C++11 enums
* small rename
* update tests
* update tests
* update ws
* update ws
* update README.md
2019-05-11 14:22:06 -07:00
Dimon4eg
a64b7b0c4a
minor improvements ( #66 )
...
* minor improvements
* fix build
* improve tests code
2019-05-11 12:20:58 -07:00
Benjamin Sergeant
0caeb81327
minor tweaks to have full feature parity before unittest broke
2019-05-11 11:54:21 -07:00
Benjamin Sergeant
edac7a0171
fix race condition in SelectInteruptPipe, where _fildes are not protected (caught by fedora tsan)
2019-05-11 11:45:26 -07:00
Dimon4eg
abfadad2e9
remove more iostream includes ( #65 )
2019-05-11 11:27:58 -07:00
Benjamin Sergeant
2dc1547bbd
rename some variables, minor cleanup
2019-05-11 10:24:28 -07:00
dimon4eg
9f4b2856b0
fix crash on close
2019-05-11 10:15:22 -07:00
Dimon4eg
b5fc10326e
fix crash on close
2019-05-11 10:12:33 -07:00
Dimon4eg
8d3a47a873
Fix crash during closing on Windows ( #64 )
...
* fix crash on close
* Improve calculateRetryWaitMilliseconds (#63 )
* improve calculateRetryWaitMilliseconds
* update comment
* cout -> spdlog
* fix crash on close
* uncomment test
* Revert "uncomment test"
This reverts commit 27df86ee8f
.
2019-05-11 09:51:26 -07:00
Dimon4eg
c28951f049
Improve calculateRetryWaitMilliseconds ( #63 )
...
* improve calculateRetryWaitMilliseconds
* update comment
2019-05-10 12:31:21 -07:00
Benjamin Sergeant
dfaaaca223
fix static analyzer thing with un-used variable
2019-05-09 16:57:58 -07:00
Benjamin Sergeant
c7f0bf3d64
use spdlog for logging in ws + unittest + remove un-needed mutex
2019-05-09 15:30:44 -07:00
tiwariashish86
f60293b2e7
Fixed pong synchronization issue ( #62 )
...
* Fixed pong synchronization issue
* Minor optimization in lock by scoping it to necessary changes.
* Fixing compilation issues
2019-05-09 15:06:05 -07:00
Kumamon38
cb1d1bfd85
fix ping, fix send frame close ( #49 )
...
* fix ping, fix send frame close
* fixes for data race on _closeCode etc. and fix test
* fixing one TC
* fix waiting forever if no time to change of readyState, and poll never end
* add 1005 code if no status code received
* fixes for 1005 code
* fix test issue
* fix macOS issue
* revert to master tests and renaming
2019-05-09 09:21:05 -07:00
dimon4eg
7ecaf1f982
rename ptr
2019-05-09 01:05:47 +03:00
dimon4eg
d0a41f3894
simplify bindWebsocket
2019-05-09 00:23:16 +03:00
dimon4eg
57562b234f
use lock_guard
2019-05-09 00:20:26 +03:00
dimon4eg
469d127d61
update comments
2019-05-09 00:16:37 +03:00
dimon4eg
d6e9b61c8e
Rename to WebSocketMessageQueue
2019-05-09 00:09:51 +03:00
Dimon4eg
fa7f0fadde
Remove redundant iostream includes ( #60 )
2019-05-08 13:33:21 -07:00
Dimon4eg
7fb1b65ddd
qf
2019-05-08 22:24:39 +03:00
Dimon4eg
77c7fdc636
Added IXWebSocketPoll class
2019-05-08 22:02:56 +03:00
Dimon4eg
2732dfd0f1
set thread name for Windows ( #57 )
2019-05-08 07:43:43 -07:00
Dimon4eg
c65cfd3d26
Use LUrlParser to fix issue of Windows ( #53 )
...
LGTM
2019-05-06 14:45:02 -07:00
Dimon4eg
8955462f73
added tests for IXUrlParser ( #52 )
...
* added tests for IXUrlParser
* add me as author
2019-05-06 12:47:15 -07:00
Benjamin Sergeant
205c8c15bd
socket server / used wrong mutex to protect _connectionsThreads
2019-05-06 12:24:20 -07:00
Dimon4eg
78198a0147
Fix windows ( #51 )
...
* More fixes for Windows
* fix tests for windows
* qf for linux
* clean up
2019-05-06 12:22:57 -07:00
Dimon4eg
753fc845ac
Fix for windows ( #50 )
2019-05-06 09:13:42 -07:00
Benjamin Sergeant
5dbc00bbfe
doc: add reference to the conan file built at https://github.com/Zinnion/conan-IXWebSocket
2019-05-01 21:31:32 -07:00
Benjamin Sergeant
14ec8522ef
remove un-needed _backgroundThreadRunning variable
2019-05-01 11:09:25 -07:00
Benjamin Sergeant
0c2d1c22bc
Make AutomaticReconnection optional ( #47 )
...
* unittest pass + commands behave as expected
* cleanup
2019-04-29 21:12:34 -07:00
Benjamin Sergeant
1d39a9c9a9
build fix
2019-04-29 20:54:00 -07:00
Benjamin Sergeant
b588ed0fa1
tsan fixes on ubuntu xenial (what travis run)
2019-04-29 20:48:16 -07:00
Benjamin Sergeant
d9f7a138b8
dns lookup: fix race condition accessing _errMsg
2019-04-29 19:29:27 -07:00
Benjamin Sergeant
d3e04ff619
tsan linux tentative fix / copy string instead of passing a const reference
2019-04-29 17:27:53 -07:00
Benjamin Sergeant
372dd24cc7
rename _blocking to _backgroundThreadRunning and invert the naming
2019-04-29 16:54:08 -07:00
Alexandre Konieczny
a9422cf34d
fix data race on _thread
2019-04-29 16:46:16 -07:00