diff libfdcore/cnxctx.c @ 1190:6a1042d8075b

Replace FDEV_TERMINATE events with calls to fd_core_shutdown to handle the core state properly
author Sebastien Decugis <sdecugis@freediameter.net>
date Mon, 10 Jun 2013 16:44:18 +0800
parents 56c36d1007b4
children 48759e3f7611
line wrap: on
line diff
--- a/libfdcore/cnxctx.c	Mon Jun 10 16:23:09 2013 +0800
+++ b/libfdcore/cnxctx.c	Mon Jun 10 16:44:18 2013 +0800
@@ -610,7 +610,7 @@
 fatal:
 	/* An unrecoverable error occurred, stop the daemon */
 	ASSERT(0);
-	CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );	
+	CHECK_FCT_DO(fd_core_shutdown(), );	
 }
 
 /* Set the timeout option on the socket */
@@ -842,8 +842,7 @@
 		CHECK_FCT_DO( fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer), 
 			{ 
 				free_rcvdata(&rcv_data);
-				CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
-				return NULL; 
+				goto fatal; 
 			} );
 		
 	} while (conn->cc_loop);
@@ -854,7 +853,7 @@
 	
 fatal:
 	/* An unrecoverable error occurred, stop the daemon */
-	CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
+	CHECK_FCT_DO(fd_core_shutdown(), );
 	goto out;
 }
 
@@ -907,7 +906,7 @@
 
 fatal:
 	/* An unrecoverable error occurred, stop the daemon */
-	CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
+	CHECK_FCT_DO(fd_core_shutdown(), );
 	goto out;
 }
 #endif /* DISABLE_SCTP */
@@ -1098,7 +1097,7 @@
 		CHECK_FCT_DO( ret = fd_event_send( fd_cnx_target_queue(conn), FDEVP_CNX_MSG_RECV, rcv_data.length, rcv_data.buffer), 
 			{ 
 				free_rcvdata(&rcv_data);
-				CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_TERMINATE, 0, NULL), );
+				CHECK_FCT_DO(fd_core_shutdown(), );
 				return ret; 
 			} );
 		
"Welcome to our mercurial repository"