mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 07:21:59 +00:00
zebra: fix label manager EAGAIN error
when receiving an EAGAIN while trying to read the header of a ZAPI message, we were erroneously continuing as if everything was fine, which could crash zebra. Fix this by returning and letting the re-armed read task deal with this Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
This commit is contained in:
parent
ea63ff6bbd
commit
614a0f8613
@ -75,6 +75,10 @@ static int relay_response_back(void)
|
|||||||
unsigned short instance;
|
unsigned short instance;
|
||||||
struct zserv *zserv;
|
struct zserv *zserv;
|
||||||
|
|
||||||
|
/* sanity */
|
||||||
|
if (!zclient || zclient->sock < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* input buffer with msg from label manager */
|
/* input buffer with msg from label manager */
|
||||||
src = zclient->ibuf;
|
src = zclient->ibuf;
|
||||||
|
|
||||||
@ -83,10 +87,11 @@ static int relay_response_back(void)
|
|||||||
/* parse header */
|
/* parse header */
|
||||||
ret = zclient_read_header(src, zclient->sock, &size, &marker, &version,
|
ret = zclient_read_header(src, zclient->sock, &size, &marker, &version,
|
||||||
&vrf_id, &resp_cmd);
|
&vrf_id, &resp_cmd);
|
||||||
if (ret < 0 && errno != EAGAIN) {
|
if (ret < 0) {
|
||||||
flog_err(EC_ZEBRA_LM_RESPONSE,
|
if (errno != EAGAIN)
|
||||||
"Error reading Label Manager response: %s",
|
flog_err(EC_ZEBRA_LM_RESPONSE,
|
||||||
strerror(errno));
|
"Error reading Label Manager response: %s",
|
||||||
|
strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user