summaryrefslogtreecommitdiff
path: root/pythonmod
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2024-05-10 20:48:53 +0000
committerCy Schubert <cy@FreeBSD.org>2024-05-10 20:48:53 +0000
commitc2a80056864d6eda0398fd127dc0ae515b39752b (patch)
tree92e6196ae61df0fa7e4db654f78dfd837cc41826 /pythonmod
parent5a33598e88ad8fbc0affa74dee0a2d8cc4010fbc (diff)
Diffstat (limited to 'pythonmod')
-rw-r--r--pythonmod/interface.i10
-rw-r--r--pythonmod/pythonmod.c2
2 files changed, 8 insertions, 4 deletions
diff --git a/pythonmod/interface.i b/pythonmod/interface.i
index d9839fc3866c..c876ab0729d2 100644
--- a/pythonmod/interface.i
+++ b/pythonmod/interface.i
@@ -1416,7 +1416,7 @@ struct delegpt* dns_cache_find_delegation(struct module_env* env,
int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags,
struct delegpt* dp, int supports_ipv4, int supports_ipv6, int use_nat64);
struct iter_hints_stub* hints_lookup_stub(struct iter_hints* hints,
- uint8_t* qname, uint16_t qclass, struct delegpt* dp);
+ uint8_t* qname, uint16_t qclass, struct delegpt* dp, int nolock);
/* Custom function to perform logic similar to the one in daemon/cachedump.c */
struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t nmlen);
@@ -1433,6 +1433,7 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n
struct query_info qinfo;
struct iter_hints_stub* stub;
uint32_t timenow = *qstate->env->now;
+ int nolock = 0;
regional_free_all(region);
qinfo.qname = (uint8_t*)nm;
@@ -1455,9 +1456,12 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n
dname_str((uint8_t*)nm, b);
continue;
}
- stub = hints_lookup_stub(qstate->env->hints, qinfo.qname, qinfo.qclass, dp);
+ stub = hints_lookup_stub(qstate->env->hints, qinfo.qname,
+ qinfo.qclass, dp, nolock);
if (stub) {
- return stub->dp;
+ struct delegpt* stubdp = delegpt_copy(stub->dp, region);
+ lock_rw_unlock(&qstate->env->hints->lock);
+ return stubdp;
} else {
return dp;
}
diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c
index c6294a1d50c9..b8f2d62fb966 100644
--- a/pythonmod/pythonmod.c
+++ b/pythonmod/pythonmod.c
@@ -356,11 +356,11 @@ int pythonmod_init(struct module_env* env, int id)
return 0;
}
#endif
- Py_NoSiteFlag = 1;
#if PY_MAJOR_VERSION >= 3
PyImport_AppendInittab(SWIG_name, (void*)SWIG_init);
#endif
#if PY_VERSION_HEX < 0x03080000
+ Py_NoSiteFlag = 1;
Py_Initialize();
#else
PyConfig_InitPythonConfig(&config);