Slaves are set to unregistered state once disconnected
It was possible that the same slave was disconnected multiple times before the slave DCB was closed.
This commit is contained in:
		
				
					committed by
					
						
						Johan Wikman
					
				
			
			
				
	
			
			
			
						parent
						
							9a3aae64ce
						
					
				
				
					commit
					000a044da6
				
			@ -2656,7 +2656,8 @@ blr_slave_disconnect_server(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, int se
 | 
			
		||||
	while (sptr)
 | 
			
		||||
	{
 | 
			
		||||
		/* don't examine slaves with state = 0 */
 | 
			
		||||
		if (sptr->state != 0 && sptr->serverid == server_id)
 | 
			
		||||
		if ((sptr->state == BLRS_REGISTERED || sptr->state == BLRS_DUMPING) &&
 | 
			
		||||
			sptr->serverid == server_id)
 | 
			
		||||
		{
 | 
			
		||||
			/* server_id found */
 | 
			
		||||
			server_found = 1;
 | 
			
		||||
@ -2670,6 +2671,7 @@ blr_slave_disconnect_server(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, int se
 | 
			
		||||
			/* send server_id with disconnect state to client */
 | 
			
		||||
			n = blr_slave_send_disconnected_server(router, slave, server_id, 1);
 | 
			
		||||
 | 
			
		||||
			sptr->state = BLRS_UNREGISTERED;
 | 
			
		||||
			dcb_close(sptr->dcb);
 | 
			
		||||
 | 
			
		||||
			break;
 | 
			
		||||
@ -2731,7 +2733,7 @@ blr_slave_disconnect_all(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave)
 | 
			
		||||
	while (sptr)
 | 
			
		||||
	{
 | 
			
		||||
		/* skip servers with state = 0 */
 | 
			
		||||
		if (sptr->state != 0)
 | 
			
		||||
		if (sptr->state == BLRS_REGISTERED || sptr->state == BLRS_DUMPING)
 | 
			
		||||
		{
 | 
			
		||||
			sprintf(server_id, "%d", sptr->serverid);
 | 
			
		||||
			sprintf(state, "disconnected");
 | 
			
		||||
@ -2768,6 +2770,7 @@ blr_slave_disconnect_all(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave)
 | 
			
		||||
 | 
			
		||||
			slave->dcb->func.write(slave->dcb, pkt);
 | 
			
		||||
 | 
			
		||||
			sptr->state = BLRS_UNREGISTERED;
 | 
			
		||||
			dcb_close(sptr->dcb);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user