commit db7aa486c9755f01ad2d745cefcf87bd9ad9d150
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-05-31T09:01:27Z |
| subject | Update docs |
commit db7aa486c9755f01ad2d745cefcf87bd9ad9d150
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-05-31T09:01:27Z
Update docs
---
devtools/TSAN.sh | 3 +++
devtools/race_test.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++
docs/tinyproxy.conf.5.scd | 3 +++
3 files changed, 57 insertions(+)
diff --git a/devtools/TSAN.sh b/devtools/TSAN.sh
new file mode 100755
index 0000000..ab0ab02
--- /dev/null
+++ b/devtools/TSAN.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+CC=clang EXTRA_CFLAGS="-Og -g3 -DTINYPROXY_DEBUG -fsanitize=thread -fno-omit-frame-pointer" LDFLAGS="-fsanitize=thread" LIBEVENT_SRC=libevent2/ make clean all
diff --git a/devtools/race_test.py b/devtools/race_test.py
new file mode 100755
index 0000000..4a509fe
--- /dev/null
+++ b/devtools/race_test.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+import argparse
+import socket
+import threading
+import time
+
+
+def worker(sock: socket.socket, host: str, port: int, count: int, payload: bytes) -> None:
+ for _ in range(count):
+ sock.sendto(payload, (host, port))
+
+
+def main() -> None:
+ ap = argparse.ArgumentParser()
+ ap.add_argument("--host", default="127.0.0.1")
+ ap.add_argument("--port", type=int, default=24801)
+ ap.add_argument("--threads", type=int, default=32)
+ ap.add_argument("--count", type=int, default=100)
+ ap.add_argument("--payload", default="x")
+ args = ap.parse_args()
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ sock.bind(("127.0.0.1", 0))
+
+ print(f"client={sock.getsockname()} target={(args.host, args.port)}")
+ print(f"sending {args.threads * args.count} packets")
+
+ payload = args.payload.encode()
+ threads = []
+
+ start = time.time()
+
+ for _ in range(args.threads):
+ t = threading.Thread(
+ target=worker,
+ args=(sock, args.host, args.port, args.count, payload),
+ )
+ t.start()
+ threads.append(t)
+
+ for t in threads:
+ t.join()
+
+ elapsed = time.time() - start
+ print(f"done in {elapsed:.3f}s")
+
+ sock.close()
+
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/docs/tinyproxy.conf.5.scd b/docs/tinyproxy.conf.5.scd
index 93e58f8..fc40c92 100644
--- a/docs/tinyproxy.conf.5.scd
+++ b/docs/tinyproxy.conf.5.scd
@@ -34,6 +34,9 @@ connect_timeout=SECONDS
Connection timeout for both listen and upstream.
Default: 5
+broadcast_reply
+ UDP only. Forward broadcast packets to the upstream and relay replies from the listening endpoint.
+
# ENDPOINTS
unix /tmp/backend.sock