diff options
| author | Cy Schubert <cy@FreeBSD.org> | 2024-05-10 20:48:53 +0000 |
|---|---|---|
| committer | Cy Schubert <cy@FreeBSD.org> | 2024-05-10 20:48:53 +0000 |
| commit | c2a80056864d6eda0398fd127dc0ae515b39752b (patch) | |
| tree | 92e6196ae61df0fa7e4db654f78dfd837cc41826 /pythonmod | |
| parent | 5a33598e88ad8fbc0affa74dee0a2d8cc4010fbc (diff) | |
Diffstat (limited to 'pythonmod')
| -rw-r--r-- | pythonmod/interface.i | 10 | ||||
| -rw-r--r-- | pythonmod/pythonmod.c | 2 |
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); |
