]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_t38.c: Back out part of an earlier fix attempt. 02/2302/2
authorRichard Mudgett <rmudgett@digium.com>
Fri, 19 Feb 2016 00:27:02 +0000 (18:27 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 29 Feb 2016 18:50:19 +0000 (12:50 -0600)
This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d
commit.  Item 4 added the t38_bye_supplement.  Unfortunately, the frame
that it puts into the bridge may or may not be processed by the time the
bridged peer is kicked out of the bridge.  If it is processed then all is
well.  However, if it is not processed then that channel is stuck in fax
mode until it hangs up or maybe if it joins another bridge for T.38
faxing.

ASTERISK-25582

Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7

res/res_pjsip_t38.c

index 7534d4a4938174c1e36d25a0adc473329611dd73..14207d9c056f3b74201556fb8470aef1b70b1bbe 100644 (file)
@@ -570,41 +570,6 @@ static struct ast_sip_session_supplement t38_supplement = {
        .outgoing_request = t38_outgoing_invite_request,
 };
 
-static int t38_incoming_bye_request(struct ast_sip_session *session, struct pjsip_rx_data *rdata)
-{
-       struct ast_datastore *datastore;
-       struct ast_sip_session_media *session_media;
-
-       if (!session->channel) {
-               return 0;
-       }
-
-       datastore = ast_sip_session_get_datastore(session, "t38");
-       if (!datastore) {
-               return 0;
-       }
-
-       session_media = ao2_find(session->media, "image", OBJ_KEY);
-       if (!session_media) {
-               ao2_ref(datastore, -1);
-               return 0;
-       }
-
-       t38_change_state(session, session_media, datastore->data, T38_REJECTED);
-
-       ao2_ref(datastore, -1);
-       ao2_ref(session_media, -1);
-
-       return 0;
-}
-
-/*! \brief Supplement for handling a remote termination of T.38 state */
-static struct ast_sip_session_supplement t38_bye_supplement = {
-       .method = "BYE",
-       .priority = AST_SIP_SUPPLEMENT_PRIORITY_CHANNEL + 1,
-       .incoming_request = t38_incoming_bye_request,
-};
-
 /*! \brief Parse a T.38 image stream and store the attribute information */
 static void t38_interpret_sdp(struct t38_state *state, struct ast_sip_session *session, struct ast_sip_session_media *session_media,
        const struct pjmedia_sdp_media *stream)
@@ -935,7 +900,6 @@ static int unload_module(void)
 {
        ast_sip_session_unregister_sdp_handler(&image_sdp_handler, "image");
        ast_sip_session_unregister_supplement(&t38_supplement);
-       ast_sip_session_unregister_supplement(&t38_bye_supplement);
 
        return 0;
 }
@@ -962,11 +926,6 @@ static int load_module(void)
                goto end;
        }
 
-       if (ast_sip_session_register_supplement(&t38_bye_supplement)) {
-               ast_log(LOG_ERROR, "Unable to register T.38 BYE session supplement\n");
-               goto end;
-       }
-
        if (ast_sip_session_register_sdp_handler(&image_sdp_handler, "image")) {
                ast_log(LOG_ERROR, "Unable to register SDP handler for image stream type\n");
                goto end;