41 |
|
|
42 |
nack_sent = 0; |
nack_sent = 0; |
43 |
if(header->type == TYPE_DATA) |
if(header->type == TYPE_DATA) |
44 |
srv.lastseq = header->seq; |
{ |
45 |
|
srv.lastseq = header->seq; |
46 |
|
if(p3_diff_seq(srv.lastseq,cli.lastack)>=8) |
47 |
|
p3_put_packet(TYPE_ACK,NULL,0); |
48 |
|
} |
49 |
if(srv.lastack != header->ack) |
if(srv.lastack != header->ack) |
50 |
{ |
{ |
51 |
srv.lastack = header->ack; |
srv.lastack = header->ack; |
76 |
p3_send_nack(header) |
p3_send_nack(header) |
77 |
struct p3hdr *header; |
struct p3hdr *header; |
78 |
{ |
{ |
79 |
if(header->seq > srv.lastseq) |
if(header->type == TYPE_PING) |
80 |
{ |
{ |
81 |
nack_sent++; |
p3_put_packet(TYPE_ACK,NULL,0); |
82 |
if(nack_sent > 8) nack_sent=0; |
p3_put_packet(TYPE_NACK,NULL,0); |
83 |
if(!nack_sent) |
nack_sent=1; |
84 |
{ |
} |
85 |
p3_put_packet(TYPE_NACK,NULL,0); |
if(!nack_sent) |
86 |
} |
{ |
87 |
|
p3_put_packet(TYPE_NACK,NULL,0); |
88 |
|
nack_sent=1; |
89 |
} |
} |
90 |
} |
} |