core: log payload if sequences do not match

We need to inspect the received payload if any error is raised related
to the X-Sequence header. Not just when a malformed X-Sequence header is
detected.

Fixes: d2c19ef13d ("core: add X-Sequence header support")
master
Jose M. Guisado 2023-07-03 09:17:53 +02:00
parent d2c19ef13d
commit 3de8c25e4e
1 changed files with 5 additions and 3 deletions

View File

@ -180,13 +180,15 @@ static int og_agent_state_recv_hdr_rest(struct og_client *cli)
ptr = strstr(cli->buf, "X-Sequence: ");
if (ptr) {
if (sscanf(ptr, "X-Sequence: %i[^\r\n]", &seq) != 1) {
syslog(LOG_ERR, "Invalid sequence value from client %s. Payload:\n%s",
syslog(LOG_ERR, "Invalid sequence value from client %s.\n"
"Payload:\n%s",
inet_ntoa(cli->addr.sin_addr), cli->buf);
return -1;
}
if (cli->seq != 0 && cli->seq != seq) {
syslog(LOG_ERR, "Unexpected sequence %u from client %s, expecting %u.",
seq, inet_ntoa(cli->addr.sin_addr), cli->seq);
syslog(LOG_ERR, "Unexpected sequence %u from client %s, expecting %u.\n"
"Payload:\n%s",
seq, inet_ntoa(cli->addr.sin_addr), cli->seq, cli->buf);
return -1;
}
}