Andreas Fink a écrit :
On 05.08.2008, at 12:57, Vincent CHAVANIS wrote:
} else if (emimsg->ot == 31) {
+ PRIVDATA(conn)->last_activity_time = time
(NULL); /* XXX Process error codes here
if (octstr_get_char(emimsg->fields[0], 0) == 'N') {
long errorcode;
not sure why this is needed. Would sound like it would have never
worked otherwise...
This is absolutly needed!
Take this exemple
00:00:00 you sent a UCP31
00:00:30 you received an ack of your UCP31
(the SMSC is overloaded in this case)
Then if your keepalive is set to 31 you will send just after 1 sec an
other UCP31. And will result to block the sender thread (can_write = 0)
This should never happen if you have window properly set. And while we
have traffic, last activity is counting up so keepalive will not be sent
out anyway as the activity keeps the link alive. Keepalive is ONLY sent
if there is NO activity. But counting keepalive as activity itself
doesnt sound wrong neither.
I got the issue.
2008-08-05 15:06:29.984 [22065] [6] DEBUG: EMI2[33030]: emi2 sending
packet: <04/00027/O/31/33030/0539/F4>
2008-08-05 15:06:40.393 [22065] [6] DEBUG: EMI2[33030]: Got packet from
the main socket
2008-08-05 15:06:40.393 [22065] [6] DEBUG: EMI2[33030]: emi2 parsing
packet: <04/00019/R/31/A//6F>
2008-08-05 15:06:40.393 [22065] [6] DEBUG: EMI2[33030]: emi2 sending
packet: <05/00027/O/31/33030/0539/F5>
2008-08-05 15:06:40.533 [22065] [6] DEBUG: EMI2[33030]: Got packet from
the main socket
2008-08-05 15:06:40.533 [22065] [6] DEBUG: EMI2[33030]: emi2 parsing
packet: <05/00019/R/31/A//70>
-> 10.409sec to ack my UCP31
If my keepalive is less or equal than 10sec, i will be on the explained
case. While the SMSC will ack > 10sec we will not able to do anything.
We must find a workaround for this.
But i agree, this link has low traffic.
Vincent.
--
Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
Service Technique/Reseau - NOC
Direction du Developpement xMS+
http://www.telemaque.fr/
[EMAIL PROTECTED]
Tel : +33 4 92 90 99 84 (fax 9142)