Stephen Seo
211715fc56
Fix potential nullptr deref in free_PacketInfo_ptr
2023-04-19 19:11:03 +09:00
Stephen Seo
3fac706d86
Add UDPC_free_PacketInfo_ptr(...)
...
Also add unit test for this function.
2023-04-19 18:50:26 +09:00
Stephen Seo
f18e87903a
Refactor UDPC::get_empty_pinfo()
2023-04-18 14:03:31 +09:00
Stephen Seo
577ab0bc52
Better handling of receiving packets in recv loop
...
On error processing a received packet, continue to receive packets in
the loop. If no packet was received, the loop ends.
2023-01-10 11:51:54 +09:00
Stephen Seo
77ac7f88a5
Receive packets in loop til none left in interval
...
Also some formatting fixes (max 80 chars in edited code).
2022-12-04 19:58:13 +09:00
Stephen Seo
e08e620b26
Add |id| to PacketInfo
2021-01-10 14:40:17 +09:00
Stephen Seo
d3fb621406
Minor fixes
2020-04-27 19:34:04 +09:00
Stephen Seo
445a221a5b
Fix check addr endianness in a4toa6 function
2020-04-27 11:47:50 +09:00
Stephen Seo
31ca4ddc44
Impl create id with hostname
...
Previously, ids could only be created with an ip address. Now they can
be made with a hostname, which will be looked up by UDPC.
Also fix client still requesting connections even if
accept-new-connections flag is false.
2020-04-26 18:52:06 +09:00
Stephen Seo
76c5bb750d
Use memcpy instead of pointer casted assignment
...
std::memcpy is used over int pointer casted assignment due to possible
alignment issues that may cause the casted pointer to be invalid.
2020-04-18 16:09:00 +09:00
Stephen Seo
cf6ff5a040
Change how UDPC_PacketInfo handles it's data
...
The "data" member variable in UDPC_PacketInfo is now handled as a
pointer to dynamic data, instead of an array with a fixed size. Every
time a UDPC_PacketInfo is received from the context,
UDPC_free_PacketInfo() must be called on it to avoid a memory leak.
2020-04-15 19:56:15 +09:00
Stephen Seo
e01a1ccd94
Fix compilation fail on no libsodium
2020-03-06 13:03:47 +09:00
Stephen Seo
75f54119bf
Fix use of C++14/C++17, only C++11 is supported
2020-03-06 12:05:33 +09:00
Stephen Seo
c37909bde3
Add helpers converting network-order (big-endian)
2020-01-16 20:28:42 +09:00
Stephen Seo
0170423a35
Fix UDPC::isBigEndian returning always true
2020-01-16 20:28:01 +09:00
Stephen Seo
136c8b21a5
Fix verification message when using libsodium
...
Previous implementation had the client send only epoch-time-in-seconds
to be signed by the server. Now the client sends random data and
epoch-time to be signed by the server.
2020-01-15 16:31:38 +09:00
Stephen Seo
b41639c568
Set pointers to const where possible in API
2020-01-10 20:28:08 +09:00
Stephen Seo
f588d409c9
Truncate "UDPConnection" to "UDPC"
2020-01-09 16:57:01 +09:00
Stephen Seo
40c4c9b2ba
Fix potential non-null-terminated string bug
2020-01-09 16:45:57 +09:00
Stephen Seo
4d68715efb
Add more documentation, some fixes
2020-01-08 20:50:56 +09:00
Stephen Seo
4c48dbb0cf
Replace TSLQueue with std::deque where possible
...
Also added std::mutex for each new std::deque. cSendPkts is left as a
TSLQueue because it needs to support fast removal from the middle of the
data structure (mainly because the queued packets per ConnectionData has
an imposed limit of packets to hold).
2020-01-08 19:55:12 +09:00
Stephen Seo
e66e6c7b74
Minor fix to keysSet atomic_bool
2020-01-05 16:05:22 +09:00
Stephen Seo
e644cd86b1
Minor fixes
2020-01-05 15:39:25 +09:00
Stephen Seo
88ba670ce9
Fix usage of atomic_bool "keysSet"
2020-01-05 15:31:37 +09:00
Stephen Seo
1ecf9bff4f
Minor refactoring/fix of use of atomic_bool
2020-01-05 15:12:13 +09:00
Stephen Seo
5c8480e5bc
Refactor locking mutex during update
2020-01-05 15:05:23 +09:00
Stephen Seo
7996bd5c36
Client on connect fail now returns FAIL_CONNECT
...
Previously, returned event was DISCONNECT. FAIL_CONNECT is a new event
enum value.
2020-01-05 14:49:37 +09:00
Stephen Seo
3ade637205
Client now regenerates verif-time on con attempt
2020-01-05 14:42:57 +09:00
Stephen Seo
42fde9a2d0
Implement publickey whitelist (using libsodium)
...
Renamed "mutex" to "conMapMutex" since it is mainly used to lock access
to the connection map.
Removed UDPC_client_initiate_connection_pk() as publickey whitelisting
replaces its functionality.
2020-01-02 20:54:32 +09:00
Stephen Seo
26e8b95d94
Add verification of verification time server-side
...
Verification string is no longer a string but seconds since epoch.
2020-01-02 16:33:17 +09:00
Stephen Seo
db2c3fed97
Change: libsodium verification now on full packet
2020-01-02 13:12:40 +09:00
Stephen Seo
89bdc7e9ca
Fix copying over data of received packet
2019-12-30 14:16:05 +09:00
Stephen Seo
1a39039065
Fix received packet storing unnecessary header
...
Added rtt (uint16_t) to UDPC_PacketInfo.
2019-12-27 13:35:28 +09:00
Stephen Seo
1af44db109
Minor refactorings
...
UDPC_update now locks the mutex to keep it thread-safe.
2019-12-19 11:39:34 +09:00
Stephen Seo
ffcc30bc64
Minor fixes
2019-12-18 14:34:53 +09:00
Stephen Seo
4b36d05ccc
Minor fixes, improvements
...
When UDPC_ConnectionId is initialized, all of its bytes are now zeroed
out.
2019-12-18 14:20:29 +09:00
Stephen Seo
5ec344b733
Add way to get connection queued size
...
Requires locking the mutex for access to conMap.
2019-12-18 13:47:46 +09:00
Stephen Seo
62ac6e779f
Bug fixes
...
Fixed not setting output int to 0 to specify zero connections when
returning connection IDs.
2019-12-17 20:58:44 +09:00
Stephen Seo
dbdade3b00
Impl disc. request (untested), del make_unique
2019-12-17 20:05:56 +09:00
Stephen Seo
a4efd98890
Replace "poor man's optional" with std::unique_ptr
2019-12-17 19:12:54 +09:00
Stephen Seo
aa59777f99
Fix create_id_easy not parsing ipv4 addr correctly
2019-12-17 12:52:10 +09:00
Stephen Seo
ece17e1aca
Drop support from C++17 to C++11
...
std::optional replaced with Entry in TSLQueue (which is basically a poor
man's optional).
2019-12-11 20:00:48 +09:00
Stephen Seo
7c444cb460
Impl auth-policy for handling with(out) auth
2019-12-09 21:27:58 +09:00
Stephen Seo
d94b44e4de
More documentation, fix constants to be #define'd
2019-12-06 20:49:30 +09:00
Stephen Seo
69256839ac
Minor fixes/refactorings
2019-11-27 20:12:57 +09:00
Stephen Seo
04fa5ca017
Add is_valid_context(), fixes/refactorings
2019-11-27 19:47:51 +09:00
Stephen Seo
8d1dbead20
Add set_libsodium_key_easy(), fixes/refactorings
2019-11-27 19:41:38 +09:00
Stephen Seo
6b14d86822
Fixes for setting pub/sec keys
...
Added more to NetworkTest to test new changes.
2019-11-21 15:15:05 +09:00
Stephen Seo
c24273ea65
Add unset_libsodium_keys()
...
Still untested
2019-11-21 12:23:40 +09:00
Stephen Seo
240ed9821f
Add set peer_pk, sk/pk, start/stop threaded update
...
Note, this code is UNTESTED.
2019-11-19 20:55:20 +09:00