diff options
author | 2023-08-28 08:38:30 -0700 | |
---|---|---|
committer | 2023-08-28 08:38:30 -0700 | |
commit | a2ddfe6913c1884bfef6314d00cf2b708281ff79 (patch) | |
tree | 88e436313a73d2ab1426ac94be122d62fecb72bc /packages/bun-usockets/tests/sni_test.c | |
parent | 6e4a1f2918cb4dbcc035d350d6cd9f018ea8df59 (diff) | |
download | bun-a2ddfe6913c1884bfef6314d00cf2b708281ff79.tar.gz bun-a2ddfe6913c1884bfef6314d00cf2b708281ff79.tar.zst bun-a2ddfe6913c1884bfef6314d00cf2b708281ff79.zip |
Bring uSockets & uWebSockets forks into Bun's repository (#4372)
* Move uWebSockets and uSockets forks into Bun's repository
* Update Makefile
* Update settings.json
* Update libuwsockets.cpp
* Remove backends we won't be using
* Update bindings.cpp
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'packages/bun-usockets/tests/sni_test.c')
-rw-r--r-- | packages/bun-usockets/tests/sni_test.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/packages/bun-usockets/tests/sni_test.c b/packages/bun-usockets/tests/sni_test.c new file mode 100644 index 000000000..9de1ffbcf --- /dev/null +++ b/packages/bun-usockets/tests/sni_test.c @@ -0,0 +1,57 @@ +extern "C" { +void *sni_new(); +void sni_free(void *sni, void (*cb)(void *user)); +int sni_add(void *sni, const char *hostname, void *user); +void *sni_remove(void *sni, const char *hostname); +void *sni_find(void *sni, const char *hostname); +} + +#include <assert.h> +#include <stdio.h> + +/* Todo: replace 13, 14 and 15 with malloc */ +//void *WILDCARD_GOOGLE_COM = strdup("*.google.com"); +//void *TEST_GOOGLE_COM = strdup("test.google.com"); + +void sni_free_cb(void *user) { + printf("Freeing %p\n", user); +} + +int main() { + + void *sni = sni_new(); + + /* Adding should succeed */ + assert(sni_add(sni, "*.google.com", 13) == 0); + assert(sni_add(sni, "test.google.com", 14) == 0); + + /* Adding the same name should not overwrite existing */ + assert(sni_add(sni, "*.google.com", 15) != 0); + assert(sni_find(sni, "anything.google.com") == 13); + + assert(sni_find(sni, "docs.google.com") == 13); + assert(sni_find(sni, "*.google.com") == 13); + assert(sni_find(sni, "test.google.com") == 14); + assert(sni_find(sni, "yolo.nothing.com") == 0); + assert(sni_find(sni, "yolo.google.com") == 13); + + /* Removing should work */ + assert(sni_remove(sni, "test.google.com") == 14); + assert(sni_find(sni, "test.google.com") == 13); + assert(sni_remove(sni, "*.google.com") == 13); + assert(sni_find(sni, "test.google.com") == 0); + + /* Removing parent with data should not remove child with data */ + assert(sni_add(sni, "www.google.com", 16) == 0); + assert(sni_add(sni, "www.google.com.au.ck.uk", 17) == 0); + assert(sni_find(sni, "www.google.com") == 16); + assert(sni_find(sni, "www.google.com.au.ck.uk") == 17); + assert(sni_remove(sni, "www.google.com.yolo") == 0); + assert(sni_remove(sni, "www.google.com.au.ck.uk") == 17); + assert(sni_find(sni, "www.google.com") == 16); + + /* Free should not leave anything remaining (test with ASAN leaksanitizer) */ + sni_free(sni, sni_free_cb); + + printf("OK\n"); +} |