summaryrefslogtreecommitdiff
path: root/ldpd/packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldpd/packet.c')
-rw-r--r--ldpd/packet.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/ldpd/packet.c b/ldpd/packet.c
index be5ed8072b..b085cac055 100644
--- a/ldpd/packet.c
+++ b/ldpd/packet.c
@@ -686,8 +686,8 @@ struct tcp_conn *
tcp_new(int fd, struct nbr *nbr)
{
struct tcp_conn *tcp;
- struct sockaddr_storage src;
- socklen_t len = sizeof(src);
+ struct sockaddr_storage ss;
+ socklen_t len = sizeof(ss);
if ((tcp = calloc(1, sizeof(*tcp))) == NULL)
fatal(__func__);
@@ -703,10 +703,14 @@ tcp_new(int fd, struct nbr *nbr)
tcp->nbr = nbr;
}
- getsockname(fd, (struct sockaddr *)&src, &len);
- sa2addr((struct sockaddr *)&src, NULL, NULL, &tcp->lport);
- getpeername(fd, (struct sockaddr *)&src, &len);
- sa2addr((struct sockaddr *)&src, NULL, NULL, &tcp->rport);
+ if (getsockname(fd, (struct sockaddr *)&ss, &len) != 0)
+ log_warn("%s: getsockname", __func__);
+ else
+ sa2addr((struct sockaddr *)&ss, NULL, NULL, &tcp->lport);
+ if (getpeername(fd, (struct sockaddr *)&ss, &len) != 0)
+ log_warn("%s: getpeername", __func__);
+ else
+ sa2addr((struct sockaddr *)&ss, NULL, NULL, &tcp->rport);
return (tcp);
}