diff --git a/src/messages_server.c b/src/messages_server.c
index 39b3876..a389e0c 100644
--- a/src/messages_server.c
+++ b/src/messages_server.c
@@ -27,6 +27,7 @@
 
 #include <libyang/libyang.h>
 
+#include "session_server.h"
 #include "libnetconf.h"
 
 extern struct nc_server_opts server_opts;
@@ -64,7 +65,9 @@
 
     ret->type = NC_RPL_DATA;
     if (paramtype == NC_PARAMTYPE_DUP_AND_FREE) {
+        nc_ctx_lock(-1, NULL);
         ret->data = lyd_dup(data, 1);
+        nc_ctx_unlock();
     } else {
         ret->data = data;
     }
@@ -292,6 +295,7 @@
 
 fail:
     ERRARG;
+    va_end(ap);
     free(ret);
     return NULL;
 }
@@ -304,10 +308,13 @@
         return -1;
     }
 
+    nc_ctx_lock(-1, NULL);
     if (err->apptag) {
         lydict_remove(server_opts.ctx, err->apptag);
     }
     err->apptag = lydict_insert(server_opts.ctx, error_app_tag, 0);
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -319,10 +326,13 @@
         return -1;
     }
 
+    nc_ctx_lock(-1, NULL);
     if (err->path) {
         lydict_remove(server_opts.ctx, err->path);
     }
     err->path = lydict_insert(server_opts.ctx, error_path, 0);
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -334,6 +344,7 @@
         return -1;
     }
 
+    nc_ctx_lock(-1, NULL);
     if (err->message) {
         lydict_remove(server_opts.ctx, err->apptag);
     }
@@ -347,6 +358,8 @@
     } else {
         lang = NULL;
     }
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -372,7 +385,11 @@
 
     ++err->attr_count;
     err->attr = realloc(err->attr, err->attr_count * sizeof *err->attr);
+
+    nc_ctx_lock(-1, NULL);
     err->attr[err->attr_count - 1] = lydict_insert(server_opts.ctx, attr_name, 0);
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -386,7 +403,11 @@
 
     ++err->elem_count;
     err->elem = realloc(err->elem, err->elem_count * sizeof *err->elem);
+
+    nc_ctx_lock(-1, NULL);
     err->elem[err->elem_count - 1] = lydict_insert(server_opts.ctx, elem_name, 0);
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -400,7 +421,11 @@
 
     ++err->ns_count;
     err->ns = realloc(err->ns, err->ns_count * sizeof *err->ns);
+
+    nc_ctx_lock(-1, NULL);
     err->ns[err->ns_count - 1] = lydict_insert(server_opts.ctx, ns_name, 0);
+    nc_ctx_unlock();
+
     return 0;
 }
 
@@ -425,8 +450,11 @@
         return;
     }
 
+    nc_ctx_lock(-1, NULL);
     lyxml_free(rpc->tree->schema->module->ctx, rpc->root);
     lyd_free(rpc->tree);
+    nc_ctx_unlock();
+
     free(rpc);
 }
 
@@ -445,6 +473,7 @@
     case NC_RPL_DATA:
         data_rpl = (struct nc_server_reply_data *)reply;
         if (data_rpl->free) {
+            nc_ctx_lock(-1, NULL);
             lyd_free_withsiblings(data_rpl->data);
         }
         break;
@@ -473,6 +502,7 @@
         return;
     }
 
+    nc_ctx_lock(-1, NULL);
     lydict_remove(server_opts.ctx, err->apptag);
     lydict_remove(server_opts.ctx, err->path);
     lydict_remove(server_opts.ctx, err->message);
@@ -492,6 +522,7 @@
     for (i = 0; i < err->other_count; ++i) {
         lyxml_free(server_opts.ctx, err->other[i]);
     }
+    nc_ctx_unlock();
     free(err->other);
     free(err);
 }
