Compare commits

...

4 Commits

6 changed files with 33 additions and 34 deletions

View File

@ -17,7 +17,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif() endif()
if (UNIX) if (UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -gz")
endif() endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")

View File

@ -77,6 +77,8 @@ IXWebSocket is actively being developed, check out the [changelog](https://machi
IXWebSocket client code is autobahn compliant beginning with the 6.0.0 version. See the current [test results](https://bsergean.github.io/autobahn/reports/clients/index.html). Some tests are still failing in the server code. IXWebSocket client code is autobahn compliant beginning with the 6.0.0 version. See the current [test results](https://bsergean.github.io/autobahn/reports/clients/index.html). Some tests are still failing in the server code.
Starting with the 11.0.8 release, IXWebSocket should be fully C++11 compatible.
## Users ## Users
If your company or project is using this library, feel free to open an issue or PR to amend this list. If your company or project is using this library, feel free to open an issue or PR to amend this list.

7
build.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/sh
rm -rf build
mkdir -p build
cd build
cmake -GNinja -DCMAKE_UNITY_BUILD=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=OFF ..
ninja

View File

@ -1,39 +1,25 @@
FROM alpine:3.12 as build # Build time
#
# Build with
# docker build --ssh default -t ws .
#
# focal == ubuntu 2020.04
# groovy == ubuntu 2020.10
FROM ubuntu:groovy
RUN apk add --no-cache \ RUN apt update
gcc g++ musl-dev linux-headers \
cmake mbedtls-dev make zlib-dev python3-dev ninja git
RUN addgroup -S app && \ RUN apt-get -y install g++ cmake make automake ccache libtool flex bison pkg-config git python3 jq
adduser -S -G app app && \ RUN apt-get -y install libjemalloc-dev libssl-dev libmcrypt-dev mcrypt zlib1g lua5.1-dev uuid-dev libz-dev binutils-dev
chown -R app:app /opt && \ RUN apt-get -y install libboost-dev libboost-test-dev libboost-program-options-dev libboost-all-dev libboost-regex-dev
chown -R app:app /usr/local RUN apt-get -y install ninja-build
# There is a bug in CMake where we cannot build from the root top folder COPY . /opt
# So we build from /opt
COPY --chown=app:app . /opt
WORKDIR /opt WORKDIR /opt
USER app RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN make -f makefile.dev ws_mbedtls_install && \ RUN rm -rf build
sh tools/trim_repo_for_docker.sh RUN --mount=type=ssh ./build.sh
FROM alpine:3.12 as runtime COPY /opt/build/ws/ws /usr/local/bin/ws
CMD ["/usr/local/bin/ws"]
RUN apk add --no-cache libstdc++ mbedtls ca-certificates python3 strace && \
addgroup -S app && \
adduser -S -G app app
COPY --chown=app:app --from=build /usr/local/bin/ws /usr/local/bin/ws
# COPY --chown=app:app --from=build /opt /opt
RUN chmod +x /usr/local/bin/ws && \
ldd /usr/local/bin/ws
# Now run in usermode
USER app
WORKDIR /home/app
ENTRYPOINT ["ws"]
EXPOSE 8008

View File

@ -188,6 +188,7 @@ namespace ix
{ {
client->send(msg->str, msg->binary); client->send(msg->str, msg->binary);
// Make sure the OS send buffer is flushed before moving on
do do
{ {
size_t bufferedAmount = client->bufferedAmount(); size_t bufferedAmount = client->bufferedAmount();

View File

@ -901,6 +901,9 @@ namespace ix
auto addr = res->ai_addr; auto addr = res->ai_addr;
// FIXME: this display weird addresses / we could steal libuv inet.c
// code which display correct results
char str[INET_ADDRSTRLEN]; char str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &addr, str, INET_ADDRSTRLEN); inet_ntop(AF_INET, &addr, str, INET_ADDRSTRLEN);