case T38_FIELD_HDLC_FCS_OK_SIG_END: if (len > 0) { span_log(&s->logging, SPAN_LOG_WARNING, "There is data in a T38_FIELD_HDLC_FCS_OK_SIG_END!\n"); /* The sender has incorrectly included data in this message. It is unclear what we should do with it, to maximise tolerance of buggy implementations. */ } /* Don't deal with repeats of the same field type. Some T.38 implementations send multiple T38_FIELD_HDLC_FCS_OK_SIG_END packets, when they have sent no data for the body of the frame. */ span_log(&s->logging, SPAN_LOG_WARNING, "PKT %d %d %d %d - %d %d\n", t->current_rx_data_type, data_type, t->current_rx_field_type, field_type, s->rx_len, s->missing_data); if (t->current_rx_data_type != data_type || t->current_rx_field_type != field_type) { span_log(&s->logging, SPAN_LOG_FLOW, "Type %s - CRC OK, sig end (%s)\n", (s->rx_len >= 3) ? t30_frametype(s->rx_buf[2]) : "???", (s->missing_data) ? "missing octets" : "clean"); t30_hdlc_accept(&(s->t30_state), !s->missing_data, s->rx_buf, s->rx_len); t30_hdlc_accept(&(s->t30_state), TRUE, NULL, PUTBIT_CARRIER_DOWN); } s->rx_len = 0; s->missing_data = FALSE; s->timeout_rx_samples = 0; break;