Teoretical Question

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Teoretical Question

Rodrigo Montiel
Hi masters,

Just a concept, probably a stupid question :(
Working in gnokii 0.6.31.

Below is just an example of my scenario:

+--------------+-------+-------+---------+-----------+
| number       | phone | error | dreport | processed |
+--------------+-------+-------+---------+-----------+
| number-here  |     3 |     4 |       0 |         1 |
| number-here   |     3 |     11 |       0 |         1 |


I have an option in my gnokii file (sms_retry) that as far as I know impacts the error type 11 ( GN_ERR_TIMEOUT).
So when error type 11 appears, I believe the message is being retried due to the timeout issue, prior to set processed column to true.

I would like to know what happens when error type 4? ( GN_ERR_INTERNALERROR - Problem occurred internal to model specific code).
Is processed column set to true automatically?
Can we setup a sms_retry value on gnokii config file to keep retrying for any kind of error type received by gn_sms_send() function?


Thanks guys, sorry if this question is so basic.

_______________________________________________
gnokii-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/gnokii-users
Reply | Threaded
Open this post in threaded view
|

Re: Teoretical Question

Jan Derfinak
On Fri, 20 Nov 2015, Rodrigo Montiel wrote:

Hello Rodrigo.

> Below is just an example of my scenario:
>
> +--------------+-------+-------+---------+-----------+
> | number       | phone | error | dreport | processed |
> +--------------+-------+-------+---------+-----------+
> | number-here  |     3 |     4 |       0 |         1 |
> | number-here   |     3 |     11 |       0 |         1 |
>
>
> I have an option in my gnokii file (sms_retry) that as far as I know impacts
> the error type 11 ( GN_ERR_TIMEOUT).
> So when error type 11 appears, I believe the message is being retried due to
> the timeout issue, prior to set processed column to true.
There are 2 levels of controlling timeout. Sm_retry is lowlevel option which
is not pertinent directly to SMS sending. It is connected to all
communication with the phone, to any frame which is send to phone.

My understandig is that GN_ERR_TIMEOUT is pertinent to entire command which
was send to phone. So, it is the result of high level command.

Sm_retry instructs libgnokii to repeat a frame, but GN_ERR_TIMEOUT gives
posibillity for an application to react on such kind of error.
 
>
> I would like to know what happens when error type 4? ( GN_ERR_INTERNALERROR
> - Problem occurred internal to model specific code).
> Is processed column set to true automatically?
> Can we setup a sms_retry value on gnokii config file to keep retrying for
> any kind of error type received by gn_sms_send() function?

Smsd processes error handling in this case in DB module code. For example in
pq.c (postgres), following code is used:

numError = 0;
do
{
  if ((error = WriteSMS (&sms)) == GN_ERR_NONE)
    break;
  sleep (1);
}
while ((error == GN_ERR_TIMEOUT || error == GN_ERR_FAILED) && numError++ < 3);

g_string_printf (buf, "UPDATE %s.outbox SET processed='t', error='%d', \
                 processed_date='now' WHERE id='%s'",
                 schema, error, PQgetvalue (res1, i, 0));

You can see, that if WriteSMS() returned GN_ERR_TIMEOUT or GN_ERR_FAILED,
smsd tries to repeat sending, but not more than 3 times. This value is
hardcoded there.
After smsd leaves the "while" loop, record in table is always updated,
'processed' is always set to True and error is set according to actual
result. Setting 'processed' to True doesn't mean that sms was send. It means
that smsd processed this record with the result in 'error' column. And
also, that this record will be excluded from next loops. If you change
'processed' back to False, smsd will pick up this record in next try and
will try to resend sms.

Jan
 

--
_______________________________________________
gnokii-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/gnokii-users
Reply | Threaded
Open this post in threaded view
|

Re: Teoretical Question

Rodrigo Montiel
Thank you sir!

El 11/20/15 a las 4:44 PM, Jan Derfinak escribió:
On Fri, 20 Nov 2015, Rodrigo Montiel wrote:

Hello Rodrigo.

Below is just an example of my scenario:

+--------------+-------+-------+---------+-----------+
| number       | phone | error | dreport | processed |
+--------------+-------+-------+---------+-----------+
| number-here  |     3 |     4 |       0 |         1 |
| number-here   |     3 |     11 |       0 |         1 |


I have an option in my gnokii file (sms_retry) that as far as I know impacts
the error type 11 ( GN_ERR_TIMEOUT).
So when error type 11 appears, I believe the message is being retried due to
the timeout issue, prior to set processed column to true.
There are 2 levels of controlling timeout. Sm_retry is lowlevel option which
is not pertinent directly to SMS sending. It is connected to all
communication with the phone, to any frame which is send to phone.

My understandig is that GN_ERR_TIMEOUT is pertinent to entire command which
was send to phone. So, it is the result of high level command.

Sm_retry instructs libgnokii to repeat a frame, but GN_ERR_TIMEOUT gives
posibillity for an application to react on such kind of error.
 
I would like to know what happens when error type 4? ( GN_ERR_INTERNALERROR
- Problem occurred internal to model specific code).
Is processed column set to true automatically?
Can we setup a sms_retry value on gnokii config file to keep retrying for
any kind of error type received by gn_sms_send() function?
Smsd processes error handling in this case in DB module code. For example in
pq.c (postgres), following code is used:

numError = 0;
do
{
  if ((error = WriteSMS (&sms)) == GN_ERR_NONE)
    break;
  sleep (1);
}
while ((error == GN_ERR_TIMEOUT || error == GN_ERR_FAILED) && numError++ < 3);

g_string_printf (buf, "UPDATE %s.outbox SET processed='t', error='%d', \
                 processed_date='now' WHERE id='%s'",
                 schema, error, PQgetvalue (res1, i, 0));

You can see, that if WriteSMS() returned GN_ERR_TIMEOUT or GN_ERR_FAILED,
smsd tries to repeat sending, but not more than 3 times. This value is
hardcoded there.
After smsd leaves the "while" loop, record in table is always updated,
'processed' is always set to True and error is set according to actual
result. Setting 'processed' to True doesn't mean that sms was send. It means
that smsd processed this record with the result in 'error' column. And
also, that this record will be excluded from next loops. If you change
'processed' back to False, smsd will pick up this record in next try and
will try to resend sms.

Jan
 

-- 


_______________________________________________
gnokii-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/gnokii-users

-- Rod

_______________________________________________
gnokii-users mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/gnokii-users