Andreas Hausladen
1f2895a469
Win wsa select event ( #342 )
...
* Fix #323 : Missing SelectInterrupt implementation for Windows
Using WSAEventSelect, WSAWaitForMultipleEvents and WSAEnumNetworkEvents to emulate poll() with an interrupt-event.
* Cleanup
* Fixed incomplete comment.
* Switched ifdefs to support other Unixes with pipe file descriptors
* Fixed: SelectInterrupt fallback code for getFd()==-1 && getEvent()==nullptr converted a PollResultType::Timeout into a ReadyForRead causing the HttpClient to fail because it uses a hard-coded "SelectInterrupt" instance that doesn't implement getFd() and getEvent().
* Fixed gcc compile errors
* - HttpClient now uses the SelectInterruptFactory
- Fixed wrong ix::poll result when using Windows WSA functions
* We must deselect the networkevents from the socket event. Otherwise the socket will report states that aren't there.
2022-01-05 10:21:33 -08:00
Andreas Hausladen
9f00428d57
Fix "HTTP/1.1 400 Illegal character CNTL=0xf" caused by serverMaxWindowBits/clientMaxWindowBits being uint8_t (signed char). ( #341 )
2022-01-04 12:25:18 -08:00
CryptoManiac
47d0b70ebf
Include <cerrno> to provide standard error constants ( #338 )
...
See https://en.cppreference.com/w/cpp/header/cerrno for additional details. Some of used constants are defined in this header.
Inclusion is necessary to avoid these errors:
```
/home/user/IXWebSocket/ixwebsocket/IXNetSystem.cpp:189:30: error: use of undeclared identifier 'EAFNOSUPPORT'
default: errno = EAFNOSUPPORT; return 0;
^
/home/user/IXWebSocket/ixwebsocket/IXNetSystem.cpp:191:17: error: use of undeclared identifier 'ENOSPC'
errno = ENOSPC;
^
/home/user/IXWebSocket/ixwebsocket/IXNetSystem.cpp:175:25: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
j = strspn(buf + i, ":0");
~ ^~~~~~~~~~~~~~~~~~~~~
/home/user/IXWebSocket/ixwebsocket/IXNetSystem.cpp:234:21: error: use of undeclared identifier 'EAFNOSUPPORT'
errno = EAFNOSUPPORT;
^
2 warnings and 3 errors generated.
```
2022-01-04 12:13:19 -08:00
svost
5457217503
Improved compatibility - fix mingw crossbuild ( #337 )
2021-12-22 22:48:20 -08:00
Martin Natano
66cd29e747
Allow to cancel asynchronous HTTP requests ( #332 )
...
Usage:
auto args = this->httpClient.createRequest(url, method);
httpClient.performRequest(args, ...);
[...]
// Oops, we don't actually want to complete the request!
args->cancel = true;
2021-12-20 23:01:55 -08:00
Benjamin Sergeant
5f2955ef78
Feature/version 11.3.2 ( #329 )
...
* mbedls system certs
* missing curly brace ...
* windows uwp for appveyor
* try again uwp
* bump version
* keep using local cacert.pem in unittest
* appveyor back to normal
* remove appveyor file
Co-authored-by: Benjamin Sergeant <bsergeant@mz.com>
2021-11-24 08:45:04 -08:00
flagarde
882081536c
Fix IXWebSocketMessage.h:35:15: warning: ‘webSocketMessageType’ may be used uninitialized in this function [-Wmaybe-uninitialized] ( #328 )
2021-11-24 08:33:09 -08:00
flagarde
74bb85efe9
Add getters ( #327 )
...
* Add getters for IXSocketServer class
* Add getters for IXHttpServer class
* Add getters for IXWebSocketServer class
2021-11-24 08:28:25 -08:00
ouwou
e66437b560
fix compilation under mingw64 ( #325 )
2021-11-16 15:22:51 -08:00
Benjamin Sergeant
97aa1f956a
Fix mbedtls-3.0 problem ( #322 )
...
* Fix mbedtls-3.0 problem
This cause CI to fail on macOS.
See this migration guide => https://github.com/ARMmbed/mbedtls/blob/development/docs/3.0-migration-guide.md
* cmake change find header file
* define macro for mbedtls >= 3
* update api call
* Update IXWebSocketVersion.h
* Update CHANGELOG.md
2021-10-22 11:10:58 -07:00
Enzo
3f1fc6906c
Correctly convert remote port bytecode to uint16 port number. ( #321 )
...
* Correctly convert remote port bytecode to uint16 port number.
Copied the network_to_host_short function from the ASIO library to convert the remote port byte code to a uint16 number.
* Switched from uint16_t to unsigned short to work in Windows
* Updated missed uint16_t to unsigned short
2021-10-22 10:23:43 -07:00
Benjamin Sergeant
178f218374
Update IXWebSocketVersion.h
2021-09-20 18:19:29 -07:00
Benjamin Sergeant
3baf59a031
(ws) bump CLI command line parsing library from 1.8 to 2.0
2021-07-27 20:48:25 +02:00
Benjamin Sergeant
30bcddb99f
(ws) ws connect has a -g option to gzip decompress messages for API such as the websocket Huobi Global.
2021-06-08 09:49:27 -07:00
Benjamin Sergeant
47fd04e210
(websocket client + server) WebSocketMessage class tweak to fix unsafe patterns
2021-06-08 09:47:53 -07:00
Nikos Athanasiou
4f5b0c4f07
Noexcept ix web socket per message deflate options ( #299 )
...
* Fix unsafe calls and safeguard WebSocketMessage from being called w/
temporaries
* Use unnamed namespace to express internal linkage
* Avoid returning references that are mutex protected
Motivation for this MR
The antipattern of returning references to mutex protected members was
removed. Since a caller can hold the reference it would make all class
level locking meaningless.
Instead values are returned. The IXWebSocketPerMessageDeflateOptions
class was shrunk by 7 bytes (1 padding + 2*3) after changing the int
members to the used uint8_t; side effects of that were handled.
An inefficient "string -> int" was replaced by standard library. As
seen here http://coliru.stacked-crooked.com/a/46b5990bafb9c626 this
gives an order of magnitude better performance.
* noexcept string to integer conversion
2021-06-07 11:19:52 -07:00
Nikos Athanasiou
c2d497abc5
Avoid returning references that are mutex protected ( #297 )
...
* Fix unsafe calls and safeguard WebSocketMessage from being called w/
temporaries
* Use unnamed namespace to express internal linkage
* Avoid returning references that are mutex protected
Motivation for this MR
The antipattern of returning references to mutex protected members was
removed. Since a caller can hold the reference it would make all class
level locking meaningless.
Instead values are returned. The IXWebSocketPerMessageDeflateOptions
class was shrunk by 7 bytes (1 padding + 2*3) after changing the int
members to the used uint8_t; side effects of that were handled.
An inefficient "string -> int" was replaced by standard library. As
seen here http://coliru.stacked-crooked.com/a/46b5990bafb9c626 this
gives an order of magnitude better performance.
2021-06-05 11:23:18 -07:00
crjc
bbe2ae6dd3
fix: check the request's headers rather than the empty response's headers for User-Agent and Accept ( #296 )
2021-06-05 11:19:53 -07:00
Nikos Athanasiou
26897b2425
Fix unsafe calls and safeguard WebSocketMessage ( #294 )
...
* Fix unsafe calls and safeguard WebSocketMessage from being called w/
temporaries
* Use unnamed namespace to express internal linkage
2021-06-03 18:39:38 -07:00
Benjamin Sergeant
e3c98a03cc
(websocket server) Handle and accept firefox browser special upgrade value (keep-alive, Upgrade)
2021-05-27 10:54:21 -07:00
Benjamin Sergeant
97fedf9482
(Windows) move EINVAL (re)definition from IXSocket.h to IXNetSystem.h ( fix #289 )
2021-05-27 10:54:21 -07:00
Benjamin Sergeant
0f21a20fe3
Move errno windows definitions to IXNetSystem.h
2021-05-17 19:04:02 -07:00
flagarde
0e0a748037
Remove warnings ( #284 )
2021-04-19 09:25:06 -07:00
Benjamin Sergeant
3b19b0eeca
http client: DEL is not a verb, but DELETE is, fix #281
2021-04-04 23:27:28 -07:00
Benjamin Sergeant
d932af8568
(cmake) install IXUniquePtr.h
2021-03-25 10:55:59 -07:00
Benjamin Sergeant
3add6d4c2e
(ssl + windows) missing include for CertOpenStore function
2021-03-24 08:03:56 -07:00
Benjamin Sergeant
0d7fb05567
(ixwebsocket) version bump
2021-03-23 21:54:54 -07:00
Benjamin Sergeant
bf1747ef18
(ixwebsocket) version bump
2021-03-23 21:54:15 -07:00
Benjamin Sergeant
5c9c05caff
bump version
2021-03-23 21:52:49 -07:00
Benjamin Sergeant
2573ca151b
CaseInsensitiveLess::NocaseCompare::operator mingw fix attempt
2021-03-23 21:21:36 -07:00
Benjamin Sergeant
c5b5fa82be
use inet_* wrapper only on mingw
2021-03-23 21:13:18 -07:00
Benjamin Sergeant
24c2eae3d7
use inet_ntop and inet_pton musl implementations on all platforms
2021-03-23 20:53:19 -07:00
Benjamin Sergeant
449c5fa138
(ixwebsocket) add getMinWaitBetweenReconnectionRetries
2021-03-23 08:29:50 -07:00
Benjamin Sergeant
b6234ff908
compile errors due to missing changes for the introduction of setMinWaitBetweenReconnectionRetries and getMinWaitBetweenReconnectionRetries
2021-03-23 08:28:40 -07:00
Benjamin Sergeant
d26664fccc
(ixwebsocket) New option to set the min wait between reconnection attempts. Still default to 1ms. (setMinWaitBetweenReconnectionRetries).
2021-03-23 07:33:48 -07:00
Benjamin Sergeant
def0243d6d
(ws) initialize maxWaitBetweenReconnectionRetries to a non zero value ; a zero value was causing spurious reconnections attempts
2021-03-22 21:10:18 -07:00
Benjamin Sergeant
4d7b149649
mingw: cast fixes
2021-03-21 10:16:06 -07:00
Benjamin Sergeant
b29a37ce76
mingw: inet_ntop and inet_pton compilation fix, use correct parameter names
2021-03-21 09:50:15 -07:00
Benjamin Sergeant
9a4dfb40da
mingw: add real implementation of inet_ntop and inet_pton taken from musl C library
2021-03-21 09:43:16 -07:00
Benjamin Sergeant
d706a4a73e
doc: document BUILD_SHARED_LIBS
2021-03-20 09:50:21 -07:00
Benjamin Sergeant
88970604e3
ixwebsocketserver::broadcast server to return a boolean to know whether the server could start/listen, and use that in ws
2021-03-19 11:52:41 -07:00
Benjamin Sergeant
7fee54464e
WebSocketServer::listenAndStart: fix branch where we do not return an integer
2021-03-19 11:48:21 -07:00
Benjamin Sergeant
b36a2d1faa
mingw compile fix / remove restrict in inet_* functions
2021-03-19 10:58:38 -07:00
Benjamin Sergeant
0813eb1788
mention disablePerMessageDeflate in the doc
2021-03-16 09:56:08 -07:00
Benjamin Sergeant
7fd782f72f
add WIN32_LEAN_AND_MEAN windows blip
2021-03-15 19:58:18 -07:00
Benjamin Sergeant
85bcdaaec3
stub inet_ntop and inet_pton function that mingw does not have
2021-03-14 14:25:40 -07:00
Benjamin Sergeant
6a7785d9d9
no set thread name on mingw
2021-03-13 19:02:20 -08:00
Benjamin Sergeant
78a670e0c8
more mingw quirks
2021-03-13 18:55:30 -08:00
Benjamin Sergeant
e63ac69ec6
mock poll struct and macro for mingw
2021-03-13 18:49:29 -08:00
Benjamin Sergeant
afa15d6dcf
mingw build problem fix attempt
2021-03-13 18:31:42 -08:00
Benjamin Sergeant
f090c7659b
(ixwebsocket) Expose setHandshakeTimeout method
2021-03-07 19:29:28 -08:00
Benjamin Sergeant
7c195219cd
reorder methods in IXWebSocket.h
2021-03-07 19:25:53 -08:00
Duncan Ogilvie
d739662a7c
Allow customizing the websocket handshake timeout ( #264 )
2021-03-07 19:23:43 -08:00
Benjamin Sergeant
39cc0ed32f
add comment in WebSocketServer::makeBroadcastServer
2021-01-28 21:04:18 -08:00
Benjamin Sergeant
f6e34e4b34
stop using C++14 lambda capture init, code should be C++11 compatible
2021-01-03 11:44:05 -08:00
Benjamin Sergeant
d0359a1764
new makeBroadcastServer websocket server method for classic servers, used by ws
2021-01-03 11:24:12 -08:00
Benjamin Sergeant
fabc07d598
(ws) trim ws dependencies no more ixcrypto and ixcore deps
2020-12-25 16:25:58 -08:00
Benjamin Sergeant
0b7919834a
(ws) trim ws dependencies, only depends on ixcrypto and ixcore
2020-12-25 15:17:46 -08:00
Benjamin Sergeant
1d0432c8c5
(build) rename makefile to makefile.dev to ease cmake BuildExternal ( fix #261 )
2020-12-22 21:42:39 -08:00
Benjamin Sergeant
461a645704
(ws) Implement simple header based websocket authorization technique to reject
2020-12-17 22:42:14 -08:00
Benjamin Sergeant
93ad709dfd
fix ws curl error message + some Windows warnings
2020-12-12 11:01:22 -08:00
Benjamin Sergeant
75e9c84388
fix buggy message and remove un-needed include
2020-11-19 14:27:10 -08:00
Benjamin Sergeant
223cd41b3c
(ixwebsocket) Handle EINTR return code in ix::poll and IXSelectInterrupt
2020-11-16 13:53:09 -08:00
Benjamin Sergeant
60aeaec734
hand EINTR in IXSelectInterruptPipe::notify and IXSelectInterruptPipe::read
2020-11-16 13:52:13 -08:00
Benjamin Sergeant
fcf114e2b2
Handle EINTR in ix::poll on Unix
2020-11-16 10:14:59 -08:00
Benjamin Sergeant
866670a906
(ixwebsocket) Fix #252 / regression in 11.0.2 with string comparisons
2020-11-16 08:41:08 -08:00
Benjamin Sergeant
23606b45c7
C++11 compatible
2020-11-15 21:09:58 -08:00
Benjamin Sergeant
2aac0afca3
compile attempt 2 with old OpenSSL versions
2020-11-15 11:32:50 -08:00
Benjamin Sergeant
508d8c7253
compile attempt with old OpenSSL versions
2020-11-15 11:23:44 -08:00
Benjamin Sergeant
8f5134528b
(ixwebsocket) use a C++11 compatible make_unique shim
2020-11-15 09:56:54 -08:00
Benjamin Sergeant
738c6040f7
fix memory leak in dns unittest
2020-11-12 13:07:31 -08:00
Benjamin Sergeant
4e2a40e031
(socket) replace a std::vector with an std::array used as a tmp buffer in Socket::readBytes
2020-11-11 21:39:31 -08:00
Benjamin Sergeant
723c208f22
fix version
2020-11-11 09:18:03 -08:00
Benjamin Sergeant
21758f1183
(openssl security fix) in the client to server connection, peer verification is not done in all cases. See https://github.com/machinezone/IXWebSocket/pull/250
2020-11-11 09:16:14 -08:00
jb-gcx
422febf15d
(openssl) Always set verify peer when it is not disabled ( #250 )
2020-11-11 09:12:39 -08:00
Benjamin Sergeant
51ec32405d
(docker) build docker container with zlib disabled
2020-11-07 11:22:52 -08:00
Benjamin Sergeant
6a90dc7259
(cmake) DEFLATE -> Deflate in CMake to stop warnings about casing
2020-11-07 09:40:54 -08:00
Benjamin Sergeant
262f32857f
(ws autoroute) Display result in compliant way (AUTOROUTE IXWebSocket :: N ms) so that result can be parsed easily
2020-11-07 09:34:54 -08:00
Benjamin Sergeant
91fb3992ac
(ws gunzip + IXGZipCodec) Can decompress gziped data with libdeflate. ws gunzip computed output filename was incorrect (was the extension aka gz) instead of the file without the extension. Also check whether the output file is writeable.
2020-11-07 09:34:54 -08:00
Benjamin Sergeant
d0562664ad
(http code) With zlib disabled, some code should not be reached
2020-10-19 13:37:42 -07:00
SeanOMik
d9b4beff8b
Fix an issue with disabling zlib and getting linker errors from the http client. ( #247 )
...
* (http client) #ifdefs so we dont try to compress http requests with zlib
* (http client) Remove some #ifdefs for including zlib and removing fields
2020-10-19 13:36:04 -07:00
Benjamin Sergeant
b2f21840c6
(ws curl) Add support for --data-binary option, to set the request body. When present the request will be sent with the POST verb
2020-10-12 14:03:01 -07:00
Benjamin Sergeant
67cb48537a
(http client + server + ws) Add support for compressing http client requests with gzip. --compress_request argument is used in ws to enable this. The Content-Encoding is set to gzip, and decoded on the server side if present.
2020-10-09 17:51:56 -07:00
Benjamin Sergeant
fa0408e70b
(http client + server + ws) Add support for uploading files with ws -F foo=@filename, new -D http server option to debug incoming client requests, internal api changed for http POST, PUT and PATCH to supply an HttpFormDataParameters
2020-10-08 12:43:18 -07:00
Benjamin Sergeant
032ed9af9c
IXExponentialBackoff.cpp: fix typo in source code file name in the header block
2020-10-05 10:39:11 -07:00
Benjamin Sergeant
dc84080401
Add support for gzip compression through libdeflate
2020-09-30 14:34:03 -07:00
Benjamin Sergeant
82e759732b
(cmake) Stop using FetchContent cmake module to retrieve jsoncpp third party dependency
2020-09-30 14:24:04 -07:00
Benjamin Sergeant
61dbcc2b84
fix docker and linux build
2020-09-28 11:56:49 -07:00
Benjamin Sergeant
e61680ff0f
linux build fix about memset not being found
2020-09-28 11:01:59 -07:00
Benjamin Sergeant
6f188a5131
(ws) add gzip and gunzip ws sub commands
2020-09-28 10:19:27 -07:00
Benjamin Sergeant
6077f86af8
(cmake) use FetchContent cmake module to retrieve jsoncpp third party dependency
2020-09-26 14:11:40 -07:00
Benjamin Sergeant
2526a94454
(cmake) use FetchContent cmake module to retrieve spdlog third party dependency
2020-09-26 13:51:19 -07:00
Benjamin Sergeant
97cc543e53
(cobra connection) retrieve cobra server connection id from the cobra handshake message and display it in ws clients, metrics publisher and bots
2020-09-22 09:30:19 -07:00
Benjamin Sergeant
62d220f49a
(cobra 2 cobra) specify as an HTTP header which channel we will republish to
2020-09-22 08:55:21 -07:00
Benjamin Sergeant
49995e32f0
(cobra bots) change an error log to a warning log when reconnecting because no messages were received for a minute
2020-09-18 15:25:10 -07:00
Benjamin Sergeant
d525c28907
(cobra connection and bots) set an HTTP header when connecting to help with debugging bots
2020-09-18 15:11:20 -07:00
carr-7
39c84c7d51
Rename HttpResponse's payload to body ( #245 )
...
* rename payload to body
* Fixed ws cmd line tool to use the renamed body
Co-authored-by: Jay <jasoncarr@Jasons-MacBook-Pro.local>
2020-09-12 19:01:37 -07:00
Benjamin Sergeant
128bc0afa9
(http server) read body request when the Content-Length is specified + set timeout to read the request to 30 seconds max by default, and make it configurable as a constructor parameter
2020-09-12 14:17:06 -07:00
Benjamin Sergeant
b04e5c5529
http server: use socket->readBytes which reads in bulk instead of N calls to socket->readByte
2020-09-12 14:09:25 -07:00
Benjamin Sergeant
1e8c421d66
formatting
2020-09-12 13:55:27 -07:00