Просмотр исходного кода

Merge trunk revision 2754:
r2754 | sdake | 2010-04-01 17:10:43 -0700 (Thu, 01 Apr 2010) | 3 lines

Remove problem where NULL dispatch handler functions would result in lockup
of the dispatch if they were sent by a service engine.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/branches/flatiron@2778 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 16 лет назад
Родитель
Сommit
e4630f6967
6 измененных файлов с 22 добавлено и 11 удалено
  1. 1 1
      lib/cfg.c
  2. 14 3
      lib/confdb.c
  3. 2 2
      lib/cpg.c
  4. 2 2
      lib/evs.c
  5. 1 1
      lib/quorum.c
  6. 2 2
      lib/votequorum.c

+ 1 - 1
lib/cfg.c

@@ -203,7 +203,7 @@ corosync_cfg_dispatch (
 		switch (dispatch_data->id) {
 		case MESSAGE_RES_CFG_TESTSHUTDOWN:
 			if (callbacks.corosync_cfg_shutdown_callback == NULL) {
-				continue;
+				break;
 			}
 
 			res_lib_cfg_testshutdown = (struct res_lib_cfg_testshutdown *)dispatch_data;

+ 14 - 3
lib/confdb.c

@@ -340,7 +340,7 @@ cs_error_t confdb_dispatch (
 		switch (dispatch_data->id) {
 			case MESSAGE_RES_CONFDB_KEY_CHANGE_CALLBACK:
 				if (callbacks.confdb_key_change_notify_fn == NULL) {
-					continue;
+					break;
 				}
 
 				res_key_changed_pt = (struct res_lib_confdb_key_change_callback *)dispatch_data;
@@ -359,7 +359,7 @@ cs_error_t confdb_dispatch (
 
 			case MESSAGE_RES_CONFDB_OBJECT_CREATE_CALLBACK:
 				if (callbacks.confdb_object_create_change_notify_fn == NULL) {
-					continue;
+					break;
 				}
 
 				res_object_created_pt = (struct res_lib_confdb_object_create_callback *)dispatch_data;
@@ -373,7 +373,7 @@ cs_error_t confdb_dispatch (
 
 			case MESSAGE_RES_CONFDB_OBJECT_DESTROY_CALLBACK:
 				if (callbacks.confdb_object_delete_change_notify_fn == NULL) {
-					continue;
+					break;
 				}
 
 				res_object_destroyed_pt = (struct res_lib_confdb_object_destroy_callback *)dispatch_data;
@@ -384,6 +384,17 @@ cs_error_t confdb_dispatch (
 					res_object_destroyed_pt->name.length);
 				break;
 
+		        case MESSAGE_RES_CONFDB_RELOAD_CALLBACK:
+				if (callbacks.confdb_reload_notify_fn == NULL) {
+					break;
+				}
+
+				res_reload_pt = (struct res_lib_confdb_reload_callback *)dispatch_data;
+
+				callbacks.confdb_reload_notify_fn(handle,
+					res_reload_pt->type);
+				break;
+
 			default:
 				coroipcc_dispatch_put (confdb_inst->handle);
 				error = CS_ERR_LIBRARY;

+ 2 - 2
lib/cpg.c

@@ -339,7 +339,7 @@ cs_error_t cpg_dispatch (
 		switch (dispatch_data->id) {
 		case MESSAGE_RES_CPG_DELIVER_CALLBACK:
 			if (callbacks.cpg_deliver_fn == NULL) {
-				continue;
+				break;
 			}
 
 			res_cpg_deliver_callback = (struct res_lib_cpg_deliver_callback *)dispatch_data;
@@ -358,7 +358,7 @@ cs_error_t cpg_dispatch (
 
 		case MESSAGE_RES_CPG_CONFCHG_CALLBACK:
 			if (callbacks.cpg_confchg_fn == NULL) {
-				continue;
+				break;
 			}
 
 			res_cpg_confchg_callback = (struct res_lib_cpg_confchg_callback *)dispatch_data;

+ 2 - 2
lib/evs.c

@@ -279,7 +279,7 @@ evs_error_t evs_dispatch (
 		switch (dispatch_data->id) {
 		case MESSAGE_RES_EVS_DELIVER_CALLBACK:
 			if (callbacks.evs_deliver_fn == NULL) {
-				continue;
+				break;
 			}
 
 			res_evs_deliver_callback = (struct res_evs_deliver_callback *)dispatch_data;
@@ -292,7 +292,7 @@ evs_error_t evs_dispatch (
 
 		case MESSAGE_RES_EVS_CONFCHG_CALLBACK:
 			if (callbacks.evs_confchg_fn == NULL) {
-				continue;
+				break;
 			}
 
 			res_evs_confchg_callback = (struct res_evs_confchg_callback *)dispatch_data;

+ 1 - 1
lib/quorum.c

@@ -387,7 +387,7 @@ cs_error_t quorum_dispatch (
 
 		case MESSAGE_RES_QUORUM_NOTIFICATION:
 			if (callbacks.quorum_notify_fn == NULL) {
-				continue;
+				break;
 			}
 			res_lib_quorum_notification = (struct res_lib_quorum_notification *)dispatch_data;
 

+ 2 - 2
lib/votequorum.c

@@ -742,7 +742,7 @@ cs_error_t votequorum_dispatch (
 
 		case MESSAGE_RES_VOTEQUORUM_NOTIFICATION:
 			if (callbacks.votequorum_notify_fn == NULL) {
-				continue;
+				break;
 			}
 			res_lib_votequorum_notification = (struct res_lib_votequorum_notification *)dispatch_data;
 
@@ -756,7 +756,7 @@ cs_error_t votequorum_dispatch (
 
 		case MESSAGE_RES_VOTEQUORUM_EXPECTEDVOTES_NOTIFICATION:
 			if (callbacks.votequorum_expectedvotes_notify_fn == NULL) {
-				continue;
+				break;
 			}
 			res_lib_votequorum_expectedvotes_notification = (struct res_lib_votequorum_expectedvotes_notification *)dispatch_data;