Download | Plain Text | Line Numbers


--- unbound-1.5.4.old/pythonmod/interface.i	2015-04-16 16:41:14.000000000 +0200
+++ unbound-1.5.4/pythonmod/interface.i	2015-09-10 00:59:04.878670776 +0200
@@ -160,11 +160,15 @@
 %}
 
 %inline %{
-   PyObject* dnameAsStr(const char* dname) {
+   PyObject* dnameAsStr(PyObject *dname_py) {
        char buf[LDNS_MAX_DOMAINLEN+1];
+       Py_ssize_t len;
+       char *dname;
+       if (PyBytes_AsStringAndSize(dname_py, &dname, &len) == -1)
+           return NULL;
        buf[0] = '\0';
        dname_str((uint8_t*)dname, buf);
-       return PyBytes_FromString(buf);
+       return PyString_FromString(buf);
    }
 %}
 
--- unbound-1.5.4.old/pythonmod/pythonmod.c	2015-04-16 16:41:14.000000000 +0200
+++ unbound-1.5.4/pythonmod/pythonmod.c	2015-09-08 00:27:09.905576839 +0200
@@ -134,6 +134,9 @@
    if (!Py_IsInitialized()) 
    {
 #if PY_MAJOR_VERSION >= 3
+      PyImport_AppendInittab("_unboundmodule", SWIG_init);
+#endif
+#if PY_MAJOR_VERSION >= 3
       wchar_t progname[8];
       mbstowcs(progname, "unbound", 8);
 #else
@@ -143,7 +146,9 @@
       Py_NoSiteFlag = 1;
       Py_Initialize();
       PyEval_InitThreads();
+#if PY_MAJOR_VERSION < 3
       SWIG_init();
+#endif
       pe->mainthr = PyEval_SaveThread();
    }
 
@@ -319,7 +324,7 @@
       pq = qstate->minfo[id] = malloc(sizeof(struct pythonmod_qstate));
 
       /* Initialize per query data */
-      pq->data = Py_None;
+      pq->data = PyList_New(0);
       Py_INCREF(pq->data);
    }