[SCM] Samba Shared Repository - branch v3-0-test updated - release-3-0-28-75-gc7bf932

Jeremy Allison jra at samba.org
Wed Jan 2 19:58:10 GMT 2008


The branch, v3-0-test has been updated
       via  c7bf932a80676457e1a9982c5e05157746c5545d (commit)
      from  ca61ba5e1ac4935036b9419290453d82c161cfbd (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-0-test


- Log -----------------------------------------------------------------
commit c7bf932a80676457e1a9982c5e05157746c5545d
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Jan 2 11:57:37 2008 -0800

    Attempt to fix bug #3617. Mix of patches from Volker and
    myself. Use standard dlinklist macros.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/nmbd/nmbd_packets.c           |    5 +++++
 source/nmbd/nmbd_responserecordsdb.c |   24 ++----------------------
 2 files changed, 7 insertions(+), 22 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/nmbd/nmbd_packets.c b/source/nmbd/nmbd_packets.c
index 1460f7d..97a81fe 100644
--- a/source/nmbd/nmbd_packets.c
+++ b/source/nmbd/nmbd_packets.c
@@ -1606,6 +1606,8 @@ void retransmit_or_expire_response_records(time_t t)
 	for (subrec = FIRST_SUBNET; subrec; subrec = get_next_subnet_maybe_unicast_or_wins_server(subrec)) {
 		struct response_record *rrec, *nextrrec;
 
+  restart:
+
 		for (rrec = subrec->responselist; rrec; rrec = nextrrec) {
 			nextrrec = rrec->next;
    
@@ -1644,6 +1646,9 @@ on subnet %s\n", rrec->response_id, inet_ntoa(rrec->packet->ip), subrec->subnet_
 									no timeout function. */
 							remove_response_record(subrec, rrec);
 						}
+						/* We have changed subrec->responselist,
+						 * restart from the beginning of this list. */
+						goto restart;
 					} /* !rrec->in_expitation_processing */
 				} /* rrec->repeat_count > 0 */
 			} /* rrec->repeat_time <= t */
diff --git a/source/nmbd/nmbd_responserecordsdb.c b/source/nmbd/nmbd_responserecordsdb.c
index 367c1f4..8b056ac 100644
--- a/source/nmbd/nmbd_responserecordsdb.c
+++ b/source/nmbd/nmbd_responserecordsdb.c
@@ -32,26 +32,12 @@ int num_response_packets = 0;
 static void add_response_record(struct subnet_record *subrec,
 				struct response_record *rrec)
 {
-	struct response_record *rrec2;
-
 	num_response_packets++; /* count of total number of packets still around */
 
 	DEBUG(4,("add_response_record: adding response record id:%hu to subnet %s. num_records:%d\n",
 		rrec->response_id, subrec->subnet_name, num_response_packets));
 
-	if (!subrec->responselist) {
-		subrec->responselist = rrec;
-		rrec->prev = NULL;
-		rrec->next = NULL;
-		return;
-	}
-  
-	for (rrec2 = subrec->responselist; rrec2->next; rrec2 = rrec2->next) 
-		;
-  
-	rrec2->next = rrec;
-	rrec->next = NULL;
-	rrec->prev = rrec2;
+	DLIST_ADD_END(subrec->responselist, rrec, struct response_record *);
 }
 
 /***************************************************************************
@@ -61,13 +47,7 @@ static void add_response_record(struct subnet_record *subrec,
 void remove_response_record(struct subnet_record *subrec,
 				struct response_record *rrec)
 {
-	if (rrec->prev)
-		rrec->prev->next = rrec->next;
-	if (rrec->next)
-		rrec->next->prev = rrec->prev;
-
-	if (subrec->responselist == rrec) 
-		subrec->responselist = rrec->next; 
+	DLIST_REMOVE(subrec->responselist, rrec);
 
 	if(rrec->userdata) {
 		if(rrec->userdata->free_fn) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list