projects
/
collectd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5f2f969
)
network: comment libgcrypt initalization process
author
Marc Fournier
<marc.fournier@camptocamp.com>
Wed, 15 Jan 2014 23:30:42 +0000
(
00:30
+0100)
committer
Marc Fournier
<marc.fournier@camptocamp.com>
Wed, 15 Jan 2014 23:36:01 +0000
(
00:36
+0100)
src/network.c
patch
|
blob
|
history
diff --git
a/src/network.c
b/src/network.c
index
be82c6f
..
f379a5c
100644
(file)
--- a/
src/network.c
+++ b/
src/network.c
@@
-500,8
+500,15
@@
static void network_init_gcrypt (void) /* {{{ */
if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P))
return;
if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P))
return;
+ /* http://www.gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
+ * To ensure thread-safety, it's important to set GCRYCTL_SET_THREAD_CBS
+ * *before* initalizing Libgcrypt with gcry_check_version(), which itself must
+ * be called before any other gcry_* function. GCRYCTL_ANY_INITIALIZATION_P
+ * above doesn't count, as it doesn't implicitly initalize Libgcrypt.
+ *
+ * tl;dr: keep all these gry_* statements in this exact order please. */
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
- gcry_check_version (NULL);
/* before calling *almost* any other functions */
+ gcry_check_version (NULL);
gcry_control (GCRYCTL_INIT_SECMEM, 32768);
gcry_control (GCRYCTL_INITIALIZATION_FINISHED);
} /* }}} void network_init_gcrypt */
gcry_control (GCRYCTL_INIT_SECMEM, 32768);
gcry_control (GCRYCTL_INITIALIZATION_FINISHED);
} /* }}} void network_init_gcrypt */