From bf29a4e2e6f890da71ab6029e7cc0911539b9368 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Thu, 18 Feb 2016 18:27:02 -0600 Subject: res_pjsip_t38.c: Back out part of an earlier fix attempt. 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 | 41 ----------------------------------------- 1 file changed, 41 deletions(-) (limited to 'res') diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c index 2bb6f03da..c02517104 100644 --- a/res/res_pjsip_t38.c +++ b/res/res_pjsip_t38.c @@ -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; -- cgit v1.2.3