Benjamin Sergeant
7740028291
all derived class use final keyword
2019-05-12 11:43:21 -07:00
dimon4eg
7369e9c233
add setOnMessageCallback with r-value
2019-05-12 20:59:18 +03:00
dimon4eg
8c66825a78
correct style
2019-05-12 20:16:02 +03:00
dimon4eg
a56f8272a9
fix warnings
2019-05-12 20:05:28 +03:00
dimon4eg
e846ca392f
update comment
2019-05-12 20:00:15 +03:00
dimon4eg
97617ced4a
Added WebSocketMessageQueue
2019-05-12 01:49:06 +03:00
Dimon4eg
99a3bbc4f9
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
2254421ead
minor improvements ( #66 )
...
* minor improvements
* fix build
* improve tests code
2019-05-11 12:20:58 -07:00
Benjamin Sergeant
4934f5846b
minor tweaks to have full feature parity before unittest broke
2019-05-11 11:54:21 -07:00
Benjamin Sergeant
c8c1aabf20
fix race condition in SelectInteruptPipe, where _fildes are not protected (caught by fedora tsan)
2019-05-11 11:45:26 -07:00
Dimon4eg
93b901a286
remove more iostream includes ( #65 )
2019-05-11 11:27:58 -07:00
Benjamin Sergeant
518a445074
rename some variables, minor cleanup
2019-05-11 10:24:28 -07:00
dimon4eg
d49b1bd78a
fix crash on close
2019-05-11 10:15:22 -07:00
Dimon4eg
bd96050d84
fix crash on close
2019-05-11 10:12:33 -07:00
Dimon4eg
2a90ad9e53
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
3df142db7a
Improve calculateRetryWaitMilliseconds ( #63 )
...
* improve calculateRetryWaitMilliseconds
* update comment
2019-05-10 12:31:21 -07:00
Benjamin Sergeant
f90fc4bfa2
fix static analyzer thing with un-used variable
2019-05-09 16:57:58 -07:00
Benjamin Sergeant
dc1f9fb243
use spdlog for logging in ws + unittest + remove un-needed mutex
2019-05-09 15:30:44 -07:00
tiwariashish86
b1d13105e7
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
1eb98cc74f
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
a69408fa25
rename ptr
2019-05-09 01:05:47 +03:00
dimon4eg
75011d0b4e
simplify bindWebsocket
2019-05-09 00:23:16 +03:00
dimon4eg
28ae70ed20
use lock_guard
2019-05-09 00:20:26 +03:00
dimon4eg
2727d39fa4
update comments
2019-05-09 00:16:37 +03:00
dimon4eg
467f99b3bb
Rename to WebSocketMessageQueue
2019-05-09 00:09:51 +03:00
Dimon4eg
16e5b08a0f
Remove redundant iostream includes ( #60 )
2019-05-08 13:33:21 -07:00
Dimon4eg
636a69e9e1
qf
2019-05-08 22:24:39 +03:00
Dimon4eg
45d40dc159
Added IXWebSocketPoll class
2019-05-08 22:02:56 +03:00
Dimon4eg
88abb79a96
set thread name for Windows ( #57 )
2019-05-08 07:43:43 -07:00
Dimon4eg
979ff60a6b
Use LUrlParser to fix issue of Windows ( #53 )
...
LGTM
2019-05-06 14:45:02 -07:00
Dimon4eg
ea2e8f0787
added tests for IXUrlParser ( #52 )
...
* added tests for IXUrlParser
* add me as author
2019-05-06 12:47:15 -07:00
Benjamin Sergeant
3893c12054
socket server / used wrong mutex to protect _connectionsThreads
2019-05-06 12:24:20 -07:00
Dimon4eg
8ad47a315b
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
4d83dab4f3
Fix for windows ( #50 )
2019-05-06 09:13:42 -07:00
Benjamin Sergeant
28a7ec4f35
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
b5aae88a0b
remove un-needed _backgroundThreadRunning variable
2019-05-01 11:09:25 -07:00
Benjamin Sergeant
bee97237d9
Make AutomaticReconnection optional ( #47 )
...
* unittest pass + commands behave as expected
* cleanup
2019-04-29 21:12:34 -07:00
Benjamin Sergeant
8c8e950455
build fix
2019-04-29 20:54:00 -07:00
Benjamin Sergeant
ad8b344298
tsan fixes on ubuntu xenial (what travis run)
2019-04-29 20:48:16 -07:00
Benjamin Sergeant
6d310d417a
dns lookup: fix race condition accessing _errMsg
2019-04-29 19:29:27 -07:00
Benjamin Sergeant
9dca893ce7
tsan linux tentative fix / copy string instead of passing a const reference
2019-04-29 17:27:53 -07:00
Benjamin Sergeant
e3444e666b
rename _blocking to _backgroundThreadRunning and invert the naming
2019-04-29 16:54:08 -07:00
Alexandre Konieczny
e37e69311b
fix data race on _thread
2019-04-29 16:46:16 -07:00
Alexandre Konieczny
6918f863b1
fix data race on _useMask
2019-04-29 16:41:34 -07:00
Benjamin Sergeant
1c7c07e128
initialize netSystem (aka winsock on windows) explicitely
2019-04-25 16:38:15 -07:00
Dimon4eg
4fbc4e3be9
Fixes for windows ( #45 )
...
* init Net system on Windows
* propagate DNS error
* Add zlib 1.2.11 sources
* link zlib statically for windows
* remove not implemented function declaration
* fix connect on Windows
2019-04-25 16:26:53 -07:00
Benjamin Sergeant
e251c81d43
fix indentation of greatestCommonDivisor
2019-04-25 16:21:36 -07:00
Benjamin Sergeant
f30a5074ab
Remove commented code
2019-04-25 16:16:52 -07:00
Benjamin Sergeant
f6ae490723
Fix data race in WebSocket where _url is accessed without protection in setThreadName
...
Also fix with url usage + docker container uses fedora and works with tsan
2019-04-25 16:11:46 -07:00
Benjamin Sergeant
a443bbdf80
Fix data races in DNSLookup (tsan)
2019-04-24 21:53:31 -07:00
Benjamin Sergeant
26ee46b246
better server termination / another try at preventing thread join failures
2019-04-24 09:45:53 -07:00
Kumamon38
28210ee31d
add boolean and add missing protocol error close constant ( #41 )
2019-04-23 04:31:55 -07:00
Benjamin Sergeant
323684efff
(server) attempt to fix broken macOS unittest on travis CI
2019-04-22 09:36:16 -07:00
Benjamin Sergeant
7df7453365
indentation / comestic changes
2019-04-19 16:57:38 -07:00
Benjamin Sergeant
662f66e501
(socket server) wait for all connections threads to be terminated before exiting stop method
2019-04-19 16:31:33 -07:00
Benjamin Sergeant
cce759b8dd
fix Linux cast warning
2019-04-19 15:03:49 -07:00
Benjamin Sergeant
5370201df8
add locks around Socket::send and Socket::recv to see if it helps with thread sanitizer error in Linux CI
2019-04-19 14:28:51 -07:00
Benjamin Sergeant
a2d170f415
fix bad merge in IXWebSocketTransport.cpp ...
2019-04-19 09:41:16 -07:00
Benjamin Sergeant
03f762db86
Socket::Poll does not need a callback
2019-04-19 09:32:49 -07:00
Kumamon38
aea859af52
Ping timeout use constant ( #36 )
...
* use constant for ping timeout
* change close code types
2019-04-19 09:16:25 -07:00
Kumamon38
5682129b1d
fix close code/reason issue ( #34 )
...
* fix close code/reason issue
* added code 1006 for abnormal closure
2019-04-18 10:02:31 -07:00
Kumamon38
c3431f19bf
Real ping ( #32 )
...
* close method change and fix code
* missing mutex
* wip
* renaming and fixes
* renaming, fixes
* added enablePong/disablePong, add tests
* added new test cases
* add 1 test case
* fix gcd name to greatestCommonDivisor
* move ping and ping timeout checks into socket poll, local var in test cases and indent fixes
* indent issue
2019-04-18 09:24:16 -07:00
Benjamin Sergeant
f4f60d38b8
docker + linux build fix
2019-04-17 22:52:03 -07:00
Benjamin Sergeant
4337345103
setter method does not need to return anything, make it void
2019-04-17 20:36:26 -07:00
Benjamin Sergeant
52f460f66d
(doc) Add more doc to SocketServer
2019-04-17 20:36:26 -07:00
Benjamin Sergeant
d486c72e02
websocket server: closed connection threads are joined properly
2019-04-17 20:36:26 -07:00
Benjamin Sergeant
bdfc55b951
Bug/30 server connection problem ( #31 )
...
* use threads instead of std::async, need to cleanup threads
* less buggy server connection per thread system
2019-04-16 22:19:44 -07:00
Benjamin Sergeant
b0f6026c23
make closeWireSize a default parameter of WebSocketTransport::close
2019-04-16 09:55:12 -07:00
Kumamon38
b2aca491b6
close method change and fix code ( #28 )
...
* close method change and fix code
* missing mutex
2019-04-16 08:58:34 -07:00
Dimon4eg
401fc39879
fix windows build ( #29 )
...
* fix windows build
* fix for Unix
* Fix build if TLS is OFF
* add OpenSSL req to ws
* Fix build on Mac
* fix tests for windows
2019-04-16 08:51:57 -07:00
Benjamin Sergeant
37c64841ff
fix warning
2019-04-13 21:16:04 -07:00
Benjamin Sergeant
804ec9246f
(server) fix masking bug
2019-03-22 15:33:04 -07:00
Benjamin Sergeant
f029321664
can send TEXT message (we only support BINARY messages now)
2019-03-22 14:24:22 -07:00
Benjamin Sergeant
d41b7f64e4
unmasked code is broken
2019-03-22 14:24:15 -07:00
Benjamin Sergeant
0366d1afb9
remove printf + unittest fix
2019-03-22 09:56:28 -07:00
Benjamin Sergeant
4ef3073ca4
(server) server should not mask data when sending to client (some python client libraries enforce that and assert)
2019-03-22 09:53:56 -07:00
Benjamin Sergeant
68a53aa884
(server) HTTP response is malformed
2019-03-22 09:52:19 -07:00
Benjamin Sergeant
2358b3ff26
minor cleanup
2019-03-21 13:51:25 -07:00
Benjamin Sergeant
00ed1d2817
HTTP/1.1 response should contains a reason (websocket server)
...
Fix compatibility problem with websockets python library, where the response does not contains a reason
File "/.../lib/python3.7/site-packages/websockets/http.py", line 126, in read_response
version, status_code, reason = status_line[:-2].split(b' ', 2)
ValueError: not enough values to unpack (expected 3, got 2)
The above exception was the direct cause of the following exception:
websockets.exceptions.InvalidMessage: Malformed HTTP message
2019-03-21 13:43:47 -07:00
Benjamin Sergeant
5b6fdb6526
cleanup, remove dead method
2019-03-21 10:06:59 -07:00
Benjamin Sergeant
eac611ab1e
Feature/connection state ( #25 )
...
* (cmake) add a warning about 32/64 conversion problems.
* fix typo
* New connection state for server code + fix OpenSSL double init bug
* update README
2019-03-20 18:34:24 -07:00
Benjamin Sergeant
0635313566
Feature/redis ( #23 )
...
* Fix warning
* (cmake) add a warning about 32/64 conversion problems.
* simple redis clients
* can publish to redis
* redis subscribe
* display messages received per second
* verbose flag
* (cmake) use clang only compile option -Wshorten-64-to-32 when compiling with clang
2019-03-20 14:29:02 -07:00
Michael Lu
663299c91e
Fixed heartbeat typos ( #22 )
2019-03-19 21:31:43 -07:00
Benjamin Sergeant
523a6e989a
make PollResultType an enum class
2019-03-19 09:29:57 -07:00
Benjamin Sergeant
13f4aee5ee
fix bug with isReadyToWrite
2019-03-18 22:05:04 -07:00
Benjamin Sergeant
bbc0e2106c
workaround bug in Socket::isReadyToWrite
2019-03-18 20:37:33 -07:00
Benjamin Sergeant
eb6ee52aaa
use milliseconds
2019-03-18 20:17:44 -07:00
Benjamin Sergeant
a3adc49d8c
disable sigpipe on osx when writing/reading into a dead pipe
2019-03-18 17:52:01 -07:00
Benjamin Sergeant
572a217050
no default parameters for isReadyToWrite and isReadyToRead
2019-03-18 14:31:21 -07:00
Benjamin Sergeant
d58798e36c
when trying to flush the send buffer, use select to wait until it is possible instead of using sleep to retry at a given frequency
2019-03-18 14:25:27 -07:00
Benjamin Sergeant
e158635f57
linux hangs when closing
2019-03-16 11:38:23 -07:00
Benjamin Sergeant
68e397ab34
use pipe to abort select on Linux as well as macOS
2019-03-15 17:46:40 -07:00
Benjamin Sergeant
4c78b94cd8
missing assert include on Linux
2019-03-15 11:43:27 -07:00
Benjamin Sergeant
3a9cc9b079
cleanup
2019-03-15 11:41:57 -07:00
Benjamin Sergeant
6f90425154
linux compile fix
2019-03-14 18:55:33 -07:00
Benjamin Sergeant
49ec9b1d9e
linux fixes
2019-03-14 18:54:47 -07:00
Benjamin Sergeant
a0e35ad644
build fix
2019-03-14 18:53:21 -07:00
Benjamin Sergeant
b91dc77d6f
select interrupt cleanup
2019-03-14 18:37:38 -07:00
Benjamin Sergeant
b462b5a5c8
linux build fix
2019-03-14 15:17:17 -07:00
Benjamin Sergeant
b5e7fb20b6
replace uint8_t with uint64_t for the send/close requests types / use named variable to index into the _fildes array
2019-03-14 15:03:57 -07:00