aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mslookup/mdns_sock.c21
-rw-r--r--src/mslookup/mslookup_client_mdns.c4
2 files changed, 13 insertions, 12 deletions
diff --git a/src/mslookup/mdns_sock.c b/src/mslookup/mdns_sock.c
index 902ead83..4a964dbd 100644
--- a/src/mslookup/mdns_sock.c
+++ b/src/mslookup/mdns_sock.c
@@ -16,9 +16,9 @@
#include <osmocom/mslookup/mdns_sock.h>
/* returns 0 on success, -1 on error */
-struct osmo_mdns_sock *osmo_mdns_sock_init(void *ctx, const char *ip, unsigned int port, bool reuse_addr,
- int (*cb)(struct osmo_fd *fd, unsigned int what),
- void *data, unsigned int priv_nr)
+struct osmo_mdns_sock *osmo_mdns_sock_init(void *ctx, const char *ip, unsigned int port,
+ int (*cb)(struct osmo_fd *fd, unsigned int what),
+ void *data, unsigned int priv_nr)
{
struct osmo_mdns_sock *ret;
int sock, rc;
@@ -65,13 +65,14 @@ struct osmo_mdns_sock *osmo_mdns_sock_init(void *ctx, const char *ip, unsigned i
goto error;
}
- /* Tests: client and server listen on same IP and port */
- if (reuse_addr) {
- rc = setsockopt(sock,SOL_SOCKET,SO_REUSEADDR, (char *)&y, sizeof(y));
- if (rc == -1) {
- LOGP(DLMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: setsockopt: %s\n", strerror(errno));
- goto error;
- }
+ /* Always allow binding the same IP and port twice. This is needed in OsmoHLR (where the code becomes cleaner by
+ * just using a different socket for server and client code) and in the mslookup_client_mdns_test. Also for
+ * osmo-mslookup-client if it is running multiple times in parallel (i.e. two incoming calls almost at the same
+ * time need to be resolved with the simple dialplan example that just starts new processes). */
+ rc = setsockopt(sock,SOL_SOCKET,SO_REUSEADDR, (char *)&y, sizeof(y));
+ if (rc == -1) {
+ LOGP(DLMSLOOKUP, LOGL_ERROR, "osmo_mdns_sock_init: setsockopt: %s\n", strerror(errno));
+ goto error;
}
/* Bind and register osmo_fd callback */
diff --git a/src/mslookup/mslookup_client_mdns.c b/src/mslookup/mslookup_client_mdns.c
index 45bbf3d9..d61fd14e 100644
--- a/src/mslookup/mslookup_client_mdns.c
+++ b/src/mslookup/mslookup_client_mdns.c
@@ -146,7 +146,7 @@ static void mdns_method_destruct(struct osmo_mslookup_client_method *method)
* ID, but all query parameters (service type, ID, ID type), to determine if a reply is
* relevant. */
struct osmo_mslookup_client_method *osmo_mslookup_client_add_mdns(struct osmo_mslookup_client *client, const char *ip,
- uint16_t port, bool reuse_addr, int initial_packet_id)
+ uint16_t port, int initial_packet_id)
{
struct osmo_mdns_method_state *state;
struct osmo_mslookup_client_method *m;
@@ -173,7 +173,7 @@ struct osmo_mslookup_client_method *osmo_mslookup_client_add_mdns(struct osmo_ms
state->client = client;
- state->mc = osmo_mdns_sock_init(state, ip, port, reuse_addr, mdns_method_recv, state, 0);
+ state->mc = osmo_mdns_sock_init(state, ip, port, mdns_method_recv, state, 0);
if (!state->mc)
goto error_cleanup;