mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
[CLEANUP] add a few checks for functions return values
Markus Elfring suggested adding a few checks which were missing after a bunch of getsockopt() and 2 strdup(). While those are unlikely to fail where they are used, it makes the code cleaner.
This commit is contained in:
parent
2a429503e0
commit
c642348ce4
@ -176,9 +176,7 @@ int event_srv_chk_r(int fd)
|
|||||||
socklen_t lskerr = sizeof(skerr);
|
socklen_t lskerr = sizeof(skerr);
|
||||||
|
|
||||||
result = len = -1;
|
result = len = -1;
|
||||||
|
if (!getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr) && !skerr) {
|
||||||
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
|
||||||
if (!skerr) {
|
|
||||||
#ifndef MSG_NOSIGNAL
|
#ifndef MSG_NOSIGNAL
|
||||||
len = recv(fd, reply, sizeof(reply), 0);
|
len = recv(fd, reply, sizeof(reply), 0);
|
||||||
#else
|
#else
|
||||||
|
@ -96,6 +96,8 @@ struct sockaddr_in *str2sa(char *str)
|
|||||||
|
|
||||||
memset(&sa, 0, sizeof(sa));
|
memset(&sa, 0, sizeof(sa));
|
||||||
str = strdup(str);
|
str = strdup(str);
|
||||||
|
if (str == NULL)
|
||||||
|
goto out_nofree;
|
||||||
|
|
||||||
if ((c = strrchr(str,':')) != NULL) {
|
if ((c = strrchr(str,':')) != NULL) {
|
||||||
*c++ = '\0';
|
*c++ = '\0';
|
||||||
@ -120,6 +122,7 @@ struct sockaddr_in *str2sa(char *str)
|
|||||||
sa.sin_family = AF_INET;
|
sa.sin_family = AF_INET;
|
||||||
|
|
||||||
free(str);
|
free(str);
|
||||||
|
out_nofree:
|
||||||
return &sa;
|
return &sa;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,6 +140,8 @@ int str2net(char *str, struct in_addr *addr, struct in_addr *mask)
|
|||||||
memset(mask, 0, sizeof(*mask));
|
memset(mask, 0, sizeof(*mask));
|
||||||
memset(addr, 0, sizeof(*addr));
|
memset(addr, 0, sizeof(*addr));
|
||||||
str = strdup(str);
|
str = strdup(str);
|
||||||
|
if (str == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if ((c = strrchr(str, '/')) != NULL) {
|
if ((c = strrchr(str, '/')) != NULL) {
|
||||||
*c++ = '\0';
|
*c++ = '\0';
|
||||||
|
@ -86,8 +86,8 @@ int stream_sock_read(int fd) {
|
|||||||
int skerr;
|
int skerr;
|
||||||
socklen_t lskerr = sizeof(skerr);
|
socklen_t lskerr = sizeof(skerr);
|
||||||
|
|
||||||
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
||||||
if (skerr)
|
if (ret == -1 || skerr)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
else
|
else
|
||||||
ret = recv(fd, b->r, max, 0);
|
ret = recv(fd, b->r, max, 0);
|
||||||
@ -171,8 +171,8 @@ int stream_sock_write(int fd) {
|
|||||||
if (fdtab[fd].state == FD_STCONN) {
|
if (fdtab[fd].state == FD_STCONN) {
|
||||||
int skerr;
|
int skerr;
|
||||||
socklen_t lskerr = sizeof(skerr);
|
socklen_t lskerr = sizeof(skerr);
|
||||||
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
||||||
if (skerr) {
|
if (ret == -1 || skerr) {
|
||||||
b->flags |= BF_WRITE_ERROR;
|
b->flags |= BF_WRITE_ERROR;
|
||||||
fdtab[fd].state = FD_STERROR;
|
fdtab[fd].state = FD_STERROR;
|
||||||
task_wakeup(&rq, fdtab[fd].owner);
|
task_wakeup(&rq, fdtab[fd].owner);
|
||||||
@ -195,8 +195,8 @@ int stream_sock_write(int fd) {
|
|||||||
int skerr;
|
int skerr;
|
||||||
socklen_t lskerr = sizeof(skerr);
|
socklen_t lskerr = sizeof(skerr);
|
||||||
|
|
||||||
getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
ret = getsockopt(fd, SOL_SOCKET, SO_ERROR, &skerr, &lskerr);
|
||||||
if (skerr)
|
if (ret == -1 || skerr)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
else
|
else
|
||||||
ret = send(fd, b->w, max, MSG_DONTWAIT);
|
ret = send(fd, b->w, max, MSG_DONTWAIT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user