]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_t38.c: Back out part of an earlier fix attempt. 08/2308/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:43 +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 2bb6f03da6f44353378f221fe6e98ceb0c1efe8a..c02517104b12a60caf141d322d54f83eec94d95e 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;