Skip to content

winrt: fix crash on access to deleted shared complete handler #673

winrt: fix crash on access to deleted shared complete handler

winrt: fix crash on access to deleted shared complete handler #673

Workflow file for this run

name: Build - macOS
on: [workflow_dispatch, push, pull_request]
env:
TERM: xterm-256color
jobs:
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
include:
- name: Build - macOS Xcode
runs-on: macos-latest
compiler: clang
cxx-compiler: clang++
cmake-args: -G Xcode -D PROXYRES_CODE_COVERAGE=ON
codecov: macos
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Generate project
run: |
cmake -S . -B build ${{ matrix.cmake-args }} \
-D CMAKE_BUILD_TYPE=RelWithDebInfo \
-D BUILD_SHARED_LIBS=OFF
env:
CC: ${{ matrix.compiler }}
CXX: ${{ matrix.cxx-compiler }}
- name: Build project
run: cmake --build build --config RelWithDebInfo
- name: Setup node version
uses: actions/setup-node@v3
with:
node-version: 18.18.0
- name: Install test dependencies
run: |
corepack enable
yarn install
working-directory: test
- name: Run test http server
run: |
npx pm2 start http_server_cmd.js
sleep 15
working-directory: test
- name: Run test dhcp server
# Used by wpad.dhcp googletest
run: |
npx pm2 start dhcp_server_cmd.js --output dhcp_server.log
sleep 5
working-directory: test
- name: Run tests
run: ctest --verbose -C RelWithDebInfo
working-directory: build
#env:
# WPAD: true
- name: Download pac from http server
run: curl -v http://127.0.0.1:8080/pac.js
working-directory: test
- name: Dump proxy info
run: scutil --proxy
- name: Dump network services
run: networksetup -listallnetworkservices
- name: Turn on proxy auto discovery (networksetup)
run: networksetup -setproxyautodiscovery Ethernet on
- name: Check proxy auto discovery setting (networksetup)
run: |
out=$(./proxycli config auto_discover)
echo "Auto discovery: $out"
if [ "$out" = "enabled" ]; then
echo "Auto discovery set successfully"
else
echo "Auto discovery set failed"
exit 1
fi
working-directory: build/test/RelWithDebInfo
- name: Turn off proxy auto discovery (networksetup)
run: networksetup -setproxyautodiscovery Ethernet off
- name: Set proxy auto config url setting (networksetup)
run: networksetup -setautoproxyurl Ethernet http://wpad/wpad3.dat
- name: Check proxy auto config url setting (networksetup)
run: |
out=$(./proxycli config auto_config_url)
echo "Auto config url: $out"
if [ "$out" = "http://wpad/wpad3.dat" ]; then
echo "Auto config url set successfully"
else
echo "Auto config url set failed"
exit 1
fi
working-directory: build/test/RelWithDebInfo
- name: Set manual proxy settings (networksetup)
run: |
networksetup -setwebproxy Ethernet my.proxy7.com 8007
networksetup -setsecurewebproxy Ethernet my.proxy8.com 8008
networksetup -setproxybypassdomains Ethernet hi.com world.com
- name: Check manual proxy settings (networksetup)
shell: bash
run: |
out=$(./proxycli config proxy http)
echo "Proxy (http): $out"
if [ "$out" = "my.proxy7.com:8007" ]; then
echo "Proxy (http) set successfully"
else
echo "Proxy (http) set failed"
exit 1
fi
out=$(./proxycli config proxy https)
echo "Proxy (https): $out"
if [ "$out" = "my.proxy8.com:8008" ]; then
echo "Proxy (https) set successfully"
else
echo "Proxy (https) set failed"
exit 1
fi
out=$(./proxycli config bypass_list)
echo "Proxy bypass: $out"
if [ "$out" = "hi.com,world.com" ]; then
echo "Proxy bypass set successfully"
else
echo "Proxy bypass set failed"
exit 1
fi
working-directory: build/test/RelWithDebInfo
- name: Set proxy auto config url setting (networksetup)
run: |
networksetup -setautoproxyurl Ethernet http://127.0.0.1:8080/pac.js
networksetup -setautoproxystate Ethernet on
- name: Check proxy resolution (networksetup)
shell: bash
run: |
out=$(./proxycli config auto_config_url)
echo "Auto config url: $out"
if [ "$out" = "http://127.0.0.1:8080/pac.js" ]; then
echo "Auto config url set successfully"
else
echo "Auto config url set failed"
exit 1
fi
out=$(./proxycli resolve https://google.com/)
echo "Proxy for https://google.com/: $out"
if [ "$out" = "direct://" ]; then
echo "Proxy for https://google.com/ set successfully"
else
echo "Proxy for https://google.com/ set failed"
exit 1
fi
out=$(./proxycli resolve http://simple.com/)
echo "Proxy for http://simple.com/: $out"
if [ "$out" = "http://no-such-proxy:80" ]; then
echo "Proxy for http://simple.com/ set successfully"
else
echo "Proxy for http://simple.com/ set failed"
exit 1
fi
out=$(./proxycli resolve https://simple.com/)
echo "Proxy for https://simple.com/: $out"
if [ "$out" = "http://no-such-proxy:80" ]; then
echo "Proxy for https://simple.com/ set successfully"
else
echo "Proxy for https://simple.com/ set failed"
exit 1
fi
out=$(./proxycli resolve https://multi-legacy.com/)
echo "Proxy for https://multi-legacy.com/: $out"
if [ "$out" = "http://some-such-proxy:443,http://any-such-proxy:41" ]; then
echo "Proxy for https://multi-legacy.com/ set successfully"
else
echo "Proxy for https://multi-legacy.com/ set failed"
exit 1
fi
working-directory: build/test/RelWithDebInfo
- name: Reset proxy settings (networksetup)
run: |
networksetup -setautoproxystate Ethernet off
networksetup -setwebproxystate Ethernet off
networksetup -setsecurewebproxystate Ethernet off
- name: Generate coverage report
if: always() && matrix.codecov
run: |
python3 -u -m pip install --user gcovr
python3 -m gcovr \
--exclude-unreachable-branches \
--gcov-ignore-parse-errors \
--root . \
--xml \
--output coverage.xml \
--verbose
- name: Upload coverage report
uses: codecov/codecov-action@v2
if: always() && matrix.codecov && env.CODECOV_TOKEN != ''
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: ${{ matrix.codecov }}
name: ${{ matrix.name }}
verbose: false
fail_ci_if_error: true
env:
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}"
- name: Upload build errors
uses: actions/upload-artifact@v2
if: failure()
with:
name: Build Errors - ${{ matrix.name }}
path: |
**/CMakeFiles/CMakeOutput.log
**/CMakeFiles/CMakeError.log
**/Testing/Temporary/LastTest.log
**/*.log
retention-days: 3