mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
libsoccr: ignore data in a sent queue, if a connect is closed
If a connection was reseted, it can have some data in a sent queue, a use can't read this data, so we can ignore them too. https://jira.sw.ru/browse/PSBM-67026 Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
parent
865f099d70
commit
c821f24d5b
1 changed files with 12 additions and 0 deletions
|
|
@ -209,6 +209,18 @@ static int refresh_sk(struct libsoccr_sk *sk,
|
|||
|
||||
data->unsq_len = size;
|
||||
|
||||
if (data->state == TCP_CLOSE) {
|
||||
/* A connection could be reseted. In thise case a sent queue
|
||||
* may contain some data. A user can't read this data, so let's
|
||||
* ignore them. Otherwise we will need to add a logic whether
|
||||
* the send queue contains a fin packet or not and decide whether
|
||||
* a fin or reset packet has to be sent to restore a state
|
||||
*/
|
||||
|
||||
data->unsq_len = 0;
|
||||
data->outq_len = 0;
|
||||
}
|
||||
|
||||
/* Don't account the fin packet. It doesn't countain real data. */
|
||||
if ((1 << data->state) & (SNDQ_FIRST_FIN | SNDQ_SECOND_FIN)) {
|
||||
if (data->outq_len)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue