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
c202f8cf1d
Socket code refactoring, plus stop polling with a 1s timeout in readBytes while we only want to poll with a 1ms timeout
2019-03-04 13:40:15 -08:00
Benjamin Sergeant
0c226c7629
readBytes does not read bytes one by one but in chunks
2019-03-02 21:11:16 -08:00
Benjamin Sergeant
a9e772f330
create a blocking + cancellable Socket::readBytes method
2019-03-02 15:16:46 -08:00
Benjamin Sergeant
86cc76388e
create a blocking + cancellable Socket::readBytes method
2019-03-02 11:01:51 -08:00
Benjamin Sergeant
2c86fd947f
Feature/http ( #16 )
...
* add skeleton and broken http client code.
GET returns "Resource temporarily unavailable" errors...
* linux compile fix
* can GET some pages
* Update formatting in README.md
* unittest for sending large messages
* document bug
* Feature/send large message (#14 )
* introduce send fragment
* can pass a fin frame
* can send messages which are a perfect multiple of the chunk size
* set fin only for last fragment
* cleanup
* last fragment should be of type CONTINUATION
* Add simple send and receive programs
* speedups receiving + better way to wait for thing
* receive speedup by using linked list of chunks instead of large array
* document bug
* use chunks to receive data
* trailing spaces
* Update README.md
Add note about message fragmentation.
* Feature/ws cli (#15 )
* New command line tool for transfering files / still very beta.
* add readme
* use cli11 for argument parsing
* json -> msgpack
* stop using base64 and use binary which can be stored in message pack
* add target for building with homebrew
* all CMakeLists are referenced by the top level one
* add ws_chat and ws_connect sub commands to ws
* cleanup
* add echo and broadcast server as ws sub-commands
* add gitignore
* comments
* ping pong added to ws
* mv cobra_publisher under ws folder
* Update README.md
* linux build fix
* linux build fix
* move http_client to a ws sub-command
* simple HTTP post support (urlencode parameters)
* can specify extra headers
* chunk encoding / simple redirect support / -I option
* follow redirects is optional
* make README vim markdown plugin friendly
* cleanup argument parsing + add socket creation factory
* add missing file
* http gzip compression
* cleanup
* doc
* Feature/send large message (#14 )
* introduce send fragment
* can pass a fin frame
* can send messages which are a perfect multiple of the chunk size
* set fin only for last fragment
* cleanup
* last fragment should be of type CONTINUATION
* Add simple send and receive programs
* speedups receiving + better way to wait for thing
* receive speedup by using linked list of chunks instead of large array
* document bug
* use chunks to receive data
* trailing spaces
2019-02-28 21:54:03 -08:00
Benjamin Sergeant
932bb732e0
Feature/send large message ( #14 )
...
* introduce send fragment
* can pass a fin frame
* can send messages which are a perfect multiple of the chunk size
* set fin only for last fragment
* cleanup
* last fragment should be of type CONTINUATION
* Add simple send and receive programs
* speedups receiving + better way to wait for thing
* receive speedup by using linked list of chunks instead of large array
* document bug
* use chunks to receive data
* trailing spaces
2019-02-20 18:59:07 -08:00
Benjamin Sergeant
726e66ca66
unittest for sending large messages
2019-02-16 10:32:02 -08:00
Benjamin Sergeant
8983dd97a1
use dynamically generated port number to configure servers in unittest
2019-01-28 15:24:19 -08:00
Benjamin Sergeant
907605c59c
windows build fix
2019-01-27 10:46:02 -08:00
Benjamin Sergeant
58921592c8
constexpr to declare number of fds
2019-01-26 21:01:36 -08:00
Benjamin Sergeant
b9c49c38ed
linux fix
2019-01-26 20:57:48 -08:00
Benjamin Sergeant
76c97027c8
remove shutdown call
2019-01-26 20:54:23 -08:00
Benjamin Sergeant
5db3620f49
rebase poll branch
2019-01-26 20:50:25 -08:00
Benjamin Sergeant
a2e6fa0b16
insensitive string compare when validating server connection header
2019-01-25 16:17:51 -08:00
Benjamin Sergeant
885d245afb
heartbeat correct
2019-01-25 16:11:39 -08:00
Benjamin Sergeant
75d01c0c11
close server socket on exit
2019-01-24 21:16:32 -08:00
Benjamin Sergeant
a8b6573f96
hearbeat
2019-01-24 12:42:49 -08:00
Benjamin Sergeant
121c84a2d1
check and validate the Connection: Upgrade header in client/server
2019-01-15 09:31:37 -08:00
Tony Lin
2434605c06
Fix missing upgrade header error
2019-01-15 15:35:37 +08:00
Benjamin Sergeant
a0f15bfb56
C++14 + use make_unique and make_shared to make shared pointers
2019-01-11 21:25:06 -08:00
Benjamin Sergeant
8a0afef825
check select errors better
2019-01-07 11:18:00 -08:00
Benjamin Sergeant
bf3e8195f7
DNSLookup _id member does not need to be an atomic
2019-01-06 18:32:19 -08:00
Benjamin Sergeant
bce3071a12
DNSLookup: fix #8
2019-01-06 18:27:26 -08:00
Benjamin Sergeant
911f684e4d
DNSLookup: copy hostname and port instead of accessing member
2019-01-06 18:17:12 -08:00
Benjamin Sergeant
49bc156a56
return false -> return -1
2019-01-06 18:10:39 -08:00
Benjamin Sergeant
372af54e46
remove dead file
2019-01-06 14:26:11 -08:00
Benjamin Sergeant
2f9ad54bae
gcc linux compile fix
2019-01-06 12:12:39 -08:00
Benjamin Sergeant
57c22cddb8
make a class hierarchy for server code (IXWebSocketServer <- IXSocketServer)
2019-01-06 12:09:31 -08:00
Benjamin Sergeant
60dc765178
unittest + compiler warnings
2019-01-05 21:10:08 -08:00
Benjamin Sergeant
5e1c150024
windows compile fix
2019-01-05 21:02:55 -08:00
Benjamin Sergeant
0fd06bb592
int -> ssize_t for socker recv and send
2019-01-05 20:53:50 -08:00
Benjamin Sergeant
9641c8cf49
header refactoring
2019-01-05 20:38:43 -08:00
Benjamin Sergeant
4ca31be4a2
windows connect (compile fix)
2019-01-05 17:35:50 -08:00
Benjamin Sergeant
667f18cbfe
windows connect potential fix
2019-01-05 17:32:21 -08:00
Benjamin Sergeant
4df5050760
more accurate description of errors
2019-01-05 17:18:43 -08:00
Benjamin Sergeant
b80696af00
windows (compile) fix
2019-01-05 17:04:09 -08:00
Benjamin Sergeant
3cb2f6dcf7
windows fix
2019-01-05 17:02:39 -08:00
Benjamin Sergeant
89ff9dd5ac
fix gcc warning
2019-01-05 16:26:11 -08:00
Benjamin Sergeant
e892b21872
openssl cleanup
2019-01-05 11:42:25 -08:00
Benjamin Sergeant
3eef8fba27
unittest on appveyor
2019-01-04 17:28:13 -08:00
Benjamin Sergeant
cc43357fb4
Socket::readLine works with arbitrary long lines
2019-01-03 18:47:01 -08:00
Benjamin Sergeant
bce5ef2dca
timeout is configurable
2019-01-03 18:33:08 -08:00
Benjamin Sergeant
3021ac4b95
remove useless FIXME comment
2019-01-03 18:02:03 -08:00
Benjamin Sergeant
bd1c8873d0
capture path/uri when connecting, and pass it back through callbacks in the openInfo member
2019-01-03 17:44:10 -08:00
Benjamin Sergeant
6ac3bdb94a
implement a max connections (default = 32) settings
2019-01-03 17:05:44 -08:00
Benjamin Sergeant
e964a0a1f0
correct validation of the request (request line + headers)
2019-01-03 13:41:06 -08:00
Benjamin Sergeant
97255fbd62
cancellation refactoring
2019-01-03 12:53:44 -08:00
Benjamin Sergeant
64f649d1f9
split handshake code into its own files, so that Transport file is less massive
2019-01-02 20:07:54 -08:00
Benjamin Sergeant
097c7e5397
server unittest for validating client request / new timeout cancellation handling (need refactoring)
2019-01-02 16:08:32 -08:00
Benjamin Sergeant
b1710bfa31
server per message deflate support
2019-01-02 08:12:29 -08:00
Benjamin Sergeant
2b136b2981
refactoring + cancellation was buggy during http upgrade
2019-01-02 07:45:07 -08:00
Benjamin Sergeant
b95e5e36dc
use select to detect new incoming connections
2019-01-01 22:21:07 -08:00
Benjamin Sergeant
1bc5bc7f1c
add a way to run in blocking more, which is useful for server mode to have N*thread instead of 2N*thread for N connections
2019-01-01 21:25:15 -08:00
Benjamin Sergeant
946d7015a2
more named constants
2019-01-01 19:23:27 -08:00
Benjamin Sergeant
973a3f03c3
linux fix + unittest works with Linux
2019-01-01 17:13:26 -08:00
Benjamin Sergeant
e5937638d4
crash when server failed to start
2019-01-01 16:14:46 -08:00
Benjamin Sergeant
7c4f14f941
thread accepting connections can be cancelled/stopped externally
2019-01-01 16:11:27 -08:00
Benjamin Sergeant
ead54d6c37
listen job run in its own thread, non blocking
2019-01-01 14:52:14 -08:00
Benjamin Sergeant
d279aecb87
cleanup / remove printf, add mutex, remove hardcoded values, can pass in a binding host
2019-01-01 14:28:41 -08:00
Benjamin Sergeant
67de0fc8da
use shared_ptr
2019-01-01 13:53:13 -08:00
Benjamin Sergeant
8ed2399517
unittest pass
2019-01-01 13:47:25 -08:00
Benjamin Sergeant
cf340011e2
record workers in a map instead of a vector
2018-12-31 14:52:59 -08:00
Benjamin Sergeant
3443e82812
more cleanup to propagate server connection error and let onOpen callback execute
2018-12-31 12:43:47 -08:00
Benjamin Sergeant
63138507d6
only bind to localhost
2018-12-31 11:48:49 -08:00
Benjamin Sergeant
b2eb07db14
server code has a callback that takes a websocket
2018-12-30 22:12:13 -08:00
Benjamin Sergeant
379a845166
cleanup / use a websocket instead of raw websockettransport
2018-12-30 22:00:49 -08:00
Benjamin Sergeant
266cf93584
can accept multiple connection / server can send data back to client
2018-12-30 21:16:05 -08:00
Benjamin Sergeant
0ee71e9a09
proof of concept server implementation
2018-12-29 23:15:27 -08:00
Benjamin Sergeant
ea07afcc0b
can create a socket from a fd
2018-12-29 21:53:33 -08:00
Benjamin Sergeant
43cd6d34ca
add simple unittest
2018-12-29 18:34:08 -08:00
Benjamin Sergeant
3b67032adb
add missing src files (IXSetThreadName.{cpp,h}) ...
2018-12-23 14:19:30 -08:00
Benjamin Sergeant
2d46a0605b
fix warning: field '_eventCallback' will be initialized after field '_publishMode'
2018-12-23 14:18:53 -08:00
Benjamin Sergeant
ba54664748
Fix warning: field '_done' will be initialized after field '_wait' [-Wreorder] _done(false),
2018-12-23 14:17:30 -08:00
Benjamin Sergeant
a79f4c10a1
set thread name / rename example
2018-12-23 14:14:38 -08:00
Benjamin Sergeant
bd04b28b9e
async dns lookup fix
2018-12-14 17:49:42 -08:00
Benjamin Sergeant
cbadecab33
non blocking dns lookup
2018-12-14 16:28:17 -08:00
Benjamin Sergeant
8c079787f0
add cancellation support while connecting, to speed up WebSocket::stop
2018-12-09 17:56:20 -08:00
Benjamin Sergeant
62528e6a0b
http upgrade and connections use non blocking sockets
2018-12-09 14:07:40 -08:00
Benjamin Sergeant
49bf8bd830
threading race condition fixes, detected by TSAN
2018-12-06 08:27:28 -08:00
Benjamin Sergeant
c64bc20bb5
cleanup
2018-11-14 15:52:28 -08:00
Benjamin Sergeant
54da891f79
per-message deflate compression fixes
2018-11-13 17:46:05 -08:00
Benjamin Sergeant
9cb1d03411
tweaks doc / license + send proper error code when closing the connecion
2018-11-12 09:00:55 -08:00
Benjamin Sergeant
4fed156b90
per message deflate support (with zlib)
2018-11-09 18:42:09 -08:00
Benjamin Sergeant
de8bcd36e8
(satori_publisher) better error handling
2018-11-07 14:54:44 -08:00
Benjamin Sergeant
2b203c4616
Add missing files ...
2018-11-07 12:25:38 -08:00
Benjamin Sergeant
f12e655cf8
Add DockerFile + parse rsv1 field
2018-11-07 11:45:17 -08:00
Benjamin Sergeant
cf0045a483
stopping connection on Linux does not close the socket, which can create problem when re-starting the connection
2018-11-01 17:02:49 -07:00
Benjamin Sergeant
912d926260
Handle Sec-WebSocket-Accept correctly
2018-10-27 10:24:48 -07:00
Benjamin Sergeant
a8dfd640a7
capture an error code and a reason when the server closes the connection
2018-10-25 18:51:19 -07:00
Benjamin Sergeant
208c693088
ping / pong support / fix bug in dispatching received message type
2018-10-25 14:43:35 -07:00
Benjamin Sergeant
eae2f7d113
Better ping/pong support
2018-10-25 14:43:35 -07:00
Benjamin Sergeant
71b40c6d6c
Windows support (no TLS yet)
2018-10-08 21:44:54 -07:00
Benjamin Sergeant
af12089e7a
make TLS support optional
2018-10-08 15:24:36 -07:00
Benjamin Sergeant
376c8c2e00
Update IXWebSocket.h
...
Remove dead code
2018-10-07 15:49:07 -07:00
Benjamin Sergeant
436bf8deb5
more ssl peer validation stuff
2018-10-05 18:45:44 -07:00
Benjamin Sergeant
10ce046b0f
(openssl) verify that the certificate we are getting match the domain we are requesting
2018-10-05 12:08:45 -07:00
Benjamin Sergeant
8f5d83c5c2
(openssl) add sni support
2018-10-01 17:36:21 -07:00
Benjamin Sergeant
09af729c07
g++ build fixes
2018-10-01 14:46:11 -07:00
Benjamin Sergeant
9b8d6cedfe
First import
2018-09-27 14:57:19 -07:00