mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-11-02 23:19:28 +00:00
bgpd: uncork/nagle socket when sending BGP NOTIFY
This pushes out the NOTIFY message before closing a connection.
Previously, the TCP_CORK bandwidth optimization code caused NOTIFY
messages to disappear prior to when the connection is closed.
* bgpd/bgp_packet.c: unset CORK, set NODELAY, and replace
writen() by more correct write()
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
a6694fe8a8
commit
86998bc2bc
@ -723,13 +723,21 @@ bgp_write_notify (struct peer *peer)
|
||||
val = fcntl (peer->fd, F_GETFL, 0);
|
||||
fcntl (peer->fd, F_SETFL, val & ~O_NONBLOCK);
|
||||
|
||||
ret = writen (peer->fd, STREAM_DATA (s), stream_get_endp (s));
|
||||
/* Stop collecting data within the socket */
|
||||
sockopt_cork (peer->fd, 0);
|
||||
|
||||
ret = write (peer->fd, STREAM_DATA (s), stream_get_endp (s));
|
||||
if (ret <= 0)
|
||||
{
|
||||
BGP_EVENT_ADD (peer, TCP_fatal_error);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Disable Nagle, make NOTIFY packet go out right away */
|
||||
val = 1;
|
||||
(void) setsockopt (peer->fd, IPPROTO_TCP, TCP_NODELAY,
|
||||
(char *) &val, sizeof (val));
|
||||
|
||||
/* Retrieve BGP packet type. */
|
||||
stream_set_getp (s, BGP_MARKER_SIZE + 2);
|
||||
type = stream_getc (s);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user