Jan Wieck wieck at lists.slony.info
Wed Jun 10 08:02:42 PDT 2009
Update of /home/cvsd/slony1/slony1-engine/src/slon
In directory main.slony.info:/tmp/cvs-serv7760

Modified Files:
      Tag: REL_1_2_STABLE
	scheduler.c 
Log Message:
Applied patch from Oleg A. Mamontov:

> there is a logical mistake in slon/scheduler.c, in sched_mainloop  
> fdsets copied
> for select before checking connections for their timeouts. In timeout  
> case this
> descriptors will be removed with DLLIST_REMOVE and sched_remove_fdset,  
> but stayed in
> select descriptors bit vector.

Good work, thank you.

Jan


Index: scheduler.c
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/slon/scheduler.c,v
retrieving revision 1.24.2.2
retrieving revision 1.24.2.3
diff -C2 -d -r1.24.2.2 -r1.24.2.3
*** scheduler.c	27 Oct 2006 20:09:56 -0000	1.24.2.2
--- scheduler.c	10 Jun 2009 15:02:40 -0000	1.24.2.3
***************
*** 426,442 ****
  
  		/*
- 		 * Make copies of the file descriptor sets for select(2)
- 		 */
- 		FD_ZERO(&rfds);
- 		FD_ZERO(&wfds);
- 		for (i = 0; i < sched_numfd; i++)
- 		{
- 			if (FD_ISSET(i, &sched_fdset_read))
- 				FD_SET(i, &rfds);
- 			if (FD_ISSET(i, &sched_fdset_write))
- 				FD_SET(i, &wfds);
- 		}
- 
- 		/*
  		 * Check if any of the connections in the wait queue have reached
  		 * their timeout. While doing so, we also remember the closest timeout
--- 426,429 ----
***************
*** 530,533 ****
--- 517,533 ----
  
  		/*
+ 		 * Make copies of the file descriptor sets for select(2)
+ 		 */
+ 		FD_ZERO(&rfds);
+ 		FD_ZERO(&wfds);
+ 		for (i = 0; i < sched_numfd; i++)
+ 		{
+ 			if (FD_ISSET(i, &sched_fdset_read))
+ 				FD_SET(i, &rfds);
+ 			if (FD_ISSET(i, &sched_fdset_write))
+ 				FD_SET(i, &wfds);
+ 		}
+ 
+ 		/*
  		 * Do the select(2) while unlocking the master lock.
  		 */



More information about the Slony1-commit mailing list