Use IPv4 on WSL machines (#2729)

WSL has issues when handling IPv6 ips. In order to resolve this, on dev machines, we now check if it's a WSL environment. If yes, we default to using IPv4 instead of IPv6.
This commit is contained in:
Dwayne Forde 2021-01-28 01:38:44 -05:00 committed by GitHub
parent 4c393f0f1f
commit 51ccd19081
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 11 deletions

View File

@ -63,24 +63,18 @@ client_proxy_pass="${default_client_proxy}"
network_mode="bridge"
case "${uname_out}" in
Linux*) machine=Linux
proc_version="$(cat /proc/version)"
case "$proc_version" in
*icrosoft*)
source ../util/is_wsl.sh
if [ $IS_WSL ]; then
# ignore to continue using host.docker.internal
;;
*WSL*)
# ignore to continue using host.docker.internal
;;
*)
else
network_mode="host"
client_proxy_pass=$default_linux_client_proxy
# if no server was passed
if [[ -z $1 ]]; then
server_proxy_pass=$default_linux_server_proxy
fi
;;
esac
fi
echo "
Starting nginx for Linux...
"

View File

@ -10,4 +10,9 @@ if [[ -f .env ]]; then
source .env
fi
source ../util/is_wsl.sh
if [ $IS_WSL ]; then
_JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true $_JAVA_OPTIONS"
fi
(cd dist && exec java -jar server-*.jar)

13
app/util/is_wsl.sh Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
IS_WSL=
proc_version="$(cat /proc/version)"
case "$proc_version" in
*icrosoft*)
IS_WSL=true
;;
*WSL*)
IS_WSL=true
;;
esac

44
app/util/is_wsl_test.sh Executable file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
set -e
DIR="$(cd "$(dirname "$0")" && pwd)"
distro=
cat() {
echo $distro
}
fail() {
local reason=$1
echo "${reason}
context: ${distro}"
exit 1
}
stub_distro() {
local name=$1
distro=$name
source $DIR/is_wsl.sh
}
stub_distro "Linux Computer 4.19.104-microsoft-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux"
if [ ! $IS_WSL ]; then
fail "Failed: Detected lack of WSL where it should have."
fi
stub_distro "Linux Computer 4.19.104-WSL-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux"
if [ ! $IS_WSL ]; then
fail "Failed: Detected lack of WSL where it should have."
fi
stub_distro "Linux pop-os 5.3.0-22-generic #24+system76~1573659475~19.04~26b2022-Ubuntu SMP Wed Nov 13 20:0 x86_64 x86_64 x86_64 GNU/Linux"
if [ $IS_WSL ]; then
fail "Failed: Detected WSL where it shouldn't have."
fi
echo "All Tests Pass!"