diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c
index 22d192e..a7631e8 100644
--- a/src/libnsdb/fileserver.c
+++ b/src/libnsdb/fileserver.c
@@ -1217,10 +1217,13 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err)
 	if (j == 0)
 		goto out;
 
-	for (j = 0; nce_list[j] != NULL; j++)
-		nsdb_list_find_entries_s(host->fn_ldap, nce_list[j],
+	for (j = 0; nce_list[j] != NULL; j++) {
+		retval = nsdb_list_find_entries_s(host->fn_ldap,
+						nce_list[j],
 						fsns, ldap_err);
-	retval = FEDFS_OK;
+		if (retval == FEDFS_OK)
+			break;
+	}
 
 out:
 	nsdb_free_string_array(nce_list);
diff --git a/src/nsdbc/nsdb-list.c b/src/nsdbc/nsdb-list.c
index 6787076..1ac04b0 100644
--- a/src/nsdbc/nsdb-list.c
+++ b/src/nsdbc/nsdb-list.c
@@ -256,6 +256,10 @@ main(int argc, char **argv)
 			nsdb_list_resolve_and_display_fsn(host, nce, fsns[i]);
 		nsdb_free_string_array(fsns);
 		break;
+	case FEDFS_ERR_NSDB_NOFSN:
+		fprintf(stderr, "NSDB %s:%u has no FSN records\n",
+			nsdbname, nsdbport);
+		break;
 	case FEDFS_ERR_NSDB_NONCE:
 		if (nce == NULL)
 			fprintf(stderr, "NSDB %s:%u has no NCE\n",
