mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Channel alert pipe: improve diagnostic error return
When a frame is queued on a channel, any failure in ast_channel_alert_write is logged along with errno. This change improves the diagnostic message through aligning the errno value with actual failure cases. ASTERISK-25224 Reported by: Andrey Biglari Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b
This commit is contained in:
@@ -1202,7 +1202,14 @@ void ast_channel_named_pickupgroups_set(struct ast_channel *chan, struct ast_nam
|
||||
int ast_channel_alert_write(struct ast_channel *chan)
|
||||
{
|
||||
char blah = 0x7F;
|
||||
return ast_channel_alert_writable(chan) && write(chan->alertpipe[1], &blah, sizeof(blah)) != sizeof(blah);
|
||||
|
||||
if (!ast_channel_alert_writable(chan)) {
|
||||
errno = EBADF;
|
||||
return 0;
|
||||
}
|
||||
/* preset errno in case returned size does not match */
|
||||
errno = EPIPE;
|
||||
return write(chan->alertpipe[1], &blah, sizeof(blah)) != sizeof(blah);
|
||||
}
|
||||
|
||||
ast_alert_status_t ast_channel_internal_alert_read(struct ast_channel *chan)
|
||||
@@ -1253,9 +1260,11 @@ void ast_channel_internal_alertpipe_close(struct ast_channel *chan)
|
||||
{
|
||||
if (ast_channel_internal_alert_readable(chan)) {
|
||||
close(chan->alertpipe[0]);
|
||||
chan->alertpipe[0] = -1;
|
||||
}
|
||||
if (ast_channel_alert_writable(chan)) {
|
||||
close(chan->alertpipe[1]);
|
||||
chan->alertpipe[1] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user