Commit Graph

89 Commits

Author SHA1 Message Date
Benjamin Sergeant 6d900b8ffb bring back socket mutex which is needed, some CI failures are happening without it 2019-05-16 15:58:20 -07:00
Benjamin Sergeant 5a2c070898 disable socket mutex usage in WebSocketTransport 2019-05-16 15:46:32 -07:00
Benjamin Sergeant 309ed80446 Add constants for closing code and messages 2019-05-16 12:46:53 -07:00
Benjamin Sergeant 243f41bf28 use a regular mutex instead of a recursive one + stop properly 2019-05-15 19:26:02 -07:00
Benjamin Sergeant 12fe55905c enum class HttpErrorCode derives from int 2019-05-15 16:50:00 -07:00
Benjamin Sergeant 5ad15fad8b recursive mutex + enable test that was breaking on Ubuntu Xenial + gcc + tsan 2019-05-15 16:01:05 -07:00
Benjamin Sergeant e0d9a16985 more protection against socket when closing 2019-05-15 15:18:46 -07:00
Kumamon38 27bf1684cb 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-13 09:08:46 -07:00
Dimon4eg be2aee3354 fix for Windows (#69)
* fix for Windows

* fix condition

* make condition only on Windows
2019-05-12 22:21:56 -07: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
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 16e5b08a0f Remove redundant iostream includes (#60) 2019-05-08 13:33:21 -07:00
Dimon4eg 979ff60a6b Use LUrlParser to fix issue of Windows (#53)
LGTM
2019-05-06 14:45:02 -07:00
Dimon4eg 4d83dab4f3 Fix for windows (#50) 2019-05-06 09:13:42 -07:00
Benjamin Sergeant b5aae88a0b remove un-needed _backgroundThreadRunning variable 2019-05-01 11:09:25 -07:00
Benjamin Sergeant e251c81d43 fix indentation of greatestCommonDivisor 2019-04-25 16:21:36 -07:00
Kumamon38 28210ee31d add boolean and add missing protocol error close constant (#41) 2019-04-23 04:31:55 -07:00
Benjamin Sergeant 7df7453365 indentation / comestic changes 2019-04-19 16:57:38 -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 52f460f66d (doc) Add more doc to SocketServer 2019-04-17 20:36:26 -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
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 5b6fdb6526 cleanup, remove dead method 2019-03-21 10:06:59 -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 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 b91dc77d6f select interrupt cleanup 2019-03-14 18:37:38 -07:00
Benjamin Sergeant 9d245add9c set a default close reason string 2019-03-14 14:52:51 -07:00
Benjamin Sergeant ded03ed743 do not busy loop while sending 2019-03-14 14:48:08 -07:00
Benjamin Sergeant 5b4354a6f3 send optimization + ws file transfer test 2019-03-14 14:47:53 -07:00
Benjamin Sergeant 08c2cdbf1d send can fail silently when sending would block (EWOULDBLOCK return for send) (#18)
* try to use a pipe for communication

* flush send buffer on the background thread

* cleanup

* linux fix / linux still use event fd for now

* cleanup
2019-03-13 23:09:45 -07:00
Benjamin Sergeant dedbeb3eab websocket send: make sure all data in the kernel buffer is sent 2019-03-11 22:16:55 -07:00
Benjamin Sergeant d88bf16500 add new message type when receiving message fragments 2019-03-11 11:12:43 -07:00
Benjamin Sergeant 0c226c7629 readBytes does not read bytes one by one but in chunks 2019-03-02 21:11:16 -08:00