--- open-iscsi-2.0-707/usr/idbm.c	2007/11/15 13:40:26	1.11
+++ open-iscsi-2.0-707/usr/idbm.c	2007/11/16 08:33:46
@@ -1142,12 +1142,14 @@
 
 	idbm_lock(db);
 	if (!idbm_discovery_read(db, &rec, newrec->u.sendtargets.address,
-				newrec->u.sendtargets.port) == 0) {
+				newrec->u.sendtargets.port)) {
 		log_debug(7, "overwriting existing record");
-	} else
+	} else {
 		log_debug(7, "adding new DB record");
+		memcpy(&rec, newrec, sizeof(discovery_rec_t));
+	}
 
-	rc = idbm_discovery_write(db, newrec);
+	rc = idbm_discovery_write(db, &rec);
 	idbm_unlock(db);
 	return rc;
 }
@@ -1160,12 +1162,15 @@
 
 	idbm_lock(db);
 	if (!idbm_node_read(db, &rec, newrec->name, newrec->conn[0].address,
-			newrec->conn[0].port) == 0) {
+			newrec->conn[0].port)) {
 		log_debug(7, "overwriting existing record");
-	} else
+	} else {
 		log_debug(7, "adding new DB record");
+		memcpy(&rec, newrec, sizeof(node_rec_t));
+	}
+
+	rc = idbm_node_write(db, &rec);
 
-	rc = idbm_node_write(db, newrec);
 	idbm_unlock(db);
 	return rc;
 }
