This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/25424 ) Change subject: globally lock the portrange when trying to grab a port to prep for multithreading ...................................................................... globally lock the portrange when trying to grab a port to prep for multithreading Change-Id: I78ae737b829bb428372f34db7d5bc601b5088b78 --- M configure.ac M include/osmocom/mgcp/mgcp.h M src/libosmo-mgcp/mgcp_protocol.c 3 files changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved dexter: Looks good to me, but someone else must approve pespin: Looks good to me, but someone else must approve diff --git a/configure.ac b/configure.ac index 192c012..b996e87 100644 --- a/configure.ac +++ b/configure.ac @@ -57,6 +57,9 @@ PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 1.1.0) PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 1.1.0) +CFLAGS="$CFLAGS -pthread" +LDFLAGS="$LDFLAGS -pthread" + AC_ARG_ENABLE(sanitize, [AS_HELP_STRING( [--enable-sanitize], diff --git a/include/osmocom/mgcp/mgcp.h b/include/osmocom/mgcp/mgcp.h index b3f2eb5..228b0b3 100644 --- a/include/osmocom/mgcp/mgcp.h +++ b/include/osmocom/mgcp/mgcp.h @@ -34,6 +34,7 @@ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> +#include <pthread.h> #include "mgcp_ratectr.h" @@ -92,6 +93,7 @@ * This holds information on how to allocate ports */ struct mgcp_port_range { + pthread_mutex_t lock; /* addr or NULL to fall-back to default */ char *bind_addr_v4; char *bind_addr_v6; diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c index ba80d7d..16b7dab 100644 --- a/src/libosmo-mgcp/mgcp_protocol.c +++ b/src/libosmo-mgcp/mgcp_protocol.c @@ -28,6 +28,7 @@ #include <limits.h> #include <unistd.h> #include <errno.h> +#include <pthread.h> #include <osmocom/core/msgb.h> #include <osmocom/core/talloc.h> @@ -478,6 +479,7 @@ range = &endp->cfg->net_ports; + pthread_mutex_lock(&range->lock); /* attempt to find a port */ tries = (range->range_end - range->range_start) / 2; for (i = 0; i < tries; ++i) { @@ -490,11 +492,12 @@ range->last_port += 2; if (rc == 0) { + pthread_mutex_unlock(&range->lock); return 0; } } - + pthread_mutex_unlock(&range->lock); LOGPENDP(endp, DLMGCP, LOGL_ERROR, "Allocating a RTP/RTCP port failed %u times.\n", tries); @@ -1606,6 +1609,7 @@ osmo_strlcpy(cfg->domain, "mgw", sizeof(cfg->domain)); + cfg->net_ports.lock = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; cfg->net_ports.range_start = RTP_PORT_DEFAULT_RANGE_START; cfg->net_ports.range_end = RTP_PORT_DEFAULT_RANGE_END; cfg->net_ports.last_port = cfg->net_ports.range_start; -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/25424 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: I78ae737b829bb428372f34db7d5bc601b5088b78 Gerrit-Change-Number: 25424 Gerrit-PatchSet: 12 Gerrit-Owner: Hoernchen <ewild at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier at sysmocom.de> Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-Reviewer: pespin <pespin at sysmocom.de> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210913/5c4b3402/attachment.htm>