Index: /trunk/Nebulous/nebclient/src/nebclient.c
===================================================================
--- /trunk/Nebulous/nebclient/src/nebclient.c	(revision 4510)
+++ /trunk/Nebulous/nebclient/src/nebclient.c	(revision 4511)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.c,v 1.16 2005-07-08 02:04:05 jhoblitt Exp $
+ * $Id: nebclient.c,v 1.17 2005-07-08 02:16:39 jhoblitt Exp $
  */
 
@@ -62,28 +62,40 @@
     int             file;
 
-    if (soap_call_ns1__create_USCOREobject(server->soap, NULL, NULL, (char *)key, class, (char *)volume, (char *)comment, (char **)&response) == SOAP_OK) {
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return -1;
+    }
+
+    if (soap_call_ns1__create_USCOREobject(server->soap, NULL, NULL, 
+            (char *)key, class, (char *)volume, (char *)comment, 
+            (char **)&response) != SOAP_OK) {
+        nebSetServerErr(server);
+
+        return -1;
+    }
+
+    if (!nebParseURI((char *)response.result, &filename)) {
+        nebSetErr(server, "can not parse URI");
+
+        return -1;
+    }
+
+    file = open(filename, O_RDWR|O_TRUNC, 0660);
+    if (file == -1) {
+        nebSetErr(server, "can not open %s: %s", filename, strerror(errno));
+        nebFree(filename);
+
+        return -1;
+    }
+
+    nebFree(filename);
+
+    if (URI) {
         *URI = xmalloc(strlen((char *)response.result));
         strcpy(*URI, (char *)response.result);
-
-        if (!nebParseURI(*URI, &filename)) {
-            fprintf(stderr, "can not parse URI\n");
-
-            return 0;
-        }
-
-        file = open(filename, O_RDWR|O_TRUNC, 0660);
-        if (file == -1) {
-            fprintf(stderr, "can not open %s: %s\n", filename, strerror(errno));
-
-            return 0;
-        }
-
-        return file;
-    }
-
-    // server error
-    nebSetServerErr(server);
-
-    return -1;
+    }
+
+    return file;
 }
 
