aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2018-11-26 18:31:49 +0100
committerMicael Karlberg <[email protected]>2018-11-26 18:31:49 +0100
commitb7e5753c4e2eb22d231f2b64291ba7d1aec4d444 (patch)
treeb6be54d23e6e231febb65eda5d332539885a97e6
parentc44851291637659ef096818eda4692c81ed052ae (diff)
downloadotp-b7e5753c4e2eb22d231f2b64291ba7d1aec4d444.tar.gz
otp-b7e5753c4e2eb22d231f2b64291ba7d1aec4d444.tar.bz2
otp-b7e5753c4e2eb22d231f2b64291ba7d1aec4d444.zip
[socket-nif] Conditional use of sctp struct field
Added config checks for the sctp struct field: sctp_event_subscribe.sctp_sender_dry_event Also, if-def'ed the code accordingly. OTP-14831
-rw-r--r--erts/configure.in3
-rw-r--r--erts/emulator/nifs/common/socket_nif.c9
2 files changed, 10 insertions, 2 deletions
diff --git a/erts/configure.in b/erts/configure.in
index d211b81878..79a1944a03 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -1594,7 +1594,8 @@ if test x"$ac_cv_header_netinet_sctp_h" = x"yes"; then
struct sctp_paddrparams.spp_sackdelay,
struct sctp_paddrparams.spp_flags,
struct sctp_remote_error.sre_data,
- struct sctp_send_failed.ssf_data], [], [],
+ struct sctp_send_failed.ssf_data,
+ struct sctp_event_subscribe.sctp_sender_dry_event], [], [],
[#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
diff --git a/erts/emulator/nifs/common/socket_nif.c b/erts/emulator/nifs/common/socket_nif.c
index f657da3ace..cc58918f43 100644
--- a/erts/emulator/nifs/common/socket_nif.c
+++ b/erts/emulator/nifs/common/socket_nif.c
@@ -9225,7 +9225,10 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
ERL_NIF_TERM result;
ERL_NIF_TERM eDataIn, eAssoc, eAddr, eSndFailure;
ERL_NIF_TERM ePeerError, eShutdown, ePartialDelivery;
- ERL_NIF_TERM eAdaptLayer, eAuth, eSndDry;
+ ERL_NIF_TERM eAdaptLayer, eAuth;
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
+ ERL_NIF_TERM eSndDry;
+#endif
struct sctp_event_subscribe events;
int res;
size_t sz;
@@ -9273,8 +9276,10 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
if (!GET_MAP_VAL(env, eVal, atom_authentication, &eAuth))
return esock_make_error(env, esock_atom_einval);
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
if (!GET_MAP_VAL(env, eVal, atom_sender_dry, &eSndDry))
return esock_make_error(env, esock_atom_einval);
+#endif
SSDBG( descP,
("SOCKET", "nsetopt_lvl_sctp_events -> decode attributes\r\n") );
@@ -9288,7 +9293,9 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
events.sctp_partial_delivery_event = esock_decode_bool(ePartialDelivery);
events.sctp_adaptation_layer_event = esock_decode_bool(eAdaptLayer);
events.sctp_authentication_event = esock_decode_bool(eAuth);
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
events.sctp_sender_dry_event = esock_decode_bool(eSndDry);
+#endif
SSDBG( descP,
("SOCKET", "nsetopt_lvl_sctp_events -> set events option\r\n") );