Changelog since HylaFAX 4.3.3
+* Handle instances where ECM is negotiated but the sender
+ transmits non-ECM data and signalling (12 Mar 2007)
* Handle MPS/EOP/EOM/CRP when expecting DCS, i.e. after RTN
* Log correctly when a receiver DIS indicates no V.8 bit but
V.8 was already known to have succeeded (12 Mar 2007)
if (!getRecvEOLCount()) {
// We have a null page, don't save it because it makes readers fail.
pageGood = false;
- if (params.ec != EC_DISABLE) return (false);
+ if (params.ec != EC_DISABLE) {
+ if (emsg == "") {
+ /*
+ * We negotiated ECM, got no valid ECM image data, and the
+ * ECM page reception routines did not set an error message.
+ * The empty emsg is due to the ECM routines detecting a
+ * non-ECM-specific partial-page signal and wants it to
+ * be handled here. The sum total of all of this, and the
+ * fact that we got MPS/EOP/EOM tells us that the sender
+ * is not using ECM. In an effort to salvage the session we'll
+ * disable ECM now and try to continue.
+ */
+ params.ec = EC_DISABLE;
+ } else
+ return (false);
+ }
}
if (!pageGood && conf.badPageHandling == FaxModem::BADPAGE_RTN)
recvResetPage(tif);