switch_event_t *evt = NULL;
generic_nack_t *gennack = NULL;
char data[2048] = {0}; /* local buffer for unpacked PDU */
+ int err = 0;
/* Read from socket */
/* TODO: Add/Expand support for partial reads */
}
if ( smpp34_unpack2((void *)data, local_buffer, read_len + 4) ) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "smpp: error decoding the receive buffer:%d:%s\n", smpp34_errno, smpp34_strerror);
- switch_goto_status(SWITCH_STATUS_GENERR, done);
+ err++;
}
if ( mod_smpp_globals.debug || gateway->debug ) {
gennack = (generic_nack_t *) data;
*command_id = gennack->command_id;
+
+ if (err && *command_id != SUBMIT_SM_RESP) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "smpp: error decoding the receive buffer:%d:%s\n", smpp34_errno, smpp34_strerror);
+ switch_goto_status(SWITCH_STATUS_GENERR, done);
+ }
+
switch(*command_id) {
case BIND_TRANSCEIVER_RESP:
if ( gennack->command_status != ESME_ROK ) {
case ENQUIRE_LINK:
case ENQUIRE_LINK_RESP:
case SUBMIT_SM_RESP:
+ switch (gennack->command_status) {
+ case ESME_ROK:
+ //AOK
+ break;
+ case ESME_RINVSRCADR:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Source Addr ID: %u\n", *command_id);
+ break;
+ case ESME_RINVDSTADR:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Dest Addr ID: %u\n", *command_id);
+ break;
+ default:
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Undocumented Error 0X%.8x ID: %u\n", gennack->command_status, *command_id);
+ break;
+ }
+
break;
default:
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unrecognized Command ID: %u\n", *command_id);