diff --git a/src/core/ddsi/include/dds/ddsi/q_config.h b/src/core/ddsi/include/dds/ddsi/q_config.h index a83fbf8..095717c 100644 --- a/src/core/ddsi/include/dds/ddsi/q_config.h +++ b/src/core/ddsi/include/dds/ddsi/q_config.h @@ -372,7 +372,6 @@ struct config enum nn_standards_conformance standards_conformance; int explicitly_publish_qos_set_to_default; enum many_sockets_mode many_sockets_mode; - int arrival_of_data_asserts_pp_and_ep_liveliness; int assume_rti_has_pmd_endpoints; int port_dg; diff --git a/src/core/ddsi/include/dds/ddsi/q_entity.h b/src/core/ddsi/include/dds/ddsi/q_entity.h index f809489..5011b2e 100644 --- a/src/core/ddsi/include/dds/ddsi/q_entity.h +++ b/src/core/ddsi/include/dds/ddsi/q_entity.h @@ -351,7 +351,6 @@ struct proxy_writer { unsigned last_fragnum_reset: 1; /* iff set, heartbeat advertising last_seq as highest seq resets last_fragnum */ unsigned deliver_synchronously: 1; /* iff 1, delivery happens straight from receive thread for non-historical data; else through delivery queue "dqueue" */ unsigned have_seen_heartbeat: 1; /* iff 1, we have received at least on heartbeat from this proxy writer */ - unsigned assert_pp_lease: 1; /* iff 1, renew the proxy-participant's lease when data comes in */ unsigned local_matching_inprogress: 1; /* iff 1, we are still busy matching local readers; this is so we don't deliver incoming data to some but not all readers initially */ #ifdef DDSI_INCLUDE_SSM unsigned supports_ssm: 1; /* iff 1, this proxy writer supports SSM */ @@ -370,7 +369,6 @@ struct proxy_reader { struct proxy_endpoint_common c; unsigned deleting: 1; /* set when being deleted */ unsigned is_fict_trans_reader: 1; /* only true when it is certain that is a fictitious transient data reader (affects built-in topic generation) */ - unsigned assert_pp_lease: 1; /* iff 1, renew the proxy-participant's lease when data comes in */ #ifdef DDSI_INCLUDE_SSM unsigned favours_ssm: 1; /* iff 1, this proxy reader favours SSM when available */ #endif diff --git a/src/core/ddsi/src/q_config.c b/src/core/ddsi/src/q_config.c index 1fb1155..99b697c 100644 --- a/src/core/ddsi/src/q_config.c +++ b/src/core/ddsi/src/q_config.c @@ -432,8 +432,6 @@ static const struct cfgelem compatibility_cfgelems[] = { { LEAF ("ManySocketsMode"), 1, "single", ABSOFF (many_sockets_mode), 0, uf_many_sockets_mode, 0, pf_many_sockets_mode, BLURB("

This option specifies whether a network socket will be created for each domain participant on a host. The specification seems to assume that each participant has a unique address, and setting this option will ensure this to be the case. This is not the defeault.

\n\

Disabling it slightly improves performance and reduces network traffic somewhat. It also causes the set of port numbers needed by DDSI2E to become predictable, which may be useful for firewall and NAT configuration.

") }, - { LEAF("ArrivalOfDataAssertsPpAndEpLiveliness"), 1, "true", ABSOFF(arrival_of_data_asserts_pp_and_ep_liveliness), 0, uf_boolean, 0, pf_boolean, - BLURB("

When set to true, arrival of a message from a peer asserts liveliness of that peer. When set to false, only SPDP and explicit lease renewals have this effect.

") }, { LEAF("AssumeRtiHasPmdEndpoints"), 1, "false", ABSOFF(assume_rti_has_pmd_endpoints), 0, uf_boolean, 0, pf_boolean, BLURB("

This option assumes ParticipantMessageData endpoints required by the liveliness protocol are present in RTI participants even when not properly advertised by the participant discovery protocol.

") }, END_MARKER diff --git a/src/core/ddsi/src/q_entity.c b/src/core/ddsi/src/q_entity.c index d8e66fc..14f03ef 100644 --- a/src/core/ddsi/src/q_entity.c +++ b/src/core/ddsi/src/q_entity.c @@ -4128,11 +4128,6 @@ int new_proxy_writer (const struct nn_guid *ppguid, const struct nn_guid *guid, pwr->supports_ssm = (addrset_contains_ssm (as) && config.allowMulticast & AMC_SSM) ? 1 : 0; #endif - /* Only assert PP lease on receipt of data if enabled (duh) and the proxy participant is a - "real" participant, rather than the thing we use for endpoints discovered via the DS */ - pwr->assert_pp_lease = - (unsigned) !!config.arrival_of_data_asserts_pp_and_ep_liveliness; - assert (pwr->c.xqos->present & QP_LIVELINESS); if (pwr->c.xqos->liveliness.kind != DDS_LIVELINESS_AUTOMATIC) DDS_LOG(DDS_LC_DISCOVERY, " FIXME: only AUTOMATIC liveliness supported"); @@ -4336,9 +4331,6 @@ int new_proxy_reader (const struct nn_guid *ppguid, const struct nn_guid *guid, prd->favours_ssm = (favours_ssm && config.allowMulticast & AMC_SSM) ? 1 : 0; #endif prd->is_fict_trans_reader = 0; - /* Only assert PP lease on receipt of data if enabled (duh) and the proxy participant is a - "real" participant, rather than the thing we use for endpoints discovered via the DS */ - prd->assert_pp_lease = (unsigned) !!config.arrival_of_data_asserts_pp_and_ep_liveliness; ddsrt_avl_init (&prd_writers_treedef, &prd->writers); diff --git a/src/core/ddsi/src/q_lease.c b/src/core/ddsi/src/q_lease.c index d0dc03b..f3d2e5b 100644 --- a/src/core/ddsi/src/q_lease.c +++ b/src/core/ddsi/src/q_lease.c @@ -363,8 +363,9 @@ void handle_PMD (UNUSED_ARG (const struct receiver_state *rst), nn_wctime_t time { /* Renew lease if arrival of this message didn't already do so, also renew the lease of the virtual participant used for DS-discovered endpoints */ - if (!config.arrival_of_data_asserts_pp_and_ep_liveliness) - lease_renew (ddsrt_atomic_ldvoidp (&pp->lease), now_et ()); +#if 0 // FIXME: superfluous ... receipt of the message already did it */ + lease_renew (ddsrt_atomic_ldvoidp (&pp->lease), now_et ()); +#endif } } break; diff --git a/src/core/ddsi/src/q_receive.c b/src/core/ddsi/src/q_receive.c index 8ec7197..7c9d4a0 100644 --- a/src/core/ddsi/src/q_receive.c +++ b/src/core/ddsi/src/q_receive.c @@ -715,8 +715,7 @@ static int handle_AckNack (struct receiver_state *rst, nn_etime_t tnow, const Ac } /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (prd->assert_pp_lease) - lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow); + lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow); if (!wr->reliable) /* note: reliability can't be changed */ { @@ -1189,8 +1188,7 @@ static int handle_Heartbeat (struct receiver_state *rst, nn_etime_t tnow, struct /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (pwr->assert_pp_lease) - lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); + lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); DDS_TRACE(PGUIDFMT" -> "PGUIDFMT":", PGUID (src), PGUID (dst)); @@ -1326,8 +1324,7 @@ static int handle_HeartbeatFrag (struct receiver_state *rst, UNUSED_ARG(nn_etime } /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (pwr->assert_pp_lease) - lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); + lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); DDS_TRACE(" "PGUIDFMT" -> "PGUIDFMT"", PGUID (src), PGUID (dst)); ddsrt_mutex_lock (&pwr->e.lock); @@ -1453,8 +1450,7 @@ static int handle_NackFrag (struct receiver_state *rst, nn_etime_t tnow, const N } /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (prd->assert_pp_lease) - lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow); + lease_renew (ddsrt_atomic_ldvoidp (&prd->c.proxypp->lease), tnow); if (!wr->reliable) /* note: reliability can't be changed */ { @@ -1700,8 +1696,7 @@ static int handle_Gap (struct receiver_state *rst, nn_etime_t tnow, struct nn_rm } /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (pwr->assert_pp_lease) - lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); + lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); ddsrt_mutex_lock (&pwr->e.lock); if ((wn = ddsrt_avl_lookup (&pwr_readers_treedef, &pwr->readers, &dst)) == NULL) @@ -2133,10 +2128,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct /* liveliness is still only implemented partially (with all set to AUTOMATIC, BY_PARTICIPANT, &c.), so we simply renew the proxy participant's lease. */ - if (pwr->assert_pp_lease) - { - lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); - } + lease_renew (ddsrt_atomic_ldvoidp (&pwr->c.proxypp->lease), tnow); /* Shouldn't lock the full writer, but will do so for now */ ddsrt_mutex_lock (&pwr->e.lock);