]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_fax_spandsp: Properly handle cleanup before starting FAXes.
authorMark Michelson <mmichelson@digium.com>
Thu, 18 Sep 2014 16:20:51 +0000 (16:20 +0000)
committerMark Michelson <mmichelson@digium.com>
Thu, 18 Sep 2014 16:20:51 +0000 (16:20 +0000)
If faxing fails at a very early stage, then it is possible for
us to pass a NULL t30 state pointer to spandsp, which spandsp
is none too pleased with.

This patch ensures that we pass the correct pointer to spandsp
in the situation where we have not yet set our local t30 state
pointer.

ASTERISK-24301 #close
Reported by Matt Jordan
Patches:
ASTERISK-24301-fax.diff Uploaded by Mark Michelson (License #5049)
........

Merged revisions 423360 from http://svn.asterisk.org/svn/asterisk/branches/11

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@423365 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_fax_spandsp.c

index 015e6970404bdf9ef863e4adcf1d6c1d3f622959..c73d17f894a57dd4c6903d5ecf393753d7f62a09 100644 (file)
@@ -176,8 +176,25 @@ static void set_ecm(t30_state_t *t30_state, struct ast_fax_session_details *deta
 static void session_destroy(struct spandsp_pvt *p)
 {
        struct ast_frame *f;
+       t30_state_t *t30_to_terminate;
 
-       t30_terminate(p->t30_state);
+       if (p->t30_state) {
+               t30_to_terminate = p->t30_state;
+       } else if (p->ist38) {
+#if SPANDSP_RELEASE_DATE >= 20080725
+               t30_to_terminate = &p->t38_state.t30;
+#else
+               t30_to_terminate = &p->t38_state.t30_state;
+#endif
+       } else {
+#if SPANDSP_RELEASE_DATE >= 20080725
+               t30_to_terminate = &p->fax_state.t30;
+#else
+               t30_to_terminate = &p->fax_state.t30_state;
+#endif
+       }
+
+       t30_terminate(t30_to_terminate);
        p->isdone = 1;
 
        ast_timer_close(p->timer);