Commit graph

274 commits

Author SHA1 Message Date
Björn Svensson
2c06b8d750 Fix Clang compiler warnings
When building using a newer Clang with additional diagnostics
the following warnings are given:
 -Wunused-but-set-variable
 -Wstrict-prototypes
These issues are corrected in this commit.

Reproducable using:
CC="clang-13" CFLAGS="-Wall -pedantic" cmake ..
2023-10-26 12:24:50 +02:00
Bjorn Svensson
9b69f38527
Fix leak in r3_tree_insert_pathl_ex() (#150)
Includes a testcase triggering the issue when building with
the leak sanitizer.

Resource leak (CID 355063) found by Coverity,
2022-07-20 13:23:45 +02:00
Yo-An Lin
76e2770304
Merge pull request #148 from Nordix/faulty-slug-in-insert-route
Handle incomplete slug pattern when inserting a route
2021-11-05 09:27:52 +08:00
Björn Svensson
2f3e0b01ff Handle incomplete slug in insert route 2021-11-04 20:22:10 +01:00
Björn Svensson
f0dd25bd53 Remove unused memory pool 2021-11-03 21:22:48 +01:00
Björn Svensson
9c8feff07f Correcting leaks in tests
A couple of testcases did not free its `match_entry` allocations,
which triggers leak indications.
Visible when build and run using the leak sanitizer, i.e
`CFLAGS="-fno-omit-frame-pointer -fsanitize=leak" cmake ..`
2021-10-14 08:27:19 +02:00
Yo-An Lin
b13dc8aa6e
Merge pull request #131 from iresty/feature-ipv6
feature: supported to use ipv6 address match route.
2021-10-14 10:31:23 +08:00
Yo-An Lin
eca8d9992e
Merge pull request #143 from Nordix/str_array-fixes
Corrections in `str_array`
2021-10-14 10:29:49 +08:00
Björn Svensson
383717a8c7 Update the faulty access macros for str_array
Adds a testcase for the usage of the access macros, and also
updates the testsuite to only include what str_array requires.
This shows that str_array can be used separately by users.
2021-10-13 08:47:20 +02:00
Björn Svensson
00ec8b7f2b Correct buffer over-read errors
When inserting multiple routes with common slug patterns
there are reads beyond end of strings.

The scenario is added as a testcase and can be triggered by
the address-sanitizer when built using:
`CFLAGS="-fno-omit-frame-pointer -fsanitize=address" cmake ..`

Indicated as a `buffer-overflow`
2021-10-11 10:19:09 +02:00
Björn Svensson
ff1ef2c148 Correcting issue with multiple edges
When `r3_node_find_common_prefix()` searches for the common prefix it
selects the first matched edge, which might not be the best match.

This issue gives memoryleaks which can be viewed in legacy
testcase `check_tree::test_insert_pathl()` by building using:
`CFLAGS="-fno-omit-frame-pointer -fsanitize=leak" cmake ..`
See testcase procedures:
    ret = r3_tree_insert_path(n, "/foo/{id}",  NULL);
    ..
    ret = r3_tree_insert_path(n, "/foo/{idx}/{idy}",  NULL);
    ..
    ret = r3_tree_insert_path(n, "/foo/{idx}/{idh}",  NULL); <-- leaks

Also added a testcase that triggers the problem including a leak for
reproduction on baseline.
2021-09-20 16:55:37 +02:00
Yuansheng
79fd587615 feature: supported to match ipv6 address. 2019-08-01 21:38:14 -04:00
Yuansheng
81f77ffe5a test: added test cases. 2019-07-21 08:46:37 -04:00
Yuansheng
845c47907f test: describe the test case name. 2019-07-21 07:48:11 +08:00
Yuansheng
2ad6b4c4f0 test: skip one test case, will fix it later. 2019-07-20 22:58:17 +08:00
Yuansheng
3364df80ee test: run test case check_routes2. 2019-07-20 22:55:44 +08:00
Yuansheng
d516237aab optimize: optimized pattern .*, which can be used prefix matching. 2019-07-20 10:52:56 -04:00
Yo-An Lin
41685d402d
Merge pull request #129 from iresty/make-warning
change: avoided compiling warning.
2019-07-20 18:00:48 +08:00
Yo-An Lin
fd34c7244a
Merge branch '2.0' into feature-scheme 2019-07-20 17:56:59 +08:00
Yuansheng
91cfc9d282 test: run the test case check_http_scheme. 2019-07-20 07:21:05 +08:00
Yuansheng
0485554d44 change(tests/check_slug): avoided compiling warning. 2019-07-20 07:06:56 +08:00
Yuansheng
4b066dd0fc test: run all of the test cases. 2019-07-19 09:15:47 -04:00
Yuansheng
43666a1183 feature: supported to match http scheme. 2019-06-26 23:06:32 +08:00
Yuansheng
848b8efdca feature: supported to match remote ip address. 2019-06-19 23:36:37 -04:00
Yuansheng
917fa6e385 change: removed useless comments. 2019-06-20 11:21:04 +08:00
Yuansheng
4ab222a308 feature: supported wildcard match way for host. 2019-06-19 10:07:14 -04:00
Michael Steinert
b3dbf75da5 Remove zmalloc dependency
Zmalloc comes from Redis. It's purpose is to track total allocations so
that a maximum can be set. For more information see the following links:

https://groups.google.com/forum/#!topic/redis-db/dPRdpowqJsY
https://stackoverflow.com/questions/22729730/when-would-one-use-malloc-over-zmalloc

This allocator is slower, not needed, and conflicts with Zlib (when
linking statically). This patch removes Zmalloc in favor of the system
allocator. Application developers can still choose to override the
allocator in their applications, e.g. Jemalloc, TCMalloc, etc.

Fixes #104
2018-07-10 08:20:46 -05:00
Michael Steinert
d1c06cd3e9 Cleanup CMake build files 2018-07-05 11:43:22 -05:00
Michael Steinert
e9afe4b6cf Fix -Wdiscarded-qualifiers warnings 2018-07-05 11:43:22 -05:00
Michael Steinert
081ccb2bde Fix issues with check_tree test
This patch fixes a few issues in the check_tree test:

* Fix various memory leaks in test code
* Fix a double-free in test code
* Fix a memory leak in r3_tree_compile_patterns

One memory leak remains in the library code but it isn't obvious to me
how to fix it at the moment.
2018-07-05 09:58:20 -05:00
Martijn Otto
6565274ce8 We need 3rdparty for the normal build as well 2018-02-24 17:53:02 +01:00
Martijn Otto
1fceec760f We need to link to 3rdparty to be able to build the tests 2018-02-24 17:50:33 +01:00
Martijn Otto
2f96c59929 Further WIP, got the tests to link against pthread (was broken due to pkg-config not specifying -pthread as -lpthread and cmake thus not recognizing it as a library) 2018-02-24 17:45:15 +01:00
karantin2020
75438ef3d3 Changed r3 memory model, made few optimizing 2016-03-22 07:23:37 +05:00
c9s
03031e02aa Fix r3 json writer 2015-11-18 14:27:28 +08:00
c9s
c3ef959539 Add route namespace
Summary:

    type route now becomes R3Route

Related issue #63
2015-11-18 14:16:26 +08:00
c9s
49ffb454f7 Add namespace for node/edge structs
node => R3Node
edge => R3Edge

Related issue #63
2015-11-18 12:53:46 +08:00
c9s
b0971e1553 Fix include 2015-11-17 21:35:18 +08:00
c9s
973a2cb85c Move private functions to private header files 2015-11-17 21:17:35 +08:00
c9s
b52af2acbd Add padding to edge structure 2015-11-17 18:32:51 +08:00
c9s
89e4517772 Fix zero-length path insertion
Fixes: #86, #85
2015-11-17 16:10:26 +08:00
c9s
2f3bcb7116 refactoring testcase group 2015-11-17 15:37:10 +08:00
c9s
b70c239b2c Fix benchmark warning 2015-11-17 15:37:10 +08:00
c9s
5f39b73211 Add test_root_match test case 2015-10-18 07:39:50 +08:00
Ricky Su
f445c261c6 add r3_slug_find_name and rename slug_count to r3_slug_count 2015-08-26 22:00:23 +08:00
c9s
72f10015d5 Fix copyright email 2014-06-27 13:24:40 +08:00
c9s
8ebaac0536 Fix CMakeLists.txt 2014-06-18 20:28:13 +08:00
c9s
25e3644630 put cmake_modules files back, we can support two build systems 2014-06-18 20:28:13 +08:00
c9s
98f27dadc9 test matched route data 2014-06-12 18:52:56 +08:00
c9s
5137d4d8e4 simplify functions to macro 2014-06-04 23:13:08 +08:00