FS-9343 #resolve [Sending a Message using the mod_smpp module via Nexmo Fails]

This commit is contained in:
Anthony Minessale 2016-07-12 15:47:08 -05:00
parent 328146c2fd
commit 0b3f776d7d
1 changed files with 23 additions and 2 deletions

View File

@ -201,6 +201,7 @@ switch_status_t mod_smpp_gateway_connection_read(mod_smpp_gateway_t *gateway, sw
switch_event_t *evt = NULL; switch_event_t *evt = NULL;
generic_nack_t *gennack = NULL; generic_nack_t *gennack = NULL;
char data[2048] = {0}; /* local buffer for unpacked PDU */ char data[2048] = {0}; /* local buffer for unpacked PDU */
int err = 0;
/* Read from socket */ /* Read from socket */
/* TODO: Add/Expand support for partial reads */ /* TODO: Add/Expand support for partial reads */
@ -227,8 +228,7 @@ switch_status_t mod_smpp_gateway_connection_read(mod_smpp_gateway_t *gateway, sw
} }
if ( smpp34_unpack2((void *)data, local_buffer, read_len + 4) ) { 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); err++;
switch_goto_status(SWITCH_STATUS_GENERR, done);
} }
if ( mod_smpp_globals.debug || gateway->debug ) { if ( mod_smpp_globals.debug || gateway->debug ) {
@ -237,6 +237,12 @@ switch_status_t mod_smpp_gateway_connection_read(mod_smpp_gateway_t *gateway, sw
gennack = (generic_nack_t *) data; gennack = (generic_nack_t *) data;
*command_id = gennack->command_id; *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) { switch(*command_id) {
case BIND_TRANSCEIVER_RESP: case BIND_TRANSCEIVER_RESP:
if ( gennack->command_status != ESME_ROK ) { if ( gennack->command_status != ESME_ROK ) {
@ -256,6 +262,21 @@ switch_status_t mod_smpp_gateway_connection_read(mod_smpp_gateway_t *gateway, sw
case ENQUIRE_LINK: case ENQUIRE_LINK:
case ENQUIRE_LINK_RESP: case ENQUIRE_LINK_RESP:
case SUBMIT_SM_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; break;
default: default:
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unrecognized Command ID: %u\n", *command_id); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unrecognized Command ID: %u\n", *command_id);