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/OpenBSC@lists.osmocom.org/.
Alexey Shamrin shamrin at gmail.comHi Andreas,
19.02.2014, в 10:57, Andreas Eversberg <jolly at eversberg.eu> написал(а):
> When reading from RTP socket, the first read() may fail right after
> connecting to remote socket. Subsequent read() will work as it should.
>
> If the remote socket does not open fast enough, the transmitted RTP
> payload can cause an ICMP (connection refused) packet reply. This causes
> the read to fail with errno=111. In all other error cases, the errno is
> logged at debug level. In all error cases, reading is not disabled.
> ---
> openbsc/src/libtrau/rtp_proxy.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/openbsc/src/libtrau/rtp_proxy.c b/openbsc/src/libtrau/rtp_proxy.c
> index ad3dbb6..52abad0 100644
> --- a/openbsc/src/libtrau/rtp_proxy.c
> +++ b/openbsc/src/libtrau/rtp_proxy.c
> @@ -497,9 +497,16 @@ static int rtp_socket_read(struct rtp_socket *rs, struct rtp_sub_socket *rss)
> return -ENOMEM;
>
> rc = read(rss->bfd.fd, msg->data, RTP_ALLOC_SIZE);
> - if (rc <= 0) {
> - rss->bfd.when &= ~BSC_FD_READ;
> - return rc;
> + if (rc == 0)
> + goto out_free;
> + if (rc < 0) {
> + /* Ignore "connection refused". this happens, If we open the
> + * socket faster than the remove side. */
Typo? s/remove/remote/
> + if (errno == ECONNREFUSED)
> + goto out_free;
> + DEBUGPC(DLMUX, "Read of RTP socket (%p) failed (errno %d, "
> + "%s)\n", rs, errno, strerror(errno));
> + goto out_free;
> }
>
> msgb_put(msg, rc);
> --
> 1.8.1.5
>
>