res_pjsip_t38: Decline T.38 stream on failure case.

When negotiating an incoming T.38 stream the code incorrectly
returned failure instead of a decline for the stream when a
problem occurred or the configuration didn't allow it. This
resulted in SDP offers being rejected with a 488 response
in all cases, even when another valid stream was present.

This change makes it so the stream is now declined. If no
streams are accepted a 488 response is sent while if at least
one stream is accepted all the declined streams are, well,
declined.

ASTERISK-27763

Change-Id: I88bcf793788c412a9839d111a5c736bf6867807c
13.23
Joshua Colp 7 years ago
parent 43dc9c3d5f
commit 76f2699d2d

@ -690,17 +690,17 @@ static int negotiate_incoming_sdp_stream(struct ast_sip_session *session, struct
if (!session->endpoint->media.t38.enabled) {
ast_debug(3, "Declining; T.38 not enabled on session\n");
return -1;
return 0;
}
if (!(state = t38_state_get_or_alloc(session))) {
return -1;
return 0;
}
if ((session->t38state == T38_REJECTED) || (session->t38state == T38_DISABLED)) {
ast_debug(3, "Declining; T.38 state is rejected or declined\n");
t38_change_state(session, session_media, state, T38_DISABLED);
return -1;
return 0;
}
ast_copy_pj_str(host, stream->conn ? &stream->conn->addr : &sdp->conn->addr, sizeof(host));
@ -709,7 +709,7 @@ static int negotiate_incoming_sdp_stream(struct ast_sip_session *session, struct
if (ast_sockaddr_resolve(&addrs, host, PARSE_PORT_FORBID, AST_AF_INET) <= 0) {
/* The provided host was actually invalid so we error out this negotiation */
ast_debug(3, "Declining; provided host is invalid\n");
return -1;
return 0;
}
/* Check the address family to make sure it matches configured */
@ -717,7 +717,7 @@ static int negotiate_incoming_sdp_stream(struct ast_sip_session *session, struct
(ast_sockaddr_is_ipv4(addrs) && session->endpoint->media.t38.ipv6)) {
/* The address does not match configured */
ast_debug(3, "Declining, provided host does not match configured address family\n");
return -1;
return 0;
}
return 1;

Loading…
Cancel
Save