Blame SOURCES/0001-Suppress-errors-to-stderr-and-use-thread-local-virEr.patch

bda309
From 68fae1ec3de46fd9eec88fb7c1894ea7ed85ccc9 Mon Sep 17 00:00:00 2001
bda309
From: "Richard W.M. Jones" <rjones@redhat.com>
bda309
Date: Tue, 17 Mar 2015 12:51:50 +0000
bda309
Subject: [PATCH 1/2] Suppress errors to stderr and use thread-local
bda309
 virErrorPtr
bda309
bda309
This allows us to capture errors that happen during virConnectOpen,
bda309
without spewing error messages on stderr.
bda309
bda309
The patch is rather large, only because we don't need to pass the
bda309
virConnectPtr argument to CHECK_ERROR/_raise_virterror any longer.
bda309
---
bda309
 libvirt/generator.pl         |  66 ++++++------
bda309
 libvirt/libvirt_c.c          | 241 +++++++++++++++++--------------------------
bda309
 libvirt/libvirt_c_epilogue.c |   4 +-
bda309
 libvirt/libvirt_c_oneoffs.c  |  94 +++++++----------
bda309
 libvirt/libvirt_c_prologue.c |   6 +-
bda309
 5 files changed, 169 insertions(+), 242 deletions(-)
bda309
bda309
diff --git a/libvirt/generator.pl b/libvirt/generator.pl
bda309
index 421592b..34801ba 100755
bda309
--- a/libvirt/generator.pl
bda309
+++ b/libvirt/generator.pl
bda309
@@ -343,17 +343,13 @@ sub gen_unpack_args
bda309
     if ($_ eq "conn") {
bda309
 	"virConnectPtr conn = Connect_val (connv);"
bda309
     } elsif ($_ eq "dom") {
bda309
-	"virDomainPtr dom = Domain_val (domv);\n".
bda309
-	"  virConnectPtr conn = Connect_domv (domv);"
bda309
+	"virDomainPtr dom = Domain_val (domv);"
bda309
     } elsif ($_ eq "net") {
bda309
-	"virNetworkPtr net = Network_val (netv);\n".
bda309
-	"  virConnectPtr conn = Connect_netv (netv);"
bda309
+	"virNetworkPtr net = Network_val (netv);"
bda309
     } elsif ($_ eq "pool") {
bda309
-	"virStoragePoolPtr pool = Pool_val (poolv);\n".
bda309
-	"  virConnectPtr conn = Connect_polv (poolv);"
bda309
+	"virStoragePoolPtr pool = Pool_val (poolv);"
bda309
     } elsif ($_ eq "vol") {
bda309
-	"virStorageVolPtr vol = Volume_val (volv);\n".
bda309
-	"  virConnectPtr conn = Connect_volv (volv);"
bda309
+	"virStorageVolPtr vol = Volume_val (volv);"
bda309
     } else {
bda309
 	die "unknown short name $_"
bda309
     }
bda309
@@ -402,7 +398,7 @@ sub gen_c_code
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -415,7 +411,7 @@ sub gen_c_code
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -426,7 +422,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 "
bda309
@@ -438,7 +434,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   /* UUIDs are byte arrays with a fixed length. */
bda309
   rv = caml_alloc_string (VIR_UUID_BUFLEN);
bda309
@@ -453,7 +449,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   rv = caml_copy_string (uuid);
bda309
   CAMLreturn (rv);
bda309
@@ -464,7 +460,7 @@ sub gen_c_code
bda309
   int r, b;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, &b);;
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (b ? Val_true : Val_false);
bda309
 "
bda309
@@ -476,7 +472,7 @@ sub gen_c_code
bda309
   b = bv == Val_true ? 1 : 0;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, b));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -498,7 +494,7 @@ sub gen_c_code
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = $c_name (conn, ids, i));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i)
bda309
@@ -525,7 +521,7 @@ sub gen_c_code
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -543,7 +539,7 @@ sub gen_c_code
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -555,7 +551,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, 0));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -565,7 +561,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -575,7 +571,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   " . gen_free_arg ($1) . "
bda309
@@ -589,7 +585,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -601,7 +597,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -614,7 +610,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -629,7 +625,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -645,7 +641,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str, u));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -659,7 +655,7 @@ sub gen_c_code
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, i));
bda309
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
bda309
+  CHECK_ERROR (r == -1, \"$c_name\");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 "
bda309
@@ -673,7 +669,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, i));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($3) . "
bda309
 
bda309
@@ -688,7 +684,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, uuid));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -702,7 +698,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -716,7 +712,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   " . gen_pack_result ($2) . "
bda309
 
bda309
@@ -731,7 +727,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   connv = Field ($3v, 1);
bda309
   " . gen_pack_result ($2) . "
bda309
@@ -747,7 +743,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, str, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   connv = Field ($3v, 1);
bda309
   " . gen_pack_result ($2) . "
bda309
@@ -762,7 +758,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1, 0));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   connv = Field ($3v, 1);
bda309
   " . gen_pack_result ($2) . "
bda309
@@ -777,7 +773,7 @@ sub gen_c_code
bda309
   $c_ret_type r;
bda309
 
bda309
   NONBLOCKING (r = $c_name ($1));
bda309
-  CHECK_ERROR (!r, conn, \"$c_name\");
bda309
+  CHECK_ERROR (!r, \"$c_name\");
bda309
 
bda309
   connv = Field ($3v, 1);
bda309
   " . gen_pack_result ($2) . "
bda309
diff --git a/libvirt/libvirt_c.c b/libvirt/libvirt_c.c
bda309
index 6e56682..8d51944 100644
bda309
--- a/libvirt/libvirt_c.c
bda309
+++ b/libvirt/libvirt_c.c
bda309
@@ -61,7 +61,7 @@ ocaml_libvirt_connect_close (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectClose (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectClose");
bda309
+  CHECK_ERROR (r == -1, "virConnectClose");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Connect_val (connv) = NULL;
bda309
@@ -83,7 +83,7 @@ ocaml_libvirt_connect_get_hostname (value connv)
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetHostname (conn));
bda309
-  CHECK_ERROR (!r, conn, "virConnectGetHostname");
bda309
+  CHECK_ERROR (!r, "virConnectGetHostname");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -104,7 +104,7 @@ ocaml_libvirt_connect_get_uri (value connv)
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetURI (conn));
bda309
-  CHECK_ERROR (!r, conn, "virConnectGetURI");
bda309
+  CHECK_ERROR (!r, "virConnectGetURI");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -125,7 +125,7 @@ ocaml_libvirt_connect_get_type (value connv)
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetType (conn));
bda309
-  CHECK_ERROR (!r, conn, "virConnectGetType");
bda309
+  CHECK_ERROR (!r, "virConnectGetType");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -144,7 +144,7 @@ ocaml_libvirt_connect_num_of_domains (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfDomains (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfDomains");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfDomains");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -174,7 +174,7 @@ ocaml_libvirt_connect_list_domains (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListDomains (conn, ids, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListDomains");
bda309
+  CHECK_ERROR (r == -1, "virConnectListDomains");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i)
bda309
@@ -196,7 +196,7 @@ ocaml_libvirt_connect_num_of_defined_domains (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfDefinedDomains (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfDefinedDomains");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfDefinedDomains");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -227,7 +227,7 @@ ocaml_libvirt_connect_list_defined_domains (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListDefinedDomains (conn, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListDefinedDomains");
bda309
+  CHECK_ERROR (r == -1, "virConnectListDefinedDomains");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -252,7 +252,7 @@ ocaml_libvirt_connect_num_of_networks (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfNetworks (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfNetworks");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfNetworks");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -283,7 +283,7 @@ ocaml_libvirt_connect_list_networks (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListNetworks (conn, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListNetworks");
bda309
+  CHECK_ERROR (r == -1, "virConnectListNetworks");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -308,7 +308,7 @@ ocaml_libvirt_connect_num_of_defined_networks (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfDefinedNetworks (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfDefinedNetworks");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfDefinedNetworks");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -339,7 +339,7 @@ ocaml_libvirt_connect_list_defined_networks (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListDefinedNetworks (conn, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListDefinedNetworks");
bda309
+  CHECK_ERROR (r == -1, "virConnectListDefinedNetworks");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -364,7 +364,7 @@ ocaml_libvirt_connect_num_of_storage_pools (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfStoragePools (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfStoragePools");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfStoragePools");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -395,7 +395,7 @@ ocaml_libvirt_connect_list_storage_pools (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListStoragePools (conn, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListStoragePools");
bda309
+  CHECK_ERROR (r == -1, "virConnectListStoragePools");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -420,7 +420,7 @@ ocaml_libvirt_connect_num_of_defined_storage_pools (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectNumOfDefinedStoragePools (conn));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectNumOfDefinedStoragePools");
bda309
+  CHECK_ERROR (r == -1, "virConnectNumOfDefinedStoragePools");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -451,7 +451,7 @@ ocaml_libvirt_connect_list_defined_storage_pools (value connv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virConnectListDefinedStoragePools (conn, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectListDefinedStoragePools");
bda309
+  CHECK_ERROR (r == -1, "virConnectListDefinedStoragePools");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -477,7 +477,7 @@ ocaml_libvirt_connect_get_capabilities (value connv)
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetCapabilities (conn));
bda309
-  CHECK_ERROR (!r, conn, "virConnectGetCapabilities");
bda309
+  CHECK_ERROR (!r, "virConnectGetCapabilities");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -498,7 +498,7 @@ ocaml_libvirt_connect_domain_event_deregister_any (value connv, value iv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectDomainEventDeregisterAny (conn, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectDomainEventDeregisterAny");
bda309
+  CHECK_ERROR (r == -1, "virConnectDomainEventDeregisterAny");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -518,7 +518,7 @@ ocaml_libvirt_domain_create_linux (value connv, value strv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainCreateLinux (conn, str, 0));
bda309
-  CHECK_ERROR (!r, conn, "virDomainCreateLinux");
bda309
+  CHECK_ERROR (!r, "virDomainCreateLinux");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -541,7 +541,7 @@ ocaml_libvirt_domain_create_xml (value connv, value strv, value uv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainCreateXML (conn, str, u));
bda309
-  CHECK_ERROR (!r, conn, "virDomainCreateXML");
bda309
+  CHECK_ERROR (!r, "virDomainCreateXML");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -558,11 +558,10 @@ ocaml_libvirt_domain_free (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainFree (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainFree");
bda309
+  CHECK_ERROR (r == -1, "virDomainFree");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Domain_val (domv) = NULL;
bda309
@@ -580,11 +579,10 @@ ocaml_libvirt_domain_destroy (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainDestroy (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainDestroy");
bda309
+  CHECK_ERROR (r == -1, "virDomainDestroy");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Domain_val (domv) = NULL;
bda309
@@ -607,7 +605,7 @@ ocaml_libvirt_domain_lookup_by_name (value connv, value strv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainLookupByName (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virDomainLookupByName");
bda309
+  CHECK_ERROR (!r, "virDomainLookupByName");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -629,7 +627,7 @@ ocaml_libvirt_domain_lookup_by_id (value connv, value iv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainLookupByID (conn, i));
bda309
-  CHECK_ERROR (!r, conn, "virDomainLookupByID");
bda309
+  CHECK_ERROR (!r, "virDomainLookupByID");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -651,7 +649,7 @@ ocaml_libvirt_domain_lookup_by_uuid (value connv, value uuidv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainLookupByUUID (conn, uuid));
bda309
-  CHECK_ERROR (!r, conn, "virDomainLookupByUUID");
bda309
+  CHECK_ERROR (!r, "virDomainLookupByUUID");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -673,7 +671,7 @@ ocaml_libvirt_domain_lookup_by_uuid_string (value connv, value strv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainLookupByUUIDString (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virDomainLookupByUUIDString");
bda309
+  CHECK_ERROR (!r, "virDomainLookupByUUIDString");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -691,11 +689,10 @@ ocaml_libvirt_domain_get_name (value domv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetName (dom));
bda309
-  CHECK_ERROR (!r, conn, "virDomainGetName");
bda309
+  CHECK_ERROR (!r, "virDomainGetName");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -712,11 +709,10 @@ ocaml_libvirt_domain_get_os_type (value domv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetOSType (dom));
bda309
-  CHECK_ERROR (!r, conn, "virDomainGetOSType");
bda309
+  CHECK_ERROR (!r, "virDomainGetOSType");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -734,11 +730,10 @@ ocaml_libvirt_domain_get_xml_desc (value domv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetXMLDesc (dom, 0));
bda309
-  CHECK_ERROR (!r, conn, "virDomainGetXMLDesc");
bda309
+  CHECK_ERROR (!r, "virDomainGetXMLDesc");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -756,12 +751,11 @@ ocaml_libvirt_domain_get_uuid (value domv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   unsigned char uuid[VIR_UUID_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetUUID (dom, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetUUID");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetUUID");
bda309
 
bda309
   /* UUIDs are byte arrays with a fixed length. */
bda309
   rv = caml_alloc_string (VIR_UUID_BUFLEN);
bda309
@@ -780,12 +774,11 @@ ocaml_libvirt_domain_get_uuid_string (value domv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char uuid[VIR_UUID_STRING_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetUUIDString (dom, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetUUIDString");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetUUIDString");
bda309
 
bda309
   rv = caml_copy_string (uuid);
bda309
   CAMLreturn (rv);
bda309
@@ -801,11 +794,10 @@ ocaml_libvirt_domain_get_max_vcpus (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetMaxVcpus (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetMaxVcpus");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetMaxVcpus");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -820,12 +812,11 @@ ocaml_libvirt_domain_save (value domv, value strv)
bda309
   CAMLparam2 (domv, strv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *str = String_val (strv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainSave (dom, str));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSave");
bda309
+  CHECK_ERROR (r == -1, "virDomainSave");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -844,7 +835,7 @@ ocaml_libvirt_domain_restore (value connv, value strv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainRestore (conn, str));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainRestore");
bda309
+  CHECK_ERROR (r == -1, "virDomainRestore");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -860,12 +851,11 @@ ocaml_libvirt_domain_core_dump (value domv, value strv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *str = String_val (strv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainCoreDump (dom, str, 0));
bda309
-  CHECK_ERROR (!r, conn, "virDomainCoreDump");
bda309
+  CHECK_ERROR (!r, "virDomainCoreDump");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -880,11 +870,10 @@ ocaml_libvirt_domain_suspend (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainSuspend (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSuspend");
bda309
+  CHECK_ERROR (r == -1, "virDomainSuspend");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -899,11 +888,10 @@ ocaml_libvirt_domain_resume (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainResume (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainResume");
bda309
+  CHECK_ERROR (r == -1, "virDomainResume");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -918,11 +906,10 @@ ocaml_libvirt_domain_shutdown (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainShutdown (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainShutdown");
bda309
+  CHECK_ERROR (r == -1, "virDomainShutdown");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -937,11 +924,10 @@ ocaml_libvirt_domain_reboot (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainReboot (dom, 0));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainReboot");
bda309
+  CHECK_ERROR (r == -1, "virDomainReboot");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -961,7 +947,7 @@ ocaml_libvirt_domain_define_xml (value connv, value strv)
bda309
   virDomainPtr r;
bda309
 
bda309
   NONBLOCKING (r = virDomainDefineXML (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virDomainDefineXML");
bda309
+  CHECK_ERROR (!r, "virDomainDefineXML");
bda309
 
bda309
   rv = Val_domain (r, connv);
bda309
 
bda309
@@ -978,11 +964,10 @@ ocaml_libvirt_domain_undefine (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainUndefine (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainUndefine");
bda309
+  CHECK_ERROR (r == -1, "virDomainUndefine");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -997,11 +982,10 @@ ocaml_libvirt_domain_create (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainCreate (dom));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainCreate");
bda309
+  CHECK_ERROR (r == -1, "virDomainCreate");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1016,12 +1000,11 @@ ocaml_libvirt_domain_attach_device (value domv, value strv)
bda309
   CAMLparam2 (domv, strv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *str = String_val (strv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainAttachDevice (dom, str));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainAttachDevice");
bda309
+  CHECK_ERROR (r == -1, "virDomainAttachDevice");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1036,12 +1019,11 @@ ocaml_libvirt_domain_detach_device (value domv, value strv)
bda309
   CAMLparam2 (domv, strv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *str = String_val (strv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainDetachDevice (dom, str));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainDetachDevice");
bda309
+  CHECK_ERROR (r == -1, "virDomainDetachDevice");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1056,11 +1038,10 @@ ocaml_libvirt_domain_get_autostart (value domv)
bda309
   CAMLparam1 (domv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r, b;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetAutostart (dom, &b);;
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetAutostart");
bda309
 
bda309
   CAMLreturn (b ? Val_true : Val_false);
bda309
 }
bda309
@@ -1075,13 +1056,12 @@ ocaml_libvirt_domain_set_autostart (value domv, value bv)
bda309
   CAMLparam2 (domv, bv);
bda309
 
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r, b;
bda309
 
bda309
   b = bv == Val_true ? 1 : 0;
bda309
 
bda309
   NONBLOCKING (r = virDomainSetAutostart (dom, b));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virDomainSetAutostart");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1096,11 +1076,10 @@ ocaml_libvirt_network_free (value netv)
bda309
   CAMLparam1 (netv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkFree (net));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkFree");
bda309
+  CHECK_ERROR (r == -1, "virNetworkFree");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Network_val (netv) = NULL;
bda309
@@ -1118,11 +1097,10 @@ ocaml_libvirt_network_destroy (value netv)
bda309
   CAMLparam1 (netv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkDestroy (net));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkDestroy");
bda309
+  CHECK_ERROR (r == -1, "virNetworkDestroy");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Network_val (netv) = NULL;
bda309
@@ -1145,7 +1123,7 @@ ocaml_libvirt_network_lookup_by_name (value connv, value strv)
bda309
   virNetworkPtr r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkLookupByName (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkLookupByName");
bda309
+  CHECK_ERROR (!r, "virNetworkLookupByName");
bda309
 
bda309
   rv = Val_network (r, connv);
bda309
 
bda309
@@ -1167,7 +1145,7 @@ ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv)
bda309
   virNetworkPtr r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkLookupByUUID (conn, uuid));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkLookupByUUID");
bda309
+  CHECK_ERROR (!r, "virNetworkLookupByUUID");
bda309
 
bda309
   rv = Val_network (r, connv);
bda309
 
bda309
@@ -1189,7 +1167,7 @@ ocaml_libvirt_network_lookup_by_uuid_string (value connv, value strv)
bda309
   virNetworkPtr r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkLookupByUUIDString (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkLookupByUUIDString");
bda309
+  CHECK_ERROR (!r, "virNetworkLookupByUUIDString");
bda309
 
bda309
   rv = Val_network (r, connv);
bda309
 
bda309
@@ -1207,11 +1185,10 @@ ocaml_libvirt_network_get_name (value netv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetName (net));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkGetName");
bda309
+  CHECK_ERROR (!r, "virNetworkGetName");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -1228,11 +1205,10 @@ ocaml_libvirt_network_get_xml_desc (value netv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetXMLDesc (net, 0));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkGetXMLDesc");
bda309
+  CHECK_ERROR (!r, "virNetworkGetXMLDesc");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -1250,11 +1226,10 @@ ocaml_libvirt_network_get_bridge_name (value netv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetBridgeName (net));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkGetBridgeName");
bda309
+  CHECK_ERROR (!r, "virNetworkGetBridgeName");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -1272,12 +1247,11 @@ ocaml_libvirt_network_get_uuid (value netv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   unsigned char uuid[VIR_UUID_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetUUID (net, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkGetUUID");
bda309
+  CHECK_ERROR (r == -1, "virNetworkGetUUID");
bda309
 
bda309
   /* UUIDs are byte arrays with a fixed length. */
bda309
   rv = caml_alloc_string (VIR_UUID_BUFLEN);
bda309
@@ -1296,12 +1270,11 @@ ocaml_libvirt_network_get_uuid_string (value netv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   char uuid[VIR_UUID_STRING_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetUUIDString (net, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkGetUUIDString");
bda309
+  CHECK_ERROR (r == -1, "virNetworkGetUUIDString");
bda309
 
bda309
   rv = caml_copy_string (uuid);
bda309
   CAMLreturn (rv);
bda309
@@ -1317,11 +1290,10 @@ ocaml_libvirt_network_undefine (value netv)
bda309
   CAMLparam1 (netv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkUndefine (net));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkUndefine");
bda309
+  CHECK_ERROR (r == -1, "virNetworkUndefine");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1341,7 +1313,7 @@ ocaml_libvirt_network_create_xml (value connv, value strv)
bda309
   virNetworkPtr r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkCreateXML (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkCreateXML");
bda309
+  CHECK_ERROR (!r, "virNetworkCreateXML");
bda309
 
bda309
   rv = Val_network (r, connv);
bda309
 
bda309
@@ -1363,7 +1335,7 @@ ocaml_libvirt_network_define_xml (value connv, value strv)
bda309
   virNetworkPtr r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkDefineXML (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virNetworkDefineXML");
bda309
+  CHECK_ERROR (!r, "virNetworkDefineXML");
bda309
 
bda309
   rv = Val_network (r, connv);
bda309
 
bda309
@@ -1380,11 +1352,10 @@ ocaml_libvirt_network_create (value netv)
bda309
   CAMLparam1 (netv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNetworkCreate (net));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkCreate");
bda309
+  CHECK_ERROR (r == -1, "virNetworkCreate");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1399,11 +1370,10 @@ ocaml_libvirt_network_get_autostart (value netv)
bda309
   CAMLparam1 (netv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r, b;
bda309
 
bda309
   NONBLOCKING (r = virNetworkGetAutostart (net, &b);;
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkGetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virNetworkGetAutostart");
bda309
 
bda309
   CAMLreturn (b ? Val_true : Val_false);
bda309
 }
bda309
@@ -1418,13 +1388,12 @@ ocaml_libvirt_network_set_autostart (value netv, value bv)
bda309
   CAMLparam2 (netv, bv);
bda309
 
bda309
   virNetworkPtr net = Network_val (netv);
bda309
-  virConnectPtr conn = Connect_netv (netv);
bda309
   int r, b;
bda309
 
bda309
   b = bv == Val_true ? 1 : 0;
bda309
 
bda309
   NONBLOCKING (r = virNetworkSetAutostart (net, b));
bda309
-  CHECK_ERROR (r == -1, conn, "virNetworkSetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virNetworkSetAutostart");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1439,11 +1408,10 @@ ocaml_libvirt_storage_pool_free (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolFree (pool));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolFree");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolFree");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Pool_val (poolv) = NULL;
bda309
@@ -1461,11 +1429,10 @@ ocaml_libvirt_storage_pool_destroy (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolDestroy (pool));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolDestroy");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolDestroy");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Pool_val (poolv) = NULL;
bda309
@@ -1488,7 +1455,7 @@ ocaml_libvirt_storage_pool_lookup_by_name (value connv, value strv)
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolLookupByName (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolLookupByName");
bda309
+  CHECK_ERROR (!r, "virStoragePoolLookupByName");
bda309
 
bda309
   rv = Val_pool (r, connv);
bda309
 
bda309
@@ -1510,7 +1477,7 @@ ocaml_libvirt_storage_pool_lookup_by_uuid (value connv, value uuidv)
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolLookupByUUID (conn, uuid));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolLookupByUUID");
bda309
+  CHECK_ERROR (!r, "virStoragePoolLookupByUUID");
bda309
 
bda309
   rv = Val_pool (r, connv);
bda309
 
bda309
@@ -1532,7 +1499,7 @@ ocaml_libvirt_storage_pool_lookup_by_uuid_string (value connv, value strv)
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolLookupByUUIDString (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolLookupByUUIDString");
bda309
+  CHECK_ERROR (!r, "virStoragePoolLookupByUUIDString");
bda309
 
bda309
   rv = Val_pool (r, connv);
bda309
 
bda309
@@ -1550,11 +1517,10 @@ ocaml_libvirt_storage_pool_get_name (value poolv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetName (pool));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolGetName");
bda309
+  CHECK_ERROR (!r, "virStoragePoolGetName");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -1571,11 +1537,10 @@ ocaml_libvirt_storage_pool_get_xml_desc (value poolv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetXMLDesc (pool, 0));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolGetXMLDesc");
bda309
+  CHECK_ERROR (!r, "virStoragePoolGetXMLDesc");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -1593,12 +1558,11 @@ ocaml_libvirt_storage_pool_get_uuid (value poolv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   unsigned char uuid[VIR_UUID_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetUUID (pool, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolGetUUID");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolGetUUID");
bda309
 
bda309
   /* UUIDs are byte arrays with a fixed length. */
bda309
   rv = caml_alloc_string (VIR_UUID_BUFLEN);
bda309
@@ -1617,12 +1581,11 @@ ocaml_libvirt_storage_pool_get_uuid_string (value poolv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   char uuid[VIR_UUID_STRING_BUFLEN];
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetUUIDString (pool, uuid));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolGetUUIDString");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolGetUUIDString");
bda309
 
bda309
   rv = caml_copy_string (uuid);
bda309
   CAMLreturn (rv);
bda309
@@ -1643,7 +1606,7 @@ ocaml_libvirt_storage_pool_create_xml (value connv, value strv)
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolCreateXML (conn, str, 0));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolCreateXML");
bda309
+  CHECK_ERROR (!r, "virStoragePoolCreateXML");
bda309
 
bda309
   rv = Val_pool (r, connv);
bda309
 
bda309
@@ -1665,7 +1628,7 @@ ocaml_libvirt_storage_pool_define_xml (value connv, value strv)
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolDefineXML (conn, str, 0));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolDefineXML");
bda309
+  CHECK_ERROR (!r, "virStoragePoolDefineXML");
bda309
 
bda309
   rv = Val_pool (r, connv);
bda309
 
bda309
@@ -1682,12 +1645,11 @@ ocaml_libvirt_storage_pool_build (value poolv, value iv)
bda309
   CAMLparam2 (poolv, iv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   unsigned int i = Int_val (iv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolBuild (pool, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolBuild");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolBuild");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1702,11 +1664,10 @@ ocaml_libvirt_storage_pool_undefine (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolUndefine (pool));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolUndefine");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolUndefine");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1721,11 +1682,10 @@ ocaml_libvirt_storage_pool_create (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolCreate (pool, 0));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolCreate");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolCreate");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1740,12 +1700,11 @@ ocaml_libvirt_storage_pool_delete (value poolv, value iv)
bda309
   CAMLparam2 (poolv, iv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   unsigned int i = Int_val (iv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolDelete (pool, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolDelete");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolDelete");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1760,11 +1719,10 @@ ocaml_libvirt_storage_pool_refresh (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolRefresh (pool, 0));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolRefresh");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolRefresh");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1779,11 +1737,10 @@ ocaml_libvirt_storage_pool_get_autostart (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r, b;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetAutostart (pool, &b);;
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolGetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolGetAutostart");
bda309
 
bda309
   CAMLreturn (b ? Val_true : Val_false);
bda309
 }
bda309
@@ -1798,13 +1755,12 @@ ocaml_libvirt_storage_pool_set_autostart (value poolv, value bv)
bda309
   CAMLparam2 (poolv, bv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r, b;
bda309
 
bda309
   b = bv == Val_true ? 1 : 0;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolSetAutostart (pool, b));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolSetAutostart");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolSetAutostart");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1819,11 +1775,10 @@ ocaml_libvirt_storage_pool_num_of_volumes (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
 
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolNumOfVolumes (pool));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolNumOfVolumes");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolNumOfVolumes");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -1839,7 +1794,6 @@ ocaml_libvirt_storage_pool_list_volumes (value poolv, value iv)
bda309
 
bda309
   CAMLlocal2 (rv, strv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   int i = Int_val (iv);
bda309
   char *names[i];
bda309
   int r;
bda309
@@ -1855,7 +1809,7 @@ ocaml_libvirt_storage_pool_list_volumes (value poolv, value iv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolListVolumes (pool, names, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolListVolumes");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolListVolumes");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -1877,11 +1831,10 @@ ocaml_libvirt_storage_vol_free (value volv)
bda309
   CAMLparam1 (volv);
bda309
 
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolFree (vol));
bda309
-  CHECK_ERROR (r == -1, conn, "virStorageVolFree");
bda309
+  CHECK_ERROR (r == -1, "virStorageVolFree");
bda309
 
bda309
   /* So that we don't double-free in the finalizer: */
bda309
   Volume_val (volv) = NULL;
bda309
@@ -1899,12 +1852,11 @@ ocaml_libvirt_storage_vol_delete (value volv, value iv)
bda309
   CAMLparam2 (volv, iv);
bda309
 
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   unsigned int i = Int_val (iv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolDelete (vol, i));
bda309
-  CHECK_ERROR (r == -1, conn, "virStorageVolDelete");
bda309
+  CHECK_ERROR (r == -1, "virStorageVolDelete");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1920,12 +1872,11 @@ ocaml_libvirt_storage_vol_lookup_by_name (value poolv, value strv)
bda309
 
bda309
   CAMLlocal2 (rv, connv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   char *str = String_val (strv);
bda309
   virStorageVolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolLookupByName (pool, str));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolLookupByName");
bda309
+  CHECK_ERROR (!r, "virStorageVolLookupByName");
bda309
 
bda309
   connv = Field (poolv, 1);
bda309
   rv = Val_volume (r, connv);
bda309
@@ -1948,7 +1899,7 @@ ocaml_libvirt_storage_vol_lookup_by_key (value connv, value strv)
bda309
   virStorageVolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolLookupByKey (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolLookupByKey");
bda309
+  CHECK_ERROR (!r, "virStorageVolLookupByKey");
bda309
 
bda309
   rv = Val_volume (r, connv);
bda309
 
bda309
@@ -1970,7 +1921,7 @@ ocaml_libvirt_storage_vol_lookup_by_path (value connv, value strv)
bda309
   virStorageVolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolLookupByPath (conn, str));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolLookupByPath");
bda309
+  CHECK_ERROR (!r, "virStorageVolLookupByPath");
bda309
 
bda309
   rv = Val_volume (r, connv);
bda309
 
bda309
@@ -1988,12 +1939,11 @@ ocaml_libvirt_storage_vol_create_xml (value poolv, value strv)
bda309
 
bda309
   CAMLlocal2 (rv, connv);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   char *str = String_val (strv);
bda309
   virStorageVolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolCreateXML (pool, str, 0));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolCreateXML");
bda309
+  CHECK_ERROR (!r, "virStorageVolCreateXML");
bda309
 
bda309
   connv = Field (poolv, 1);
bda309
   rv = Val_volume (r, connv);
bda309
@@ -2012,11 +1962,10 @@ ocaml_libvirt_storage_vol_get_xml_desc (value volv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolGetXMLDesc (vol, 0));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolGetXMLDesc");
bda309
+  CHECK_ERROR (!r, "virStorageVolGetXMLDesc");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -2034,11 +1983,10 @@ ocaml_libvirt_storage_vol_get_path (value volv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   char *r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolGetPath (vol));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolGetPath");
bda309
+  CHECK_ERROR (!r, "virStorageVolGetPath");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   free (r);
bda309
@@ -2056,11 +2004,10 @@ ocaml_libvirt_storage_vol_get_key (value volv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolGetKey (vol));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolGetKey");
bda309
+  CHECK_ERROR (!r, "virStorageVolGetKey");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -2077,11 +2024,10 @@ ocaml_libvirt_storage_vol_get_name (value volv)
bda309
 
bda309
   CAMLlocal1 (rv);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   const char *r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolGetName (vol));
bda309
-  CHECK_ERROR (!r, conn, "virStorageVolGetName");
bda309
+  CHECK_ERROR (!r, "virStorageVolGetName");
bda309
 
bda309
   rv = caml_copy_string (r);
bda309
   CAMLreturn (rv);
bda309
@@ -2098,11 +2044,10 @@ ocaml_libvirt_storage_pool_lookup_by_volume (value volv)
bda309
 
bda309
   CAMLlocal2 (rv, connv);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   virStoragePoolPtr r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolLookupByVolume (vol));
bda309
-  CHECK_ERROR (!r, conn, "virStoragePoolLookupByVolume");
bda309
+  CHECK_ERROR (!r, "virStoragePoolLookupByVolume");
bda309
 
bda309
   connv = Field (volv, 1);
bda309
   rv = Val_pool (r, connv);
bda309
diff --git a/libvirt/libvirt_c_epilogue.c b/libvirt/libvirt_c_epilogue.c
bda309
index 4649724..4972e50 100644
bda309
--- a/libvirt/libvirt_c_epilogue.c
bda309
+++ b/libvirt/libvirt_c_epilogue.c
bda309
@@ -57,14 +57,14 @@ option_default (value option, value deflt)
bda309
 #endif
bda309
 
bda309
 static void
bda309
-_raise_virterror (virConnectPtr conn, const char *fn)
bda309
+_raise_virterror (const char *fn)
bda309
 {
bda309
   CAMLparam0 ();
bda309
   CAMLlocal1 (rv);
bda309
   virErrorPtr errp;
bda309
   struct _virError err;
bda309
 
bda309
-  errp = conn ? virConnGetLastError (conn) : virGetLastError ();
bda309
+  errp = virGetLastError ();
bda309
 
bda309
   if (!errp) {
bda309
     /* Fake a _virError structure. */
bda309
diff --git a/libvirt/libvirt_c_oneoffs.c b/libvirt/libvirt_c_oneoffs.c
bda309
index 06b3852..32e5a4b 100644
bda309
--- a/libvirt/libvirt_c_oneoffs.c
bda309
+++ b/libvirt/libvirt_c_oneoffs.c
bda309
@@ -32,7 +32,7 @@ ocaml_libvirt_get_version (value driverv, value unit)
bda309
 
bda309
   typeVer_ptr = driver ? &typeVer : NULL;
bda309
   NONBLOCKING (r = virGetVersion (&libVer, driver, typeVer_ptr));
bda309
-  CHECK_ERROR (r == -1, NULL, "virGetVersion");
bda309
+  CHECK_ERROR (r == -1, "virGetVersion");
bda309
 
bda309
   rv = caml_alloc_tuple (2);
bda309
   Store_field (rv, 0, Val_int (libVer));
bda309
@@ -53,7 +53,7 @@ ocaml_libvirt_connect_open (value namev, value unit)
bda309
   virConnectPtr conn;
bda309
 
bda309
   NONBLOCKING (conn = virConnectOpen (name));
bda309
-  CHECK_ERROR (!conn, NULL, "virConnectOpen");
bda309
+  CHECK_ERROR (!conn, "virConnectOpen");
bda309
 
bda309
   rv = Val_connect (conn);
bda309
 
bda309
@@ -69,7 +69,7 @@ ocaml_libvirt_connect_open_readonly (value namev, value unit)
bda309
   virConnectPtr conn;
bda309
 
bda309
   NONBLOCKING (conn = virConnectOpenReadOnly (name));
bda309
-  CHECK_ERROR (!conn, NULL, "virConnectOpen");
bda309
+  CHECK_ERROR (!conn, "virConnectOpen");
bda309
 
bda309
   rv = Val_connect (conn);
bda309
 
bda309
@@ -85,7 +85,7 @@ ocaml_libvirt_connect_get_version (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetVersion (conn, &hvVer));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectGetVersion");
bda309
+  CHECK_ERROR (r == -1, "virConnectGetVersion");
bda309
 
bda309
   CAMLreturn (Val_int (hvVer));
bda309
 }
bda309
@@ -99,7 +99,7 @@ ocaml_libvirt_connect_get_max_vcpus (value connv, value typev)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virConnectGetMaxVcpus (conn, type));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectGetMaxVcpus");
bda309
+  CHECK_ERROR (r == -1, "virConnectGetMaxVcpus");
bda309
 
bda309
   CAMLreturn (Val_int (r));
bda309
 }
bda309
@@ -114,7 +114,7 @@ ocaml_libvirt_connect_get_node_info (value connv)
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virNodeGetInfo (conn, &info));
bda309
-  CHECK_ERROR (r == -1, conn, "virNodeGetInfo");
bda309
+  CHECK_ERROR (r == -1, "virNodeGetInfo");
bda309
 
bda309
   rv = caml_alloc (8, 0);
bda309
   v = caml_copy_string (info.model); Store_field (rv, 0, v);
bda309
@@ -138,7 +138,7 @@ ocaml_libvirt_connect_node_get_free_memory (value connv)
bda309
   unsigned long long r;
bda309
 
bda309
   NONBLOCKING (r = virNodeGetFreeMemory (conn));
bda309
-  CHECK_ERROR (r == 0, conn, "virNodeGetFreeMemory");
bda309
+  CHECK_ERROR (r == 0, "virNodeGetFreeMemory");
bda309
 
bda309
   rv = caml_copy_int64 ((int64_t) r);
bda309
   CAMLreturn (rv);
bda309
@@ -157,7 +157,7 @@ ocaml_libvirt_connect_node_get_cells_free_memory (value connv,
bda309
   unsigned long long freemems[max];
bda309
 
bda309
   NONBLOCKING (r = virNodeGetCellsFreeMemory (conn, freemems, start, max));
bda309
-  CHECK_ERROR (r == -1, conn, "virNodeGetCellsFreeMemory");
bda309
+  CHECK_ERROR (r == -1, "virNodeGetCellsFreeMemory");
bda309
 
bda309
   rv = caml_alloc (r, 0);
bda309
   for (i = 0; i < r; ++i) {
bda309
@@ -179,7 +179,7 @@ ocaml_libvirt_connect_set_keep_alive(value connv,
bda309
   int r;
bda309
 
bda309
   NONBLOCKING(r = virConnectSetKeepAlive(conn, interval, count));
bda309
-  CHECK_ERROR (r == -1, conn, "virConnectSetKeepAlive");
bda309
+  CHECK_ERROR (r == -1, "virConnectSetKeepAlive");
bda309
 
bda309
   CAMLreturn(Val_unit);
bda309
 }
bda309
@@ -190,7 +190,6 @@ ocaml_libvirt_domain_get_id (value domv)
bda309
 {
bda309
   CAMLparam1 (domv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  /*virConnectPtr conn = Connect_domv (domv);*/
bda309
   unsigned int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetID (dom));
bda309
@@ -208,11 +207,10 @@ ocaml_libvirt_domain_get_max_memory (value domv)
bda309
   CAMLparam1 (domv);
bda309
   CAMLlocal1 (rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   unsigned long r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetMaxMemory (dom));
bda309
-  CHECK_ERROR (r == 0 /* [sic] */, conn, "virDomainGetMaxMemory");
bda309
+  CHECK_ERROR (r == 0 /* [sic] */, "virDomainGetMaxMemory");
bda309
 
bda309
   rv = caml_copy_int64 (r);
bda309
   CAMLreturn (rv);
bda309
@@ -223,12 +221,11 @@ ocaml_libvirt_domain_set_max_memory (value domv, value memv)
bda309
 {
bda309
   CAMLparam2 (domv, memv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   unsigned long mem = Int64_val (memv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainSetMaxMemory (dom, mem));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSetMaxMemory");
bda309
+  CHECK_ERROR (r == -1, "virDomainSetMaxMemory");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -238,12 +235,11 @@ ocaml_libvirt_domain_set_memory (value domv, value memv)
bda309
 {
bda309
   CAMLparam2 (domv, memv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   unsigned long mem = Int64_val (memv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainSetMemory (dom, mem));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSetMemory");
bda309
+  CHECK_ERROR (r == -1, "virDomainSetMemory");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -254,12 +250,11 @@ ocaml_libvirt_domain_get_info (value domv)
bda309
   CAMLparam1 (domv);
bda309
   CAMLlocal2 (rv, v);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   virDomainInfo info;
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetInfo (dom, &info));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetInfo");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetInfo");
bda309
 
bda309
   rv = caml_alloc (5, 0);
bda309
   Store_field (rv, 0, Val_int (info.state)); // These flags are compatible.
bda309
@@ -277,12 +272,11 @@ ocaml_libvirt_domain_get_scheduler_type (value domv)
bda309
   CAMLparam1 (domv);
bda309
   CAMLlocal2 (rv, strv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *r;
bda309
   int nparams;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetSchedulerType (dom, &nparams));
bda309
-  CHECK_ERROR (!r, conn, "virDomainGetSchedulerType");
bda309
+  CHECK_ERROR (!r, "virDomainGetSchedulerType");
bda309
 
bda309
   rv = caml_alloc_tuple (2);
bda309
   strv = caml_copy_string (r); Store_field (rv, 0, strv);
bda309
@@ -297,13 +291,12 @@ ocaml_libvirt_domain_get_scheduler_parameters (value domv, value nparamsv)
bda309
   CAMLparam2 (domv, nparamsv);
bda309
   CAMLlocal4 (rv, v, v2, v3);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int nparams = Int_val (nparamsv);
bda309
   virSchedParameter params[nparams];
bda309
   int r, i;
bda309
 
bda309
   NONBLOCKING (r = virDomainGetSchedulerParameters (dom, params, &nparams));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainGetSchedulerParameters");
bda309
+  CHECK_ERROR (r == -1, "virDomainGetSchedulerParameters");
bda309
 
bda309
   rv = caml_alloc (nparams, 0);
bda309
   for (i = 0; i < nparams; ++i) {
bda309
@@ -348,7 +341,6 @@ ocaml_libvirt_domain_set_scheduler_parameters (value domv, value paramsv)
bda309
   CAMLparam2 (domv, paramsv);
bda309
   CAMLlocal1 (v);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int nparams = Wosize_val (paramsv);
bda309
   virSchedParameter params[nparams];
bda309
   int r, i;
bda309
@@ -391,7 +383,7 @@ ocaml_libvirt_domain_set_scheduler_parameters (value domv, value paramsv)
bda309
   }
bda309
 
bda309
   NONBLOCKING (r = virDomainSetSchedulerParameters (dom, params, nparams));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSetSchedulerParameters");
bda309
+  CHECK_ERROR (r == -1, "virDomainSetSchedulerParameters");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -401,11 +393,10 @@ ocaml_libvirt_domain_set_vcpus (value domv, value nvcpusv)
bda309
 {
bda309
   CAMLparam2 (domv, nvcpusv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int r, nvcpus = Int_val (nvcpusv);
bda309
 
bda309
   NONBLOCKING (r = virDomainSetVcpus (dom, nvcpus));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainSetVcpus");
bda309
+  CHECK_ERROR (r == -1, "virDomainSetVcpus");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -415,14 +406,13 @@ ocaml_libvirt_domain_pin_vcpu (value domv, value vcpuv, value cpumapv)
bda309
 {
bda309
   CAMLparam3 (domv, vcpuv, cpumapv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int maplen = caml_string_length (cpumapv);
bda309
   unsigned char *cpumap = (unsigned char *) String_val (cpumapv);
bda309
   int vcpu = Int_val (vcpuv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainPinVcpu (dom, vcpu, cpumap, maplen));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainPinVcpu");
bda309
+  CHECK_ERROR (r == -1, "virDomainPinVcpu");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -433,7 +423,6 @@ ocaml_libvirt_domain_get_vcpus (value domv, value maxinfov, value maplenv)
bda309
   CAMLparam3 (domv, maxinfov, maplenv);
bda309
   CAMLlocal5 (rv, infov, strv, v, v2);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int maxinfo = Int_val (maxinfov);
bda309
   int maplen = Int_val (maplenv);
bda309
   virVcpuInfo info[maxinfo];
bda309
@@ -444,7 +433,7 @@ ocaml_libvirt_domain_get_vcpus (value domv, value maxinfov, value maplenv)
bda309
   memset (cpumaps, 0, maxinfo * maplen);
bda309
 
bda309
   NONBLOCKING (r = virDomainGetVcpus (dom, info, maxinfo, cpumaps, maplen));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainPinVcpu");
bda309
+  CHECK_ERROR (r == -1, "virDomainPinVcpu");
bda309
 
bda309
   /* Copy the virVcpuInfo structures. */
bda309
   infov = caml_alloc (maxinfo, 0);
bda309
@@ -476,18 +465,17 @@ ocaml_libvirt_domain_get_cpu_stats (value domv)
bda309
   CAMLlocal5 (cpustats, param_head, param_node, typed_param, typed_param_value);
bda309
   CAMLlocal1 (v);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   virTypedParameterPtr params;
bda309
   int r, cpu, ncpus, nparams, i, j, pos;
bda309
   int nr_pcpus;
bda309
 
bda309
   /* get number of pcpus */
bda309
   NONBLOCKING (nr_pcpus = virDomainGetCPUStats(dom, NULL, 0, 0, 0, 0));
bda309
-  CHECK_ERROR (nr_pcpus < 0, conn, "virDomainGetCPUStats");
bda309
+  CHECK_ERROR (nr_pcpus < 0, "virDomainGetCPUStats");
bda309
 
bda309
   /* get percpu information */
bda309
   NONBLOCKING (nparams = virDomainGetCPUStats(dom, NULL, 0, 0, 1, 0));
bda309
-  CHECK_ERROR (nparams < 0, conn, "virDomainGetCPUStats");
bda309
+  CHECK_ERROR (nparams < 0, "virDomainGetCPUStats");
bda309
 
bda309
   if ((params = malloc(sizeof(*params) * nparams * 128)) == NULL)
bda309
     caml_failwith ("virDomainGetCPUStats: malloc");
bda309
@@ -498,7 +486,7 @@ ocaml_libvirt_domain_get_cpu_stats (value domv)
bda309
     ncpus = nr_pcpus - cpu > 128 ? 128 : nr_pcpus - cpu;
bda309
 
bda309
     NONBLOCKING (r = virDomainGetCPUStats(dom, params, nparams, cpu, ncpus, 0));
bda309
-    CHECK_ERROR (r < 0, conn, "virDomainGetCPUStats");
bda309
+    CHECK_ERROR (r < 0, "virDomainGetCPUStats");
bda309
 
bda309
     for (i = 0; i < ncpus; i++) {
bda309
       /* list of typed_param: single linked list of param_nodes */
bda309
@@ -579,7 +567,6 @@ ocaml_libvirt_domain_migrate_native (value domv, value dconnv, value flagsv, val
bda309
   CAMLxparam2 (optbandwidthv, unitv);
bda309
   CAMLlocal2 (flagv, rv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   virConnectPtr dconn = Connect_val (dconnv);
bda309
   int flags = 0;
bda309
   const char *dname = Optstring_val (optdnamev);
bda309
@@ -601,7 +588,7 @@ ocaml_libvirt_domain_migrate_native (value domv, value dconnv, value flagsv, val
bda309
     bandwidth = Int_val (Field (optbandwidthv, 0));
bda309
 
bda309
   NONBLOCKING (r = virDomainMigrate (dom, dconn, flags, dname, uri, bandwidth));
bda309
-  CHECK_ERROR (!r, conn, "virDomainMigrate");
bda309
+  CHECK_ERROR (!r, "virDomainMigrate");
bda309
 
bda309
   rv = Val_domain (r, dconnv);
bda309
 
bda309
@@ -622,13 +609,12 @@ ocaml_libvirt_domain_block_stats (value domv, value pathv)
bda309
   CAMLparam2 (domv, pathv);
bda309
   CAMLlocal2 (rv,v);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *path = String_val (pathv);
bda309
   struct _virDomainBlockStats stats;
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainBlockStats (dom, path, &stats, sizeof stats));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainBlockStats");
bda309
+  CHECK_ERROR (r == -1, "virDomainBlockStats");
bda309
 
bda309
   rv = caml_alloc (5, 0);
bda309
   v = caml_copy_int64 (stats.rd_req); Store_field (rv, 0, v);
bda309
@@ -646,13 +632,12 @@ ocaml_libvirt_domain_interface_stats (value domv, value pathv)
bda309
   CAMLparam2 (domv, pathv);
bda309
   CAMLlocal2 (rv,v);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   char *path = String_val (pathv);
bda309
   struct _virDomainInterfaceStats stats;
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virDomainInterfaceStats (dom, path, &stats, sizeof stats));
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainInterfaceStats");
bda309
+  CHECK_ERROR (r == -1, "virDomainInterfaceStats");
bda309
 
bda309
   rv = caml_alloc (8, 0);
bda309
   v = caml_copy_int64 (stats.rx_bytes); Store_field (rv, 0, v);
bda309
@@ -673,7 +658,6 @@ ocaml_libvirt_domain_block_peek_native (value domv, value pathv, value offsetv,
bda309
   CAMLparam5 (domv, pathv, offsetv, sizev, bufferv);
bda309
   CAMLxparam1 (boffv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   const char *path = String_val (pathv);
bda309
   unsigned long long offset = Int64_val (offsetv);
bda309
   size_t size = Int_val (sizev);
bda309
@@ -687,7 +671,7 @@ ocaml_libvirt_domain_block_peek_native (value domv, value pathv, value offsetv,
bda309
 
bda309
   /* NB. not NONBLOCKING because buffer might move (XXX) */
bda309
   r = virDomainBlockPeek (dom, path, offset, size, buffer+boff, 0);
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainBlockPeek");
bda309
+  CHECK_ERROR (r == -1, "virDomainBlockPeek");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -706,7 +690,6 @@ ocaml_libvirt_domain_memory_peek_native (value domv, value flagsv, value offsetv
bda309
   CAMLxparam1 (boffv);
bda309
   CAMLlocal1 (flagv);
bda309
   virDomainPtr dom = Domain_val (domv);
bda309
-  virConnectPtr conn = Connect_domv (domv);
bda309
   int flags = 0;
bda309
   unsigned long long offset = Int64_val (offsetv);
bda309
   size_t size = Int_val (sizev);
bda309
@@ -728,7 +711,7 @@ ocaml_libvirt_domain_memory_peek_native (value domv, value flagsv, value offsetv
bda309
 
bda309
   /* NB. not NONBLOCKING because buffer might move (XXX) */
bda309
   r = virDomainMemoryPeek (dom, offset, size, buffer+boff, flags);
bda309
-  CHECK_ERROR (r == -1, conn, "virDomainMemoryPeek");
bda309
+  CHECK_ERROR (r == -1, "virDomainMemoryPeek");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
@@ -1042,7 +1025,6 @@ CAMLprim value
bda309
 ocaml_libvirt_event_add_timeout (value connv, value ms, value callback_id)
bda309
 {
bda309
   CAMLparam3 (connv, ms, callback_id);
bda309
-  virConnectPtr conn = Connect_val (connv);
bda309
   void *opaque;
bda309
   virFreeCallback freecb = free;
bda309
   virEventTimeoutCallback cb = timeout_callback;
bda309
@@ -1055,7 +1037,7 @@ ocaml_libvirt_event_add_timeout (value connv, value ms, value callback_id)
bda309
     caml_failwith ("virEventAddTimeout: malloc");
bda309
   *((long*)opaque) = Int64_val(callback_id);
bda309
   NONBLOCKING(r = virEventAddTimeout(Int_val(ms), cb, opaque, freecb));
bda309
-  CHECK_ERROR(r == -1, conn, "virEventAddTimeout");
bda309
+  CHECK_ERROR(r == -1, "virEventAddTimeout");
bda309
 
bda309
   CAMLreturn(Val_int(r));
bda309
 }
bda309
@@ -1064,11 +1046,10 @@ CAMLprim value
bda309
 ocaml_libvirt_event_remove_timeout (value connv, value timer_id)
bda309
 {
bda309
   CAMLparam2 (connv, timer_id);
bda309
-  virConnectPtr conn = Connect_val (connv);
bda309
   int r;
bda309
 
bda309
   NONBLOCKING(r = virEventRemoveTimeout(Int_val(timer_id)));
bda309
-  CHECK_ERROR(r == -1, conn, "virEventRemoveTimeout");
bda309
+  CHECK_ERROR(r == -1, "virEventRemoveTimeout");
bda309
 
bda309
   CAMLreturn(Val_int(r));
bda309
 }
bda309
@@ -1146,7 +1127,7 @@ ocaml_libvirt_connect_domain_event_register_any(value connv, value domv, value c
bda309
     caml_failwith ("virConnectDomainEventRegisterAny: malloc");
bda309
   *((long*)opaque) = Int64_val(callback_id);
bda309
   NONBLOCKING(r = virConnectDomainEventRegisterAny(conn, dom, eventID, cb, opaque, freecb));
bda309
-  CHECK_ERROR(r == -1, conn, "virConnectDomainEventRegisterAny");
bda309
+  CHECK_ERROR(r == -1, "virConnectDomainEventRegisterAny");
bda309
 
bda309
   CAMLreturn(Val_int(r));
bda309
 }
bda309
@@ -1157,12 +1138,11 @@ ocaml_libvirt_storage_pool_get_info (value poolv)
bda309
   CAMLparam1 (poolv);
bda309
   CAMLlocal2 (rv, v);
bda309
   virStoragePoolPtr pool = Pool_val (poolv);
bda309
-  virConnectPtr conn = Connect_polv (poolv);
bda309
   virStoragePoolInfo info;
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStoragePoolGetInfo (pool, &info));
bda309
-  CHECK_ERROR (r == -1, conn, "virStoragePoolGetInfo");
bda309
+  CHECK_ERROR (r == -1, "virStoragePoolGetInfo");
bda309
 
bda309
   rv = caml_alloc (4, 0);
bda309
   Store_field (rv, 0, Val_int (info.state));
bda309
@@ -1179,12 +1159,11 @@ ocaml_libvirt_storage_vol_get_info (value volv)
bda309
   CAMLparam1 (volv);
bda309
   CAMLlocal2 (rv, v);
bda309
   virStorageVolPtr vol = Volume_val (volv);
bda309
-  virConnectPtr conn = Connect_volv (volv);
bda309
   virStorageVolInfo info;
bda309
   int r;
bda309
 
bda309
   NONBLOCKING (r = virStorageVolGetInfo (vol, &info));
bda309
-  CHECK_ERROR (r == -1, conn, "virStorageVolGetInfo");
bda309
+  CHECK_ERROR (r == -1, "virStorageVolGetInfo");
bda309
 
bda309
   rv = caml_alloc (3, 0);
bda309
   Store_field (rv, 0, Val_int (info.type));
bda309
@@ -1239,6 +1218,12 @@ ocaml_libvirt_virterror_reset_last_conn_error (value connv)
bda309
 
bda309
 /*----------------------------------------------------------------------*/
bda309
 
bda309
+static void
bda309
+ignore_errors (void *user_data, virErrorPtr error)
bda309
+{
bda309
+  /* do nothing */
bda309
+}
bda309
+
bda309
 /* Initialise the library. */
bda309
 CAMLprim value
bda309
 ocaml_libvirt_init (value unit)
bda309
@@ -1247,8 +1232,9 @@ ocaml_libvirt_init (value unit)
bda309
   CAMLlocal1 (rv);
bda309
   int r;
bda309
 
bda309
+  virSetErrorFunc (NULL, ignore_errors);
bda309
   r = virInitialize ();
bda309
-  CHECK_ERROR (r == -1, NULL, "virInitialize");
bda309
+  CHECK_ERROR (r == -1, "virInitialize");
bda309
 
bda309
   CAMLreturn (Val_unit);
bda309
 }
bda309
diff --git a/libvirt/libvirt_c_prologue.c b/libvirt/libvirt_c_prologue.c
bda309
index 7d9c0f5..bf972e9 100644
bda309
--- a/libvirt/libvirt_c_prologue.c
bda309
+++ b/libvirt/libvirt_c_prologue.c
bda309
@@ -24,7 +24,7 @@ static char *Optstring_val (value strv);
bda309
 typedef value (*Val_ptr_t) (void *);
bda309
 static value Val_opt (void *ptr, Val_ptr_t Val_ptr);
bda309
 /*static value option_default (value option, value deflt);*/
bda309
-static void _raise_virterror (virConnectPtr conn, const char *fn) Noreturn;
bda309
+static void _raise_virterror (const char *fn) Noreturn;
bda309
 static void not_supported (const char *fn) Noreturn;
bda309
 static value Val_virterror (virErrorPtr err);
bda309
 
bda309
@@ -43,8 +43,8 @@ static value Val_virterror (virErrorPtr err);
bda309
 /* Check error condition from a libvirt function, and automatically raise
bda309
  * an exception if one is found.
bda309
  */
bda309
-#define CHECK_ERROR(cond, conn, fn) \
bda309
-  do { if (cond) _raise_virterror (conn, fn); } while (0)
bda309
+#define CHECK_ERROR(cond, fn) \
bda309
+  do { if (cond) _raise_virterror (fn); } while (0)
bda309
 
bda309
 /*----------------------------------------------------------------------*/
bda309
 
bda309
-- 
bda309
2.3.1
bda309