This at least will not make the client hang forever. Signed-off-by: Angus Salkeld <asalkeld@xxxxxxxxxx> --- include/corosync/corotypes.h | 1 + lib/cfg.c | 24 ++++++++++++------------ lib/cmap.c | 18 +++++++++--------- lib/cpg.c | 3 ++- lib/evs.c | 10 +++++----- lib/pload.c | 2 +- lib/quorum.c | 6 +++--- lib/votequorum.c | 22 +++++++++++----------- 8 files changed, 44 insertions(+), 42 deletions(-) diff --git a/include/corosync/corotypes.h b/include/corosync/corotypes.h index 7484a94..acae884 100644 --- a/include/corosync/corotypes.h +++ b/include/corosync/corotypes.h @@ -106,6 +106,7 @@ typedef enum { CS_ERR_SECURITY = 100 } cs_error_t; +#define CS_IPC_TIMEOUT_MS 1000 #define CS_TIME_MS_IN_SEC 1000ULL #define CS_TIME_US_IN_SEC 1000000ULL diff --git a/lib/cfg.c b/lib/cfg.c index 1828dfa..23d6768 100644 --- a/lib/cfg.c +++ b/lib/cfg.c @@ -286,7 +286,7 @@ corosync_cfg_ring_status_get ( &iov, 1, &res_lib_cfg_ringstatusget, - sizeof (struct res_lib_cfg_ringstatusget), -1)); + sizeof (struct res_lib_cfg_ringstatusget), CS_IPC_TIMEOUT_MS)); *interface_count = res_lib_cfg_ringstatusget.interface_count; *interface_names = malloc (sizeof (char *) * *interface_count); @@ -366,7 +366,7 @@ corosync_cfg_ring_reenable ( &iov, 1, &res_lib_cfg_ringreenable, - sizeof (struct res_lib_cfg_ringreenable), -1)); + sizeof (struct res_lib_cfg_ringreenable), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -405,7 +405,7 @@ corosync_cfg_service_load ( &iov, 1, &res_lib_cfg_serviceload, - sizeof (struct res_lib_cfg_serviceload), -1)); + sizeof (struct res_lib_cfg_serviceload), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -444,7 +444,7 @@ corosync_cfg_service_unload ( &iov, 1, &res_lib_cfg_serviceunload, - sizeof (struct res_lib_cfg_serviceunload), -1)); + sizeof (struct res_lib_cfg_serviceunload), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -480,7 +480,7 @@ corosync_cfg_state_track ( &iov, 1, &res_lib_cfg_statetrack, - sizeof (struct res_lib_cfg_statetrack), -1)); + sizeof (struct res_lib_cfg_statetrack), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -513,7 +513,7 @@ corosync_cfg_state_track_stop ( &iov, 1, &res_lib_cfg_statetrackstop, - sizeof (struct res_lib_cfg_statetrackstop), -1)); + sizeof (struct res_lib_cfg_statetrackstop), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -554,7 +554,7 @@ corosync_cfg_kill_node ( &iov, 1, &res_lib_cfg_killnode, - sizeof (struct res_lib_cfg_killnode), -1)); + sizeof (struct res_lib_cfg_killnode), CS_IPC_TIMEOUT_MS)); error = res_lib_cfg_killnode.header.error; @@ -591,7 +591,7 @@ corosync_cfg_try_shutdown ( &iov, 1, &res_lib_cfg_tryshutdown, - sizeof (struct res_lib_cfg_tryshutdown), -1)); + sizeof (struct res_lib_cfg_tryshutdown), CS_IPC_TIMEOUT_MS)); (void)hdb_handle_put (&cfg_hdb, cfg_handle); @@ -626,7 +626,7 @@ corosync_cfg_replyto_shutdown ( &iov, 1, &res_lib_cfg_replytoshutdown, - sizeof (struct res_lib_cfg_replytoshutdown), -1)); + sizeof (struct res_lib_cfg_replytoshutdown), CS_IPC_TIMEOUT_MS)); return (error); } @@ -664,7 +664,7 @@ cs_error_t corosync_cfg_get_node_addrs ( error = qb_to_cs_error (qb_ipcc_sendv_recv ( cfg_inst->c, &iov, 1, - response_buf, IPC_RESPONSE_SIZE, -1)); + response_buf, IPC_RESPONSE_SIZE, CS_IPC_TIMEOUT_MS)); res_lib_cfg_get_node_addrs = (struct res_lib_cfg_get_node_addrs *)response_buf; if (error != CS_OK) { @@ -730,7 +730,7 @@ cs_error_t corosync_cfg_local_get ( &iov, 1, &res_lib_cfg_local_get, - sizeof (struct res_lib_cfg_local_get), -1)); + sizeof (struct res_lib_cfg_local_get), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -774,7 +774,7 @@ corosync_cfg_crypto_set ( &iov, 1, &res_lib_cfg_crypto_set, - sizeof (struct res_lib_cfg_crypto_set), -1)); + sizeof (struct res_lib_cfg_crypto_set), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) error = res_lib_cfg_crypto_set.header.error; diff --git a/lib/cmap.c b/lib/cmap.c index 05be657..252bf86 100644 --- a/lib/cmap.c +++ b/lib/cmap.c @@ -359,7 +359,7 @@ cs_error_t cmap_set ( iov, 2, &res_lib_cmap_set, - sizeof (struct res_lib_cmap_set), -1)); + sizeof (struct res_lib_cmap_set), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_set.header.error; @@ -457,7 +457,7 @@ cs_error_t cmap_delete(cmap_handle_t handle, const char *key_name) &iov, 1, &res_lib_cmap_delete, - sizeof (struct res_lib_cmap_delete), -1)); + sizeof (struct res_lib_cmap_delete), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_delete.header.error; @@ -519,7 +519,7 @@ cs_error_t cmap_get( &iov, 1, res_lib_cmap_get, - res_size, -1)); + res_size, CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_get->header.error; @@ -705,7 +705,7 @@ static cs_error_t cmap_adjust_int(cmap_handle_t handle, const char *key_name, in &iov, 1, &res_lib_cmap_adjust_int, - sizeof (struct res_lib_cmap_adjust_int), -1)); + sizeof (struct res_lib_cmap_adjust_int), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_adjust_int.header.error; @@ -761,7 +761,7 @@ cs_error_t cmap_iter_init( &iov, 1, &res_lib_cmap_iter_init, - sizeof (struct res_lib_cmap_iter_init), -1)); + sizeof (struct res_lib_cmap_iter_init), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_iter_init.header.error; @@ -807,7 +807,7 @@ cs_error_t cmap_iter_next( &iov, 1, &res_lib_cmap_iter_next, - sizeof (struct res_lib_cmap_iter_next), -1)); + sizeof (struct res_lib_cmap_iter_next), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_iter_next.header.error; @@ -858,7 +858,7 @@ cs_error_t cmap_iter_finalize( &iov, 1, &res_lib_cmap_iter_finalize, - sizeof (struct res_lib_cmap_iter_finalize), -1)); + sizeof (struct res_lib_cmap_iter_finalize), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_iter_finalize.header.error; @@ -926,7 +926,7 @@ cs_error_t cmap_track_add( &iov, 1, &res_lib_cmap_track_add, - sizeof (struct res_lib_cmap_track_add), -1)); + sizeof (struct res_lib_cmap_track_add), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_track_add.header.error; @@ -982,7 +982,7 @@ cs_error_t cmap_track_delete( &iov, 1, &res_lib_cmap_track_delete, - sizeof (struct res_lib_cmap_track_delete), -1)); + sizeof (struct res_lib_cmap_track_delete), CS_IPC_TIMEOUT_MS)); if (error == CS_OK) { error = res_lib_cmap_track_delete.header.error; diff --git a/lib/cpg.c b/lib/cpg.c index c7f51f7..e8d8614 100644 --- a/lib/cpg.c +++ b/lib/cpg.c @@ -97,7 +97,8 @@ coroipcc_msg_send_reply_receive ( void *res_msg, size_t res_len) { - return qb_to_cs_error(qb_ipcc_sendv_recv(c, iov, iov_len, res_msg, res_len, -1)); + return qb_to_cs_error(qb_ipcc_sendv_recv(c, iov, iov_len, res_msg, res_len, + CS_IPC_TIMEOUT_MS)); } static void cpg_iteration_instance_finalize (struct cpg_iteration_instance_t *cpg_iteration_instance) diff --git a/lib/evs.c b/lib/evs.c index 067ad76..0f9daf1 100644 --- a/lib/evs.c +++ b/lib/evs.c @@ -347,7 +347,7 @@ evs_error_t evs_join ( iov[1].iov_len = (group_entries * sizeof (struct evs_group)); error = qb_to_cs_error(qb_ipcc_sendv_recv (evs_inst->c, iov, 2, - &res_lib_evs_join, sizeof (struct res_lib_evs_join), -1)); + &res_lib_evs_join, sizeof (struct res_lib_evs_join), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -388,7 +388,7 @@ evs_error_t evs_leave ( iov[1].iov_len = (group_entries * sizeof (struct evs_group)); error = qb_to_cs_error(qb_ipcc_sendv_recv (evs_inst->c, iov, 2, - &res_lib_evs_leave, sizeof (struct res_lib_evs_leave), -1)); + &res_lib_evs_leave, sizeof (struct res_lib_evs_leave), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -439,7 +439,7 @@ evs_error_t evs_mcast_joined ( error = qb_to_cs_error(qb_ipcc_sendv_recv (evs_inst->c, iov, iov_len + 1, &res_lib_evs_mcast_joined, - sizeof (struct res_lib_evs_mcast_joined), -1)); + sizeof (struct res_lib_evs_mcast_joined), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -492,7 +492,7 @@ evs_error_t evs_mcast_groups ( error = qb_to_cs_error(qb_ipcc_sendv_recv (evs_inst->c, iov, iov_len + 2, &res_lib_evs_mcast_groups, - sizeof (struct res_lib_evs_mcast_groups), -1)); + sizeof (struct res_lib_evs_mcast_groups), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -533,7 +533,7 @@ evs_error_t evs_membership_get ( &iov, 1, &res_lib_evs_membership_get, - sizeof (struct res_lib_evs_membership_get), -1)); + sizeof (struct res_lib_evs_membership_get), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; diff --git a/lib/pload.c b/lib/pload.c index 8f41e72..e5a6543 100644 --- a/lib/pload.c +++ b/lib/pload.c @@ -185,7 +185,7 @@ unsigned int pload_start ( &iov, 1, &res_lib_pload_start, - sizeof (struct res_lib_pload_start), -1)); + sizeof (struct res_lib_pload_start), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; diff --git a/lib/quorum.c b/lib/quorum.c index 8fc7ef0..c55f6c6 100644 --- a/lib/quorum.c +++ b/lib/quorum.c @@ -160,7 +160,7 @@ cs_error_t quorum_getquorate ( &iov, 1, &res_lib_quorum_getquorate, - sizeof (struct res_lib_quorum_getquorate), -1)); + sizeof (struct res_lib_quorum_getquorate), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -262,7 +262,7 @@ cs_error_t quorum_trackstart ( &iov, 1, &res, - sizeof (res), -1)); + sizeof (res), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -301,7 +301,7 @@ cs_error_t quorum_trackstop ( &iov, 1, &res, - sizeof (res), -1)); + sizeof (res), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; diff --git a/lib/votequorum.c b/lib/votequorum.c index 60d91b7..095f7c4 100644 --- a/lib/votequorum.c +++ b/lib/votequorum.c @@ -165,7 +165,7 @@ cs_error_t votequorum_getinfo ( &iov, 1, &res_lib_votequorum_getinfo, - sizeof (struct res_lib_votequorum_getinfo), -1)); + sizeof (struct res_lib_votequorum_getinfo), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -215,7 +215,7 @@ cs_error_t votequorum_setexpected ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -258,7 +258,7 @@ cs_error_t votequorum_setvotes ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -305,7 +305,7 @@ cs_error_t votequorum_qdisk_register ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -347,7 +347,7 @@ cs_error_t votequorum_qdisk_poll ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -386,7 +386,7 @@ cs_error_t votequorum_qdisk_unregister ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -429,7 +429,7 @@ cs_error_t votequorum_qdisk_getinfo ( &iov, 1, &res_lib_votequorum_qdisk_getinfo, - sizeof (struct res_lib_votequorum_qdisk_getinfo), -1)); + sizeof (struct res_lib_votequorum_qdisk_getinfo), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -473,7 +473,7 @@ cs_error_t votequorum_setstate ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -513,7 +513,7 @@ cs_error_t votequorum_leaving ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -556,7 +556,7 @@ cs_error_t votequorum_trackstart ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; @@ -595,7 +595,7 @@ cs_error_t votequorum_trackstop ( &iov, 1, &res_lib_votequorum_status, - sizeof (struct res_lib_votequorum_status), -1)); + sizeof (struct res_lib_votequorum_status), CS_IPC_TIMEOUT_MS)); if (error != CS_OK) { goto error_exit; -- 1.7.7.5 _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss