Le Mon, May 03, 2021 at 03:01:13PM +0200, Claudio Jeker a écrit :
> The RTR connect code calls addr2sa() as an argument to connect() but also
> uses the len argument in both calls. It seems in some cases this is
> optimised the wrong way. I think it is better to write this code using two
> steps like it is done in other places.
> 
> OK?

OK denis@

> -- 
> :wq Claudio
> 
> Index: bgpd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/bgpd/bgpd.c,v
> retrieving revision 1.234
> diff -u -p -r1.234 bgpd.c
> --- bgpd.c    16 Feb 2021 08:29:16 -0000      1.234
> +++ bgpd.c    2 May 2021 14:57:58 -0000
> @@ -1261,6 +1261,7 @@ imsg_send_sockets(struct imsgbuf *se, st
>  void
>  bgpd_rtr_connect(struct rtr_config *r)
>  {
> +     struct sockaddr *sa;
>       socklen_t len;
>       int fd;
>  
> @@ -1270,8 +1271,8 @@ bgpd_rtr_connect(struct rtr_config *r)
>               log_warn("rtr %s", r->descr);
>               return;
>       }
> -     if (r->local_addr.aid != AID_UNSPEC) {
> -             if (bind(fd,  addr2sa(&r->local_addr, 0, &len), len) == -1) {
> +     if ((sa = addr2sa(&r->local_addr, 0, &len)) != NULL) {
> +             if (bind(fd, sa, len) == -1) {
>                       log_warn("rtr %s: bind to %s", r->descr,
>                           log_addr(&r->local_addr));
>                       close(fd);
> @@ -1279,8 +1280,8 @@ bgpd_rtr_connect(struct rtr_config *r)
>               }
>       }
>  
> -     if (connect(fd, addr2sa(&r->remote_addr, r->remote_port, &len), len) ==
> -         -1) {
> +     sa = addr2sa(&r->remote_addr, r->remote_port, &len);
> +     if (connect(fd, sa, len) == -1) {
>               log_warn("rtr %s: connect to %s:%u", r->descr,
>                   log_addr(&r->remote_addr), r->remote_port);
>               close(fd);
> 

Reply via email to