Commit Graph

50 Commits

Author SHA1 Message Date
7227fdd805 Core: Add UNIX domain socket support
> [!NOTE]
>
> Later versions of Windows has support for `AF_UNIX`, so it could be
> added.
2025-09-26 05:46:19 +10:00
91907a89f7 Thirdparty: Harmonize patches to document downstream changes 2025-02-06 01:40:03 +01:00
764b7abe82 [ENet] Better handle disconnected peers in DTLS server
The ENetDTLSServer socket implementation should avoid reporting errors
during send and receive operations, unless the socket is effectively no
longer usable (and thus ENet should close it).
2024-08-02 16:07:37 +02:00
2a7e2ef530 enet: Update to 1.3.18
No change, just properly tagging the version we were using.
2024-05-14 12:55:21 +02:00
360a1a4568 enet: Sync with upstream commit c44b7d0
c44b7d0f7f
2024-04-05 10:12:29 +02:00
f18aa00e85 Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-10-08 17:23:33 +02:00
517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
35b70681e7 [ENet] Update to upstream master. 2023-07-20 12:20:14 +02:00
eeac6f8c7f [TLS] Fix crashes trying to use TLS when not available.
If no StreamPeerTLS implementation is available, HTTPClient and
WebSocketPeer will now correctly refuse to connect using TLS returning
ERR_UNAVAILABLE.

Similarly, ENetConnection will refuse to setup DTLS when PacketPeerDTLS
is not available.
2023-05-12 20:08:10 +02:00
adba870534 [NET] Refactor TLS configuration.
Use a TLSOptions configuration object which is created via static
functions.

- "TLSOptions.client": uses the standard CA and common name verification.
- "TLSOptions.client_unsafe": uses optional CA verification (i.e. if specified)
- "TLSOptions.server": is the standard server configuration (chain + key)

This will allow us to expand the TLS configuration options to include
e.g. mutual authentication without bloating the classes that uses
StreamPeerTLS and PacketPeerDTLS as underlying peers.
2023-01-28 11:08:02 +01:00
d95794ec8a One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
fe52458154 Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
42a1777531 [Net] Implement lower level ENet wrappers. 2021-07-29 10:59:00 +02:00
4e6efd1b07 Use C++ iterators for Lists in many situations 2021-07-23 17:38:28 -04:00
e28fd07b2b Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
3f078c99f6 Rename IP_Unix, IP_Address and TCP_Server to remove underscores 2021-05-06 02:52:01 +02:00
690c00d522 Merge pull request #48235 from Faless/feature/network-local-port-enet-salvaged
[Net] Implement NetworkedMultiplayerENet.get_local_port
2021-04-28 19:04:09 +02:00
cd22a2be2f Implement NetworkedMultiplayerENet.get_local_port
Allows retrieving the local port to which the peer is bound.
2021-04-28 16:53:13 +02:00
8247667a3e Core: Drop custom copymem/zeromem defines
We've been using standard C library functions `memcpy`/`memset` for these since
2016 with 67f65f6639.

There was still the possibility for third-party platform ports to override the
definitions with a custom header, but this doesn't seem useful anymore.
2021-04-27 16:26:27 +02:00
4d5c8e0b18 This renames PacketPeerUDP.listen to bind. 2021-04-12 21:05:33 +02:00
d8495d41ca enet: Sync with upstream 1.3.17 2021-01-08 12:02:03 +01:00
b5334d14f7 Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
896e7193d8 ENetGodot: Apply clang-format and style guide 2020-07-21 11:48:14 +02:00
32fbe37ab4 Reorganize ENet pactches. 2020-07-14 14:10:18 +02:00
7ec5c917d1 Funnel refuse_new_connections to Godot ENet. 2020-07-14 14:10:18 +02:00
ebe38044fd enet: Update to upstream version 1.3.15 2020-04-21 12:27:11 +02:00
27326f8238 Merge pull request #36296 from Faless/dtls/enet_vulkan
DTLS support + optional ENet encryption
2020-02-18 15:01:53 +01:00
3205a92ad8 PoolVector is gone, replaced by Vector
Typed `PoolTypeArray` types are now renamed `PackedTypeArray` and are
sugar for `Vector<Type>`.
2020-02-18 10:10:36 +01:00
119c2a4f70 Custom godot sockets for ENet now support DTLS.
Non-DTLS implementation uses plain NetSocket for performance as before.
2020-02-17 12:03:47 +01:00
c35f461445 enet: Sync with upstream 1.3.14
We still have local modifications necessary for IPv6 support
and using Godot sockets.
2020-01-05 19:19:56 +01:00
571c713a5e enet: Resync with upstream we forked at, add patch
Before rebasing on the newly released enet 1.3.14, let's resync with the actual
commit we initially imported, which seems to be:
f46fee0acc
2020-01-05 19:15:23 +01:00
a7f49ac9a1 Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
63d1a80656 Removed a call to set_blocking_enabled from function enet_socket_create since it is already called from https://github.com/godotengine/godot/blob/master/thirdparty/enet/host.c#L63 2019-04-26 22:27:50 +03:00
bb3089895c Implement function enet_socket_set_option using ENetSocket class's methods.
Implemented options:
 - ENET_SOCKOPT_NONBLOCK
 - ENET_SOCKOPT_BROADCAST
 - ENET_SOCKOPT_REUSEADDR
 - ENET_SOCKOPT_NODELAY
Not implemented options:
 - ENET_SOCKOPT_RCVBUF
 - ENET_SOCKOPT_SNDBUF
 - ENET_SOCKOPT_RCVTIMEO
 - ENET_SOCKOPT_SNDTIMEO
2019-04-26 22:23:52 +03:00
b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
c5a4d638c6 Use NetSocket directly for ENet.
Avoid PacketPeerUDP buffering.
2018-11-02 20:17:54 +01:00
1b99806b47 Unify PacketPeerUDP using NetSocket 2018-09-12 15:56:16 +02:00
7de28be764 ENet wrapper properly detect disconnect on poll
Now PacketPeerUDP.get_available_packet_count() return -1 if the socket
is in error state.
2018-09-12 12:50:53 +02:00
b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
2baf54526b Fix BSD compile issues 2017-10-17 16:50:41 +00:00
bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
df61dc4b2b Add "Godot Engine contributors" copyright line 2017-04-08 00:11:42 +02:00
0450e6539e ENet code cleanup and changes from review. 2017-03-24 02:30:11 +01:00
ed075c4c80 Cleanup unused ENet files and updated thirdparty README 2017-03-24 02:30:11 +01:00
5f681d0b0f Allow non blocking UDP put_packet in C++.
- Add blocking mode option to PacketPeerUDP.
- put_packet returns ERR_UNAVAILABLE when operation would block.
- ENet module uses non-blocking UDP.
2017-03-24 02:30:11 +01:00
5bdbc0f762 Convert ENetAddress host to 16 bytes to accomote IPv6 2017-03-08 21:16:26 +01:00
4cc1b04586 Add godot socket implementation 2017-03-08 21:16:20 +01:00
b113c7b7a3 Rename WINRT_ENABLED to UWP_ENABLED 2016-11-03 14:51:08 -02:00
c31ad71f10 enet: Split enet thirdparty files and allow unbundling
Building against shared libraries only implemented for Linux X11 so far.
TODO: Document Godot's modifications of upstream enet.
2016-10-15 11:50:39 +02:00