]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/dbif.c
Abort search on partial match
[netatalk.git] / etc / cnid_dbd / dbif.c
index cc1a2b55dc5d22393765093b26776272f10abf09..4b52376a879f4548c7bcec2ba99051b8cd525d04 100644 (file)
@@ -900,15 +900,14 @@ int dbif_search(DBD *dbd, DBT *key, char *resbuf)
 
     ret = cursorp->pget(cursorp, key, &pkey, &data, DB_SET_RANGE);
     while (count < DBD_MAX_SRCH_RSLTS && ret != DB_NOTFOUND) {
-        if (namelenbkp <= key->size && strncmp(namebkp, key->data, namelenbkp) == 0) {
-            count++;
-            memcpy(cnids, pkey.data, sizeof(cnid_t));
-            memcpy(&cnid, pkey.data, sizeof(cnid_t));
-            cnids += sizeof(cnid_t);
-            LOG(log_error, logtype_cnid, "match: CNID %" PRIu32, ntohl(cnid));
-        } else {
-            LOG(log_error, logtype_cnid, "ignoring: CNID %" PRIu32, ntohl(cnid));
-        }
+        if (!((namelenbkp <= key->size) && (strncmp(namebkp, key->data, namelenbkp) == 0)))
+            break;
+        count++;
+        memcpy(cnids, pkey.data, sizeof(cnid_t));
+        memcpy(&cnid, pkey.data, sizeof(cnid_t));
+        cnids += sizeof(cnid_t);
+        LOG(log_debug, logtype_cnid, "match: CNID %" PRIu32, ntohl(cnid));
+
         ret = cursorp->pget(cursorp, key, &pkey, &data, DB_NEXT);
     }