diff --git a/src/core/socket.c b/src/core/socket.c
index 0bc275b..7fc1b72 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -959,23 +959,8 @@
 		goto ret_freeaddrinfo;
 	}
 
-	if (flags & OSMO_SOCK_F_BIND) {
-		/* Since so far we only allow IPPROTO_SCTP in this function,
-		   no need to check below for "proto != IPPROTO_UDP || flags & OSMO_SOCK_F_UDP_REUSEADDR" */
-		rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR,
-				&on, sizeof(on));
-		if (rc < 0) {
-			int err = errno;
-			multiaddr_snprintf(strbuf, sizeof(strbuf), local_hosts, local_hosts_cnt);
-			LOGP(DLGLOBAL, LOGL_ERROR,
-			     "cannot setsockopt socket:"
-			     " %s:%u: %s\n",
-			     strbuf, local_port,
-			     strerror(err));
-			goto ret_close;
-		}
-
-		if (pars && pars->sctp.sockopt_auth_supported.set) {
+	if (pars) {
+		if (pars->sctp.sockopt_auth_supported.set) {
 			/* RFC 5061 4.2.7: ASCONF also requires AUTH feature. */
 			rc = setsockopt_sctp_auth_supported(sfd, pars->sctp.sockopt_auth_supported.value);
 			if (rc < 0) {
@@ -991,7 +976,7 @@
 			}
 		}
 
-		if (pars && pars->sctp.sockopt_asconf_supported.set) {
+		if (pars->sctp.sockopt_asconf_supported.set) {
 			rc = setsockopt_sctp_asconf_supported(sfd, pars->sctp.sockopt_asconf_supported.value);
 			if (rc < 0) {
 				int err = errno;
@@ -1006,7 +991,7 @@
 			}
 		}
 
-		if (pars && pars->sctp.sockopt_initmsg.set) {
+		if (pars->sctp.sockopt_initmsg.set) {
 			rc = setsockopt_sctp_initmsg(sfd, pars);
 			if (rc < 0) {
 				int err = errno;
@@ -1019,6 +1004,23 @@
 				/* do not fail, some parameters will be left as the global default */
 			}
 		}
+	}
+
+	if (flags & OSMO_SOCK_F_BIND) {
+		/* Since so far we only allow IPPROTO_SCTP in this function,
+		   no need to check below for "proto != IPPROTO_UDP || flags & OSMO_SOCK_F_UDP_REUSEADDR" */
+		rc = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR,
+				&on, sizeof(on));
+		if (rc < 0) {
+			int err = errno;
+			multiaddr_snprintf(strbuf, sizeof(strbuf), local_hosts, local_hosts_cnt);
+			LOGP(DLGLOBAL, LOGL_ERROR,
+			     "cannot setsockopt socket:"
+			     " %s:%u: %s\n",
+			     strbuf, local_port,
+			     strerror(err));
+			goto ret_close;
+		}
 
 		/* Build array of addresses taking first entry for each host.
 		   TODO: Ideally we should use backtracking storing last used
