Index: /trunk/Nebulous/nebclient/src/nebclient.c
===================================================================
--- /trunk/Nebulous/nebclient/src/nebclient.c	(revision 4670)
+++ /trunk/Nebulous/nebclient/src/nebclient.c	(revision 4671)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.c,v 1.35 2005-07-29 02:31:56 jhoblitt Exp $
+ * $Id: nebclient.c,v 1.36 2005-07-29 23:12:44 jhoblitt Exp $
  */
 
@@ -31,4 +31,11 @@
     p_nebSetErr(__FILE__, __LINE__, __func__, server,__VA_ARGS__)
 
+// this is a slightly more useful error message than returned by assert()
+#define REQUIRE_SERVER \
+    if (!server) { \
+        fprintf(stderr, "parameter 'server' may not be NULL"); \
+        abort(); \
+    }
+
 static void p_nebSetErr(const char * filename, unsigned long lineno, const char *function, nebServer *server, const char *format, ...);
 static void nebSetServerErr(nebServer *server);
@@ -63,4 +70,8 @@
 void nebServerFree(nebServer *server)
 {
+    if (!server) {
+        return;
+    }
+
     soap_end(server->soap); // remove deserialized data and clean up
     soap_done(server->soap); // detach the gSOAP environment
@@ -78,4 +89,6 @@
     int             file;
 
+    REQUIRE_SERVER;
+
     if (!key) {
         nebSetErr(server, "parameter 'key' may not be NULL");
@@ -122,4 +135,12 @@
     char            *filename;
     int             sourceFH, destFH;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
 
     if (soap_call_ns1__replicate_USCOREobject(server->soap, server->endpoint,
@@ -184,4 +205,12 @@
     nebObjectInstances *locations;
 
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
     locations = nebFindInstances(server, key, NULL);
     if (!locations) {
@@ -207,4 +236,12 @@
     char            *type;
     int             response;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
 
     type = flag == NEB_READ ? "read" : "write";
@@ -237,4 +274,12 @@
     int             response;
 
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
     type = flag == NEB_READ ? "read" : "write";
 
@@ -261,4 +306,12 @@
     char            **resultArray;
     nebObjectInstances *locations = NULL;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
+    }
 
     // FIXME is this leaking memory when response goes out of scope?  the gsoap
@@ -293,10 +346,10 @@
 void nebObjectInstancesFree(nebObjectInstances *locations)
 {
-    if (locations) {
-        for (int i = 0; i < locations->n; i++) {
-            nebFree(locations->URI[i]);
-        }
-
-        nebFree(locations);
+    if (!locations) {
+        return;
+    }
+
+    for (int i = 0; i < locations->n; i++) {
+        nebFree(locations->URI[i]);
     }
 }
@@ -306,4 +359,12 @@
     nebObjectInstances *locations;
     char            *filename;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
+    }
     
     locations = nebFindInstances(server, key, NULL);
@@ -331,4 +392,12 @@
     char            *filename;
     int             fh;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return -1;
+    }
 
     locations = nebFindInstances(server, key, NULL);
@@ -375,4 +444,12 @@
     nebObjectInstances *locations;
 
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
     locations = nebFindInstances(server, key, NULL);
     if (!locations) {
@@ -401,4 +478,18 @@
     int             destFH;
 
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    if (!newKey) {
+        nebSetErr(server, "parameter 'newKey' may not be NULL");
+
+        return false;
+    }
+
     sourceFH = nebOpen(server, (char *)key, NEB_READ);
     if (sourceFH < 0) {
@@ -434,4 +525,18 @@
 bool nebMove(nebServer *server, const char *key, const char *newKey)
 {
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return false;
+    }
+
+    if (!newKey) {
+        nebSetErr(server, "parameter 'newKey' may not be NULL");
+
+        return false;
+    }
+
     if (!nebCopy(server, key, newKey)) {
         return false;
@@ -450,4 +555,12 @@
     char            *filename;
     bool            status;
+
+    REQUIRE_SERVER;
+
+    if (!URI) {
+        nebSetErr(server, "parameter 'URI' may not be NULL");
+
+        return false;
+    }
 
     if (!nebParseURI(server, URI, &filename)) {
@@ -481,4 +594,12 @@
     int             resultElements = 0;
     char            **resultArray = NULL;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
+    }
 
     stat = xmalloc(sizeof(nebObjectStat));
@@ -576,4 +697,6 @@
     const char      **string;
 
+    REQUIRE_SERVER;
+
     code   = soap_faultcode(server->soap);
     string = soap_faultstring(server->soap);
@@ -587,4 +710,6 @@
     int             destFH; 
     off_t           bytesCopied;
+
+    REQUIRE_SERVER;
 
     sourceFH = open(source, O_RDONLY);
@@ -629,4 +754,6 @@
     char            writeBuf[64 * 1024];
     struct stat     sourceStat;
+
+    REQUIRE_SERVER;
 
     if(fstat(sourceFH, &sourceStat)) {
@@ -683,4 +810,6 @@
     size_t          filename_size;
 
+    REQUIRE_SERVER;
+
     if (!URI) {
         return 0;
@@ -723,4 +852,12 @@
 static bool nebNukeFile(nebServer *server, const char *filename)
 {
+    REQUIRE_SERVER;
+
+    if (!filename) {
+        nebSetErr(server, "parameter 'filename' may not be NULL");
+
+        return false;
+    }
+
     if (unlink(filename) < 0) {
         nebSetErr(server, "unlink: %s", strerror(errno));
