Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roll back libwebsockets to version 3.0.1 #28568

Merged
merged 1 commit into from May 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
117 changes: 56 additions & 61 deletions modules/websocket/SCsub
Expand Up @@ -9,90 +9,85 @@ env_lws = env_modules.Clone()

if env['builtin_libwebsockets'] and not env["platform"] == "javascript": # already builtin for javascript
thirdparty_dir = "#thirdparty/libwebsockets/"
helper_dir = "#thirdparty/libwebsockets/win32helpers/"
helper_dir = "win32helpers/"
thirdparty_sources = [

"lib/core/adopt.c",
"lib/core/alloc.c",
"lib/core/connect.c",
"lib/core/context.c",
"lib/core/dummy-callback.c",
"lib/core/libwebsockets.c",
"lib/core/output.c",
"lib/core/pollfd.c",
"lib/core/service.c",

"lib/event-libs/poll/poll.c",

"lib/misc/base64-decode.c",
"lib/misc/lejp.c",
"lib/misc/sha-1.c",

"lib/roles/h1/ops-h1.c",
"lib/roles/http/header.c",
"lib/roles/http/client/client.c",
"lib/roles/http/client/client-handshake.c",
"lib/roles/http/server/fops-zip.c",
"lib/roles/http/server/lejp-conf.c",
"lib/roles/http/server/parsers.c",
"lib/roles/http/server/server.c",
"lib/roles/listen/ops-listen.c",
"lib/roles/pipe/ops-pipe.c",
"lib/roles/raw-skt/ops-raw-skt.c",
"lib/roles/raw-file/ops-raw-file.c",

"lib/roles/ws/client-ws.c",
"lib/roles/ws/client-parser-ws.c",
"lib/roles/ws/ops-ws.c",
"lib/roles/ws/server-ws.c",

"lib/tls/tls.c",
"lib/tls/tls-client.c",
"lib/tls/tls-server.c",

"lib/tls/mbedtls/wrapper/library/ssl_cert.c",
"lib/tls/mbedtls/wrapper/library/ssl_pkey.c",
"lib/tls/mbedtls/wrapper/library/ssl_stack.c",
"lib/tls/mbedtls/wrapper/library/ssl_methods.c",
"lib/tls/mbedtls/wrapper/library/ssl_lib.c",
"lib/tls/mbedtls/wrapper/library/ssl_x509.c",
"lib/tls/mbedtls/wrapper/platform/ssl_port.c",
"lib/tls/mbedtls/wrapper/platform/ssl_pm.c",
"lib/tls/mbedtls/lws-genhash.c",
"lib/tls/mbedtls/mbedtls-client.c",
"lib/tls/mbedtls/lws-genrsa.c",
"lib/tls/mbedtls/ssl.c",
"lib/tls/mbedtls/mbedtls-server.c"
"core/alloc.c",
"core/context.c",
"core/libwebsockets.c",
"core/output.c",
"core/pollfd.c",
"core/service.c",

"event-libs/poll/poll.c",

"misc/base64-decode.c",
"misc/lejp.c",
"misc/sha-1.c",

"roles/h1/ops-h1.c",
"roles/http/header.c",
"roles/http/client/client.c",
"roles/http/client/client-handshake.c",
"roles/http/server/fops-zip.c",
"roles/http/server/lejp-conf.c",
"roles/http/server/parsers.c",
"roles/http/server/server.c",
"roles/listen/ops-listen.c",
"roles/pipe/ops-pipe.c",
"roles/raw/ops-raw.c",

"roles/ws/client-ws.c",
"roles/ws/client-parser-ws.c",
"roles/ws/ops-ws.c",
"roles/ws/server-ws.c",

"tls/tls.c",
"tls/tls-client.c",
"tls/tls-server.c",

"tls/mbedtls/wrapper/library/ssl_cert.c",
"tls/mbedtls/wrapper/library/ssl_pkey.c",
"tls/mbedtls/wrapper/library/ssl_stack.c",
"tls/mbedtls/wrapper/library/ssl_methods.c",
"tls/mbedtls/wrapper/library/ssl_lib.c",
"tls/mbedtls/wrapper/library/ssl_x509.c",
"tls/mbedtls/wrapper/platform/ssl_port.c",
"tls/mbedtls/wrapper/platform/ssl_pm.c",
"tls/mbedtls/lws-genhash.c",
"tls/mbedtls/mbedtls-client.c",
"tls/mbedtls/lws-genrsa.c",
"tls/mbedtls/ssl.c",
"tls/mbedtls/mbedtls-server.c"
]

if env["platform"] == "android": # Builtin getifaddrs
thirdparty_sources += ["lib/misc/getifaddrs.c"]

thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
thirdparty_sources += ["misc/getifaddrs.c"]

if env["platform"] == "windows" or env["platform"] == "uwp": # Winsock
thirdparty_sources += Glob(thirdparty_dir + "lib/plat/windows/*.c") + [helper_dir + src for src in ["getopt.c", "getopt_long.c", "gettimeofday.c"]]
thirdparty_sources += ["plat/lws-plat-win.c", helper_dir + "getopt.c", helper_dir + "getopt_long.c", helper_dir + "gettimeofday.c"]
else: # Unix socket
thirdparty_sources += Glob(thirdparty_dir + "lib/plat/unix/*.c")
thirdparty_sources += ["plat/lws-plat-unix.c"]

thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

env_lws.Prepend(CPPPATH=[thirdparty_dir + 'include/'])
env_lws.Prepend(CPPPATH=[thirdparty_dir])

if env['builtin_mbedtls']:
mbedtls_includes = "#thirdparty/mbedtls/include"
env_lws.Prepend(CPPPATH=[mbedtls_includes])

wrapper_includes = ["#thirdparty/libwebsockets/lib/tls/mbedtls/wrapper/include/" + inc for inc in ["internal", "openssl", "platform", ""]]
wrapper_includes = ["#thirdparty/libwebsockets/tls/mbedtls/wrapper/include/" + inc for inc in ["internal", "openssl", "platform", ""]]
env_lws.Prepend(CPPPATH=wrapper_includes)

if env["platform"] == "windows" or env["platform"] == "uwp":
env_lws.Prepend(CPPPATH=[helper_dir])
env_lws.Prepend(CPPPATH=[thirdparty_dir + helper_dir])

if env["platform"] == "uwp":
env_lws.Append(CPPFLAGS=["/DLWS_MINGW_SUPPORT"])

env_thirdparty = env_lws.Clone()
env_thirdparty.disable_warnings()
env_thirdparty.Prepend(CPPPATH=[thirdparty_dir + 'lib/'])
env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources)

env_lws.add_source_files(env.modules_sources, "*.cpp")
5 changes: 2 additions & 3 deletions modules/websocket/lws_client.cpp
Expand Up @@ -32,11 +32,10 @@

#include "lws_client.h"
#include "core/io/ip.h"
#include "core/io/stream_peer_ssl.h"
#include "core/project_settings.h"
#if defined(LWS_OPENSSL_SUPPORT)
// Not openssl, just the mbedtls wrapper
#include "openssl/ssl.h"
#include "core/io/stream_peer_ssl.h"
#include "tls/mbedtls/wrapper/include/openssl/ssl.h"
#endif

Error LWSClient::connect_to_host(String p_host, String p_path, uint16_t p_port, bool p_ssl, PoolVector<String> p_protocols) {
Expand Down
12 changes: 6 additions & 6 deletions thirdparty/README.md
Expand Up @@ -265,17 +265,17 @@ changes are marked with `// -- GODOT --` comments.
## libwebsockets

- Upstream: https://github.com/warmcat/libwebsockets
- Version: 3.1.0
- Version: 3.0.1
- License: LGPLv2.1 + static linking exception

File extracted from upstream source:
- From `lib/` into `thirdparty/libwebsockets/lib`:
- From `lib/` into `thirdparty/libwebsockets`:
- Everything from `core`
- From `event-libs` only the `poll` subfolder and the `private.h` header
- From `misc` only `base64-decode.c`, `getifaddrs.c`, `getifaddrs.h`, `lejp.c`, and `sha-1.c` (and the `private.h` header)
- From `plat` everything from `unix` and `windows` (and the `private.h` header)
- From `event-libs` only the `poll` subfolder
- From `misc` only `base64-decode.c`, `getifaddrs.c`, `getifaddrs.h`, `lejp.c`, and `sha-1.c`
- From `plat` only `lws-plat-unix.c` and `lws-plat-win.c`
- From `roles` only `private.h`, `h1`, `http`, `listen`, `pipe`, `raw`, `ws`
- From `roles/http` exclude `minilex.c` and the `compression` subfolder
- From `roles/http` exclude `minilex.c`
- From `roles/http/server` exclude `access-log.c`, `lws-spa.c`, `ranges.c`, and `rewrite.c`
- From `roles/ws` exclude `ext` folder.
- From `tls` exclude `openssl` folder.
Expand Down