Commit graph

152 commits

Author SHA1 Message Date
Rémi Verschelde
818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
David Snopek
8ad5889c1a Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from GDScript 2022-07-19 09:16:41 -05:00
Haoyu Qiu
b657d0c76c Add dedicated macros for property name extraction
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NOEDITOR
2022-05-19 11:31:35 +08:00
Oğuzhan Eroğlu
ebaca9d432 Added set_extra_headers() to WebSocketServer
(cherry picked from commit fd4341fba4)
2022-04-13 11:43:49 +02:00
Rémi Verschelde
21c3048397 Add missing argument names in bindings 2022-04-04 12:56:59 +02:00
Jason Knight
1f080e203d Use 3001 instead of 1001 when destroying a websocket.
(cherry picked from commit b659cfbd53)
2022-03-28 23:50:00 +02:00
Hugo Locurcio
b087538119
Add an XML schema for documentation
This makes it easier to spot syntax errors when editing the
class reference. The schema is referenced locally so validation
can still work offline.

Each class XML's schema conformance is also checked on GitHub Actions.
2022-03-16 23:01:02 +01:00
Rémi Verschelde
7a16bb2ee4
Fix typos with codespell
Using codespell 2.2-dev from current git.

Added `misc/scripts/codespell.sh` to make it easier to run it once in a
while and update the skip and ignore lists.

(cherry picked from commit 1bdb82c64e)
2022-02-11 09:50:59 +01:00
Jordan Schidlowsky
14a1303f2d
[Net] Non-blocking WebSocket hostname resolution.
Hostname is now resolved during poll in WebSocketClient (wslay) to avoid
blocking during connect.
An attempt is still made to find the hostname in the resolver cache.

(cherry picked from commit 1ec96bc206)
2022-02-11 09:50:58 +01:00
Rémi Verschelde
a627cdafc5
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-13 15:54:13 +01:00
Arnav Vijaywargiya
a51f3f2a58
Fixed incorrect property types
(cherry picked from commit 0c46f73b5e)
2022-01-12 17:28:07 +01:00
Fabio Alessandrelli
ce98beb522
Merge pull request #54381 from mhilbrunner/rpc-error-msgs-3.x
[3.x] Websockets: Fix buffer size checks in put_packet(), silent failures/connection hangs
2021-12-15 13:48:53 +01:00
Yuri Sizov
1cf6d21f69 Make overridden properties link to parent definition
Co-authored-by: Josh DeGraw <joshmdegraw@gmail.com>
2021-12-03 17:48:49 +03:00
Rémi Verschelde
5c6e39b2a6
wslay: Sync with upstream 45d22583b
45d22583b4

Mostly style changes, a couple new methods and fixes.
Tweak file structure a bit.

(cherry picked from commit a706ef3272)
2021-11-20 11:50:59 +01:00
Rémi Verschelde
14c366ddd7
Bump version to 3.5-beta 2021-11-05 16:10:17 +01:00
Max Hilbrunner
6a92a2e92d Websockets: Fix buffer size checks in put_packet() 2021-10-29 15:43:17 +02:00
Max Hilbrunner
e29126914d
Save all 64 bits of get_ticks_msec() in more cases
(cherry picked from commit 5dc02eb8b0)
2021-10-26 18:23:31 +02:00
Infinixius
0f328bcbdc
Fix small typos regarding WebSocketPeer
(cherry picked from commit 547ed239c0)
2021-10-10 12:27:47 +02:00
Haoyu Qiu
25bd0c3f72
Try other resolved IPs if one fails to connect
(cherry picked from commit fd52e18d19)
2021-09-14 14:18:18 +02:00
Rémi Verschelde
0142a378c6
HTML5: Fix a couple warnings
Add a missing call to disable warnings on a forked env for freetype's
`sfnt.c`.

(cherry picked from commit c44ebb020d)
2021-08-12 16:37:38 +02:00
Rémi Verschelde
f5836b40d4
doc: Use self-closing tags for return and argument
For the time being we don't support writing a description for those, preferring
having all details in the method's description.

Using self-closing tags saves half the lines, and prevents contributors from
thinking that they should write the argument or return documentation there.

(cherry picked from commit 7adf4cc9b5)
2021-08-03 10:20:19 +02:00
Jordan Schidlowsky
023548c0a5 Websocket peer outbound buffer fixes. Expose outbound buffered amount. 2021-07-31 19:50:05 -06:00
Hugo Locurcio
37ff524d8c
Improve error reporting in WebSocketServer
This should make troubleshooting easier.

(cherry picked from commit 58455b18b5)
2021-07-06 13:38:54 +02:00
Fabio Alessandrelli
63f6b29f51
[Net] Add WebSocketServer handshake_timeout property.
Allows customization of the maximum time a client is allowed to stay in
the the "pending" state (i.e. awaiting HTTP handshake).

This used to be 1 second by before, the new default is 3 seconds.

(cherry picked from commit 458437edef)
2021-06-29 14:02:23 +02:00
Fabio Alessandrelli
4994b3a99e
[Net] Fix WebSocketClient path parsing.
Recent changes to parse_url caused the client to make invalid HTTP
requests if no path was specified.

(cherry picked from commit d244dda597)
2021-06-29 14:02:23 +02:00
Rémi Verschelde
140350d767
Style: Enforce braces around if blocks and loops
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2021-05-05 15:02:01 +02:00
Rémi Verschelde
a828398655
Style: Replaces uses of 0/NULL by nullptr (C++11)
Using clang-tidy's `modernize-use-nullptr`.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
2021-05-04 16:30:23 +02:00
Rémi Verschelde
b5e1e05ef2
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks 2021-05-04 14:45:16 +02:00
Rémi Verschelde
6e600cb3f0
Style: Set clang-format Standard to c++14 2021-05-04 14:45:15 +02:00
MaxStgs
1fc0fb7a5e
Add WebSocketMultiplayerPeer _incoming_packets check bound
(cherry picked from commit 05ad08941b)
2021-05-03 21:39:43 +02:00
Fabio Alessandrelli
77e3514315
[Net] Implement String::parse_url for parsing URLs.
Splits the URL into (scheme, host, port, path).
Supports both literal IPv4 and IPv6.
Strip credentials when present (e.g. http://user:pass@example.com/).

Use that function in both HTTPRequest and WebSocketClient.

(cherry picked from commit 3bb40669d5)
2021-05-03 21:39:43 +02:00
Rémi Verschelde
e94161dada
SCons: Add explicit dependencies on thirdparty code in cloned env
Since we clone the environments to build thirdparty code, we don't get an
explicit dependency on the build objects produced by that environment.

So when we update thirdparty code, Godot code using it is not necessarily
rebuilt (I think it is for changed headers, but not for changed .c/.cpp files),
which can lead to an invalid compilation output (linking old Godot .o files
with a newer, potentially ABI breaking version of thirdparty code).

This was only seen as really problematic with bullet updates (leading to
crashes when rebuilding Godot after a bullet update without cleaning .o files),
but it's safer to fix it everywhere, even if it's a LOT of hacky boilerplate.

(cherry picked from commit c7b53c03ae)
2021-04-29 16:57:00 +02:00
Rémi Verschelde
70ae90e0e8
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.

Backport of #48239.
2021-04-29 12:34:11 +02:00
Rémi Verschelde
c3272997cd
doc: Update classref headers with 3.4 version 2021-04-26 13:15:29 +02:00
Hugo Locurcio
cd4906ee0b
Document secure wss:// caveats for WebSocketClient
See https://github.com/godotengine/godot/issues/37739.

(cherry picked from commit a56e37545b)
2021-04-12 00:23:44 +02:00
Rémi Verschelde
1aba997d75
doc: Sync classref with 3.3 version bump 2021-03-23 13:40:34 +01:00
Rémi Verschelde
49646383f1
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 🎆

(cherry picked from commit b5334d14f7)
2021-01-13 16:17:06 +01:00
Fabio Alessandrelli
8ebb52fad6 [HTML5] Add function signatures to JS libraries. 2020-12-04 23:37:41 +01:00
Fabio Alessandrelli
f316a1719d [HTML5] Run eslint --fix.
Should I write a poem about this whole new world? ;)
2020-11-23 13:27:13 +01:00
Fabio Alessandrelli
e4cdae3624 [HTML5] Libraries refactor for linting.
Initial work to make liniting easier.

This includes:
- Rename http_request.js to library_godot_http_request.js.
- Rename externs.js to engine.externs.js.
- New library_godot_runtime.js (GodotRuntime) wraps around emscripten
  functions.
- Refactor of XMLHttpRequest handler in engine/preloader.js.
- Few fixes to bugs spotted by early stage linting.
2020-11-21 14:23:32 +01:00
Marcel Admiraal
04103db6bd
Fix godot_js_websocket_send function unused assignment.
(cherry picked from commit 112e2fdfc3)
2020-11-17 22:25:49 +01:00
Fabio Alessandrelli
e52ed6d89e [HTML5] Port JavaScript inline code to libraries.
The API is implemented in javascript, and generates C functions that can
be called from godot.
This allows much cleaner code replacing all `EM_ASM` calls in our C++
code with plain C function calls.
This also gets rid of few hacks and comes with few optimizations (e.g.
custom cursor shapes should be much faster now).
2020-11-10 10:56:13 +01:00
Fabio Alessandrelli
806b23208f Fix modules with closure compiler. 2020-06-18 09:21:14 +02:00
Rémi Verschelde
7bf9787921 SCons: Format buildsystem files with psf/black
Configured for a max line length of 120 characters.

psf/black is very opinionated and purposely doesn't leave much room for
configuration. The output is mostly OK so that should be fine for us,
but some things worth noting:

- Manually wrapped strings will be reflowed, so by using a line length
  of 120 for the sake of preserving readability for our long command
  calls, it also means that some manually wrapped strings are back on
  the same line and should be manually merged again.

- Code generators using string concatenation extensively look awful,
  since black puts each operand on a single line. We need to refactor
  these generators to use more pythonic string formatting, for which
  many options are available (`%`, `format` or f-strings).

- CI checks and a pre-commit hook will be added to ensure that future
  buildsystem changes are well-formatted.

(cherry picked from commit cd4e46ee65)
2020-06-10 15:30:52 +02:00
Rajat Goswami
19e71f94d8 Adding missing include guards to header files identified by LGTM.
This addresses the issue godotengine/godot#37143

(cherry picked from commit 2ecf928ae3)
2020-03-25 11:38:54 +01:00
Fabio Alessandrelli
50763ecac4 Fix EMWSClient::get_connection_status(), try catch
(cherry picked from commit ebeeb67224)
2020-02-18 14:20:34 +01:00
Fabio Alessandrelli
a48d0b5eef Disable Nagle's algorithm for WebSocket TCP.
This should greatly decrease latency for the most common use cases.
A new function WebSocketPeer::set_no_delay will allow to configure it if
so desired.
2020-01-28 14:10:46 +01:00
Rémi Verschelde
f0f0f38d1a
Merge pull request #35516 from Faless/ws/fix_latency_32
Lower WebSocket latency, fixes.
2020-01-26 19:03:00 +01:00
Rémi Verschelde
2d20fc39aa doc: Drop unused 'category' property from header
We already removed it from the online docs with #35132.

Currently it can only be "Built-In Types" (Variant types) or "Core"
(everything else), which is of limited use.

We might also want to consider dropping it from `ClassDB` altogether
in Godot 4.0.
2020-01-26 16:02:39 +01:00
Fabio Alessandrelli
5bd9f14ad9 Lower WebSocket latency, fixes.
WSLPeer now tries to flush packet queue after put_packet call.
WSLServer::listen correctly returns TCP_Server::listen return value.
2020-01-24 14:50:53 +01:00