summaryrefslogtreecommitdiff
path: root/python-gnutls-1.1.9/gnutls/library/_gnutls_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'python-gnutls-1.1.9/gnutls/library/_gnutls_init.c')
-rw-r--r--python-gnutls-1.1.9/gnutls/library/_gnutls_init.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/python-gnutls-1.1.9/gnutls/library/_gnutls_init.c b/python-gnutls-1.1.9/gnutls/library/_gnutls_init.c
new file mode 100644
index 0000000..ff9156c
--- /dev/null
+++ b/python-gnutls-1.1.9/gnutls/library/_gnutls_init.c
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2007 AG Projects. See LICENSE for details.
+ * Author: Dan Pascu <dan@ag-projects.com>
+ *
+ * GNUTLS library initializations.
+ *
+ */
+
+#include <Python.h>
+
+#include <gnutls/gnutls.h>
+#include <gnutls/extra.h>
+#include <gcrypt.h>
+#include <errno.h>
+#include <pthread.h>
+
+// Use POSIX threads for libgcrypt locking
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
+
+// List of functions defined in the module
+static PyMethodDef gnutls_methods[] = {
+ {NULL, NULL} // sentinel
+};
+
+PyDoc_STRVAR(module_doc,
+"This module does behind the scenes GNUTLS initializations, like for example\n"
+"enabling thread safety in the gcrypt library and calling the GNUTLS global\n"
+"initialization functions.");
+
+// Initialization function for the module (must be called init_gnutls_init)
+PyMODINIT_FUNC
+init_gnutls_init(void)
+{
+ PyObject *m;
+
+ m = Py_InitModule3("_gnutls_init", gnutls_methods, module_doc);
+ if (m == NULL)
+ return;
+
+ // Enable thread safety for the posix threads library.
+ // This must be done before calling gnutls_global_init().
+ gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
+
+ gnutls_global_init();
+ gnutls_global_init_extra();
+}
+