summaryrefslogtreecommitdiff
path: root/src/ext
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-07-11 15:36:54 -0400
committerNick Mathewson <nickm@torproject.org>2018-07-13 12:35:22 -0400
commitd811ce2421dcf1684db7e34f2b5998d9f360d5fb (patch)
treef914d9ef7ab706dac95279ce4c95f8e8b0fd5535 /src/ext
parentc317e78dd75b6bf9c195c9bef5a0b8300d55411a (diff)
downloadtor-d811ce2421dcf1684db7e34f2b5998d9f360d5fb.tar.gz
tor-d811ce2421dcf1684db7e34f2b5998d9f360d5fb.zip
Add postfork support for nss
We need this in our unit tests, since otherwise NSS will notice we've forked and start cussing us out. I suspect we'll need a different hack for daemonizing, but this should be enough for tinytest to work.
Diffstat (limited to 'src/ext')
-rw-r--r--src/ext/tinytest.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ext/tinytest.c b/src/ext/tinytest.c
index 3fb1b39c71..8b2c71bebf 100644
--- a/src/ext/tinytest.c
+++ b/src/ext/tinytest.c
@@ -25,6 +25,7 @@
#ifdef TINYTEST_LOCAL
#include "tinytest_local.h"
#endif
+#define TINYTEST_POSTFORK
#include <stdio.h>
#include <stdlib.h>
@@ -118,6 +119,12 @@ testcase_run_bare_(const struct testcase_t *testcase)
#ifndef NO_FORKING
+#ifdef TINYTEST_POSTFORK
+void tinytest_postfork(void);
+#else
+static void tinytest_postfork(void) { }
+#endif
+
static enum outcome
testcase_run_forked_(const struct testgroup_t *group,
const struct testcase_t *testcase)
@@ -187,6 +194,7 @@ testcase_run_forked_(const struct testgroup_t *group,
int test_r, write_r;
char b[1];
close(outcome_pipe[0]);
+ tinytest_postfork();
test_r = testcase_run_bare_(testcase);
assert(0<=(int)test_r && (int)test_r<=2);
b[0] = "NYS"[test_r];