18 Commits
Author SHA1 Message Date
Max Lv a577ae0927 C++20 port 3/14: compile crypto, config, DNS, ACL and plugin modules as C++ (#3067)
* Make the crypto, config, DNS and plugin modules compile as C++

Cast allocator and memchr results explicitly, pass mbedtls_operation_t
to mbedtls_cipher_setkey, and declare the two locals in
ss2022_encrypt_first() before the gotos that jump past them. Drop the
unused RESOLV_MODE global that resolv.c defined by accident through an
anonymous enum declaration. Still valid C.

* Raise the test origin's listen backlog

socketserver listens with a backlog of 5. With concurrent connections
through the proxy on a loaded machine (parallel ctest), the backlog
overflows, the kernel resets the origin connection, and the proxy
correctly drops the client, which surfaced as intermittent
alloc_audit_report failures ("getpeername: Invalid argument" in
ss-local, "Connection reset by peer" in ss-server). Reproduced
reliably at 64 concurrent connections; gone with a backlog of 256.

* Compile the crypto, config, DNS, ACL and plugin modules as C++

Rename netutils, jconf, stream, aead, aead2022, aead2022_udp, crypto,
acl, plugin, plugin_disabled and resolv from .c to .cpp without changing
their contents, and update source lists, snippet references, test
comments and debian/copyright.

The Doxygen source list and scripts/check_cli_docs.py now accept either
extension for each module, so the remaining programs can move one at a
time. The new .cpp files are added to the no-heap ratchet baseline.
2026-10-15 09:52:17 +08:00
Max Lv 384810efce C++20 port 2/14: compile the leaf modules as C++ (#3066)
* Make headers and leaf modules compile as C++

Wrap the declarations of every project header in extern "C" (after the
system includes, which must keep C++ linkage), so converted modules and
the remaining C files agree on linkage.

In the leaf modules, cast allocator and memchr results explicitly,
rename identifiers called new, replace the getpwnam_r VLA with the
fixed 16 KiB buffer the loop already capped itself at, and make the
rlimit initialiser conversion explicit. All of this is still valid C.

* Compile the leaf modules as C++

Rename base64, json, ipset, process, ppbloom, rule, ssurl and cache from
.c to .cpp without touching their contents, and update the CMake source
lists, debian/copyright and the docs.

Ported code keeps -Wall; -Wextra is now opt-in through
ss_strict_warnings() for code written as C++ (the core tests).
check_no_heap.py gains a ratchet baseline for the converted modules,
which still allocate the way the C code did. A new check_cxx_runtime
test verifies with nm that the programs and libshadowsocks-c.a still
need no C++ runtime library, so C consumers are unaffected.

* Fix the Windows branches of process.cpp for C++

Cast allocator results and the thread argument explicitly and
value-initialise JOBOBJECT_EXTENDED_LIMIT_INFORMATION with {}. Found by
the zig x86_64-windows-gnu cross build.

* Keep clang-tidy clean for the converted modules

Once the C headers are included from C++ translation units,
bugprone-dynamic-static-initializers reports each extern variable
declaration in them; none is defined in a header, so disable the check.
Mark the two bounded memchr searches in ssurl.cpp, which
bugprone-not-null-terminated-result misreads as string copies.

* check_cxx_runtime: ignore glibc symbol versions

nm on glibc prints __cxa_atexit@GLIBC_2.2.5, which the allowlist for the
libc-provided __cxa_atexit/__cxa_finalize did not match.

* Keep GCC's C++-only warnings off for modules converted from C

GCC's C++ -Wall includes -Wsign-compare and -Wclass-memaccess, which C's
-Wall does not, so the converted modules failed -Werror on GCC (Linux,
UCRT64) although nothing in them changed. They keep the warning set they
were written against; code under ss_strict_warnings() re-enables both.
2026-10-15 09:48:18 +08:00
Roger Shimizu 0d96da4471 Sync debian/ folder with debian version 3.3.4+ds-3 2020-03-29 17:49:39 +09:00
Mygod 301fea635b Remove sniparser 2020-02-11 23:48:30 -05:00
Roger Shimizu 24ecf4d780 Sync debian/ folder with debian release 3.1.1+ds-1~exp1 2017-11-23 20:06:38 +09:00
Roger Shimizu 9185afb142 Update build script to enable jessie/stretch etc
Also include a few cleanup that simplified pkg installation from
backports repository.
2017-02-20 07:28:58 +08:00
Roger Shimizu 91643523c4 Bump debhelper 10
debhelper 10 is available in the following Debian/Ubuntu releases:
 - Debian 8.x Jessie (jessie-backports)
 - Debian 9.x Stretch / unstable
 - Ubuntu 16.04 Xenial (xenial-backports)
 - Ubuntu 16.10 Yakkety

debhelper supports dh-autoreconf and dh-systemd by default, so we can
safely remove a few Build-Depends and dh params.

We also sync a few other files under debian/ folder with Debian release
3.0.2+ds-1~exp1.
2017-02-16 20:38:08 +08:00
Roger Shimizu 71d5453f88 Sync debian/ folder with debian version 2.6.2+ds-1
Use asciidoc as Build-Depends, because user may build under Wheezy
or Ubuntu 14.04.
2017-01-22 13:29:12 +08:00
Roger Shimizu 1ce4bf903d Sync debian/ folder with v2.6.0+ds-2 2017-01-06 05:49:37 -06:00
Roger Shimizu 69f1c46778 debian/copyright: Update copyright year 2017-01-06 05:49:26 -06:00
Roger Shimizu fa81c6ec79 debian/copyright: Add new entry
Add new entry of copyright on src/base64.{c,h}
2017-01-06 05:49:26 -06:00
Roger Shimizu 65773723e4 sync debian/ folder with debian package 2.5.3+ds-1 (#866) 2016-10-04 09:55:42 -05:00
Max Lv d6ac986efa Update copyright 2016-07-11 09:33:05 +08:00
Roger Shimizu 86b3c3a245 Sync debian/ folder with version 2.4.7+20160630+ds-2 (#710)
Changes:
 - Add license of manpages to copyright
 - Change way to handle config file (config.json)
 - Add lintian-overrides
 - Rename/Update docs and install file
2016-07-10 08:58:58 -05:00
Roger Shimizu 75aeacadd1 Sync debian/ folder (#681)
A few itmes deserve to be mentioned:
 - use apg to generate random password when install.
 - generated password won't get updated when upgrading / reinstall.
 - add more to description to make lintian happy.
 - generated Makefile.am don't need to be listed in debian/copyright.
 - the way of installing systemd service is changed. Thanks to advice
   from Boyuan.
 - multi-arch can be archived without specific setting in debian/rules
 - add debian/watch file
2016-06-19 19:58:52 -05:00
Boyuan Yang 938ccd916f fixes debian/copyright 2015-10-14 15:36:59 +08:00
Boyuan Yang 643d579bdf Improve Debian packaging script.
if debuild or dpkg-buildpackage is used, it will generate 4 packages
to fit Debian's packaging policy.
2015-09-22 15:44:39 +08:00
Max Lv ff08838a19 add debian package description 2013-04-06 18:00:46 +08:00