Skip to content

Commit

Permalink
Use IPv4 on WSL machines (#2729)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
osis authored Jan 28, 2021
1 parent 4c393f0 commit 51ccd19
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 11 deletions.
16 changes: 5 additions & 11 deletions app/client/start-https.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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*)
# ignore to continue using host.docker.internal
;;
*WSL*)

source ../util/is_wsl.sh
if [ $IS_WSL ]; then
# 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...
"
Expand Down
5 changes: 5 additions & 0 deletions app/server/scripts/start-dev-server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 13 additions & 0 deletions app/util/is_wsl.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 44 additions & 0 deletions app/util/is_wsl_test.sh
Original file line number Diff line number Diff line change
@@ -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!"

0 comments on commit 51ccd19

Please sign in to comment.