HEP sender: every dropped message logs its own error once the send queue is full
Maintainers usually reply within 3 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
Research direction
Start with daemon/homer.c at the homer_send() queue limit check cited in the issue, then inspect how the project’s logging limiters are keyed. Reproduce with a TCP HEP collector that accepts but never reads and send NG queries as described. Done means queue overflow logs are bounded across calls while dropped messages remain counted or otherwise understandable.
Written by the indexing model from the issue text.
Description
rtpengine version the issue has been seen with
mr26.3.1.3 (abc98192d77ebadd57bef9f7387f16be2e53d5b9), built from the tag, userspace only. homer_send() is the same on master.
Used distribution and its version
Debian 13 (container)
Linux kernel version used
6.8.0-117-generic (kernel module not used)
CPU architecture issue was seen on
aarch64
Expected behaviour you didn't see
When the HEP collector stops reading, homer_send() drops new messages once the queue holds SEND_QUEUE_LIMIT (200). Dropping is fine, but the error should be logged at a bounded rate.
Unexpected behaviour you saw
Every dropped message logs its own LOG_ERR line (daemon/homer.c#L229-L234). With a TCP collector that accepts the connection but never reads, 20,000 NG commands (40,000 HEP messages with --homer-enable-ng) produced 28,742 identical error lines in 1.4 s. On a busy relay a slow or stuck collector fills the log at that rate.
Steps to reproduce the problem
-
Listen on TCP 127.0.0.1:9060, accept the connection and never read from it (a small
SO_RCVBUFmakes it quicker). -
Start rtpengine:
rtpengine --foreground --log-stderr --table=-1 --interface=127.0.0.1 --listen-ng=127.0.0.1:2223 --homer=127.0.0.1:9060 --homer-protocol=tcp --homer-id=2001 --homer-enable-ng --port-min=30000 --port-max=30100 -
Send 20,000 NG
querycommands for an unknown call-id over UDP to 127.0.0.1:2223, each waiting for its reply. -
Count
Send queue length limitlines in the log.
Additional program output to the terminal or logs illustrating the issue
[no-such-]: [core] Send queue length limit (200) reached, dropping Homer message
[core] Send queue length limit (200) reached, dropping Homer message
[no-such-]: [core] Send queue length limit (200) reached, dropping Homer message
... 28,742 lines in 1.4 s
Anything else?
The per-message line dates from the 2016 queue limit (d45f928c98), when HEP carried only RTCP stats; NG tracing (7905811c53, 2024) adds two HEP messages per NG command, which is what makes the rate this high.
LOG_FLAG_LIMIT would be the usual way to bound this, but its limiter keys on the log prefix, which includes the call-id, so with many concurrent calls it would still log once per call every 15 s. A single limit for the sender (for example one line per 15 s, perhaps with the number of messages dropped since the last line) would keep the log readable.
- Dominant language
- Perl
- Stars
- 992
- Forks
- 459
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sipwise/rtpengine
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 3 days
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 75/100
Maintainers usually reply within 3 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 25/100
sipwise/rtpengine#2231 · 3 comments ·
Maintainers usually reply within 3 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 42/100
sipwise/rtpengine#2219 · 3 comments ·
Maintainers usually reply within 3 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 38/100
sipwise/rtpengine#2190 · 1 comment ·
Maintainers usually reply within 3 days
All issues in sipwise/rtpengine
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
ai-driven-fuzzing bug claude Minor
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
linagora/lemonldap-ng-plugins#170 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
libwww-perl/HTTP-Message#236 ·
-
1.severity: security
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
wave-followup
Difficulty 2/5 1-3 hours Newbie friendliness 74/100