Commit graph

55 commits

Author SHA1 Message Date
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