From d50756c9442ca910c0e3a663021a1368d155ad0f Mon Sep 17 00:00:00 2001 From: sr Date: Thu, 20 Dec 2012 17:26:03 +0100 Subject: ... --- src/server/net.c | 5 +++-- src/server/saveload.c | 32 +------------------------------- 2 files changed, 4 insertions(+), 33 deletions(-) diff --git a/src/server/net.c b/src/server/net.c index 76deed6..bb395fb 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -287,9 +287,10 @@ void *dnbd3_handle_query(void *dnbd3_client) // caching is off if (image_cache == -1) { - if (sendfile(client->sock, image_file, (off_t *)&request.offset, request.size) != request.size) + const ssize_t ret = sendfile(client->sock, image_file, (off_t *)&request.offset, request.size); + if (ret != request.size) { - printf("[ERROR] sendfile failed (image to net)\n"); + printf("[ERROR] sendfile failed (image to net %d/%d)\n", (int)ret, (int)request.size); close(client->sock); client->sock = -1; } diff --git a/src/server/saveload.c b/src/server/saveload.c index 9326627..c7cc544 100644 --- a/src/server/saveload.c +++ b/src/server/saveload.c @@ -750,7 +750,7 @@ dnbd3_namespace_t *dnbd3_get_trust_level(dnbd3_host_t *host, char *namespace) continue; if (nslow[cmplen] == '/' && !comp->recursive) // partial match, but recursion is disabled continue; - if (nslow[cmplen] != '\0') // in mid-string + if (nslow[cmplen] != '\0' && nslow[cmplen] != '/') // in mid-string continue; if (cmplen < bestlen) // Match is not better than one found before continue; @@ -759,33 +759,3 @@ dnbd3_namespace_t *dnbd3_get_trust_level(dnbd3_host_t *host, char *namespace) } return best; } - -/** - * Return local image name for a global image name - * eg. "uni-freiburg/rz/ubuntu 12.04" -> "ubuntu 12.04" - * ONLY IF the local name space really is "uni-freiburg/rz" - * Returns NULL otherwise - * The returned pointer points to memory inside the passed - * string (if not NULL), so do not modify or free - * / <--- -static char* get_local_image_name(char *global_name) -{ - if (_local_namespace == NULL) - return NULL; // No local namespace defined, so it cannot be local - char *first_slash = strchr(global_name, '/'); - if (first_slash == NULL) - return global_name; // Already local - const size_t buflen = strlen(_local_namespace) + 1; - if (first_slash - global_name + 1 != buflen) - return NULL; // Namespaces have different length, cannot be same - char namespace[buflen]; - char passedname[buflen]; - strcpy(namespace, _local_namespace); - strncpy(passedname, global_name, buflen); - passedname[buflen] = '\0'; - strtolower(namespace); - strtolower(passedname); - if (strcmp(namespace, passedname) == 0) - return global_name + buflen; // points somewhere into passed buffer - return NULL; -} //*/ -- cgit v1.2.3-55-g7522