>
> waiting for that. Is it coming in the near future?! Should be done
> very simple I guess.
>

Here is a patch for the infinite loop problem I reported in the SMPP
driver for review. I also added in a reconnect-attempts configuration
variable for control. This is mandated by a number of operators for
SMSC connections.

Fixing this threw up another bug; the SMPP driver attempts to
send PDUS (enquire-links, submit-sm) even if a bind response has
not been received. The bind response handler sets the conn to
SMSCCONN_ACTIVE so I think that PDUs should only be sent when
the conn status is SMSCCONN_ACTIVE.

61a62
> #define SMPP_RECONNECT_ATTEMPTS           5
107a109
>       long reconnect_attempts;
126c128
<                          int smpp_msg_id_type, int autodetect_addr)
---
>                          int smpp_msg_id_type, int autodetect_addr, int
reconnect_attempts)
154a157
>       smpp->reconnect_attempts = reconnect_attempts;
997a1001
>       long failures = 0;
1005a1010,1016
>               if (failures >= smpp->reconnect_attempts) {
>             error(0, "SMPP[%s]: Exceeded number of connection retry
attempts (%ld), quitting",
>                   octstr_get_cstr(smpp->conn->id),
smpp->reconnect_attempts);
>                       smpp->conn->status = SMSCCONN_DEAD;
>                       break;
>               }
>
1016c1027,1028
<             smpp->conn->status = SMSCCONN_RECONNECTING;
---
>             smpp->conn->status = SMSCCONN_RECONNECTING;
>                       failures++;
1042c1054
<             send_enquire_link(smpp, conn, &last_enquire_sent);
---
>                       send_enquire_link(smpp, conn, &last_enquire_sent);
1051c1063
<                 send_enquire_link(smpp, conn, &last_enquire_sent);
---
>                               send_enquire_link(smpp, conn, &last_enquire_sent);
1063,1064c1075,1079
<                 error(0, "SMPP[%s]: I/O error or other error.
Re-connecting.",
<                       octstr_get_cstr(smpp->conn->id));
---
>                 error(0, "SMPP[%s]: I/O error or other error.
Re-connecting in %ld seconds.",
>                       octstr_get_cstr(smpp->conn->id),
smpp->reconnect_delay);
>                       gwthread_sleep(smpp->reconnect_delay);
>                               smpp->conn->status = SMSCCONN_RECONNECTING;
>                               failures++;
1066a1082,1083
>                       else
>                               failures = 0;
1170a1188
>       long reconnect_attempts;
1219c1237,1240
<
---
>      if (cfg_get_integer(&reconnect_attempts, grp,
>                         octstr_imm("reconnect-attempts")) == -1)
>         reconnect_attempts = SMPP_RECONNECT_ATTEMPTS;
>
1286c1307
<                        autodetect_addr);
---
>                        autodetect_addr, reconnect_attempts);


Reply via email to