Skip to content

Commit

Permalink
Revert "Replace gethostbyname with getaddrinfo (indilib#1462)"
Browse files Browse the repository at this point in the history
This reverts commit 8f220b6.
  • Loading branch information
knro committed Jun 30, 2021
1 parent 63346a7 commit 9045b59
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 86 deletions.
33 changes: 13 additions & 20 deletions indiserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -683,38 +683,31 @@ static void startRemoteDvr(DvrInfo *dp)
*/
static int openINDIServer(char host[], int indi_port)
{
struct addrinfo *result, *ptr;
struct addrinfo hints = {};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
struct sockaddr_in serv_addr;
struct hostent *hp;
int sockfd;

/* lookup host address */
int len = snprintf(NULL, 0, "%d", indi_port);
char *indi_port_str = malloc(len + 1 );
snprintf(indi_port_str, len + 1, "%d", indi_port);
int ret = getaddrinfo(host, indi_port_str, &hints, &result);
if (ret != 0) {
fprintf(stderr, "getaddrinfo(%s): %s\n", host, gai_strerror(ret));
hp = gethostbyname(host);
if (!hp)
{
fprintf(stderr, "gethostbyname(%s): %s\n", host, strerror(errno));
Bye();
}
free(indi_port_str);

for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
if (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6) {
break;
}
}

/* create a socket to the INDI server */
int sockfd;
if ((sockfd = socket(ptr->ai_family, SOCK_STREAM, 0)) < 0)
(void)memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr_list[0]))->s_addr;
serv_addr.sin_port = htons(indi_port);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "socket(%s,%d): %s\n", host, indi_port, strerror(errno));
Bye();
}

/* connect */
if (connect(sockfd, ptr->ai_addr, ptr->ai_addrlen) < 0)
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
fprintf(stderr, "connect(%s,%d): %s\n", host, indi_port, strerror(errno));
Bye();
Expand Down
37 changes: 15 additions & 22 deletions tools/evalINDI.c
Original file line number Diff line number Diff line change
Expand Up @@ -278,40 +278,33 @@ static void compileINDI(char *expr)
*/
static FILE *openINDIServer()
{
struct addrinfo *result, *ptr;
struct addrinfo hints = {};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
struct sockaddr_in serv_addr;
struct hostent *hp;
int sockfd;

/* lookup host address */
int len = snprintf(NULL, 0, "%d", port);
char *indi_port_str = malloc(len + 1 );
snprintf(indi_port_str, len + 1, "%d", port);
int ret = getaddrinfo(host, indi_port_str, &hints, &result);
if (ret != 0) {
fprintf(stderr, "getaddrinfo(%s): %s\n", host, gai_strerror(ret));
hp = gethostbyname(host);
if (!hp)
{
perror("gethostbyname");
exit(2);
}
free(indi_port_str);

for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
if (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6) {
break;
}
}

/* create a socket to the INDI server */
int sockfd;
if ((sockfd = socket(ptr->ai_family, SOCK_STREAM, 0)) < 0)
(void)memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr_list[0]))->s_addr;
serv_addr.sin_port = htons(port);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "socket(%s,%d): %s\n", host, port, strerror(errno));
perror("socket");
exit(2);
}

/* connect */
if (connect(sockfd, ptr->ai_addr, ptr->ai_addrlen) < 0)
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
fprintf(stderr, "connect(%s,%d): %s\n", host, port, strerror(errno));
perror("connect");
exit(2);
}

Expand Down
37 changes: 15 additions & 22 deletions tools/getINDIproperty.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,40 +280,33 @@ static void addSearchDef(char *dev, char *prop, char *ele)
*/
static void openINDIServer(void)
{
struct addrinfo *result, *ptr;
struct addrinfo hints = {};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
struct sockaddr_in serv_addr;
struct hostent *hp;
int sockfd;

/* lookup host address */
int len = snprintf(NULL, 0, "%d", port);
char *indi_port_str = malloc(len + 1 );
snprintf(indi_port_str, len + 1, "%d", port);
int ret = getaddrinfo(host, indi_port_str, &hints, &result);
if (ret != 0) {
fprintf(stderr, "getaddrinfo(%s): %s\n", host, gai_strerror(ret));
hp = gethostbyname(host);
if (!hp)
{
herror("gethostbyname");
exit(2);
}
free(indi_port_str);

for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
if (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6) {
break;
}
}

/* create a socket to the INDI server */
int sockfd;
if ((sockfd = socket(ptr->ai_family, SOCK_STREAM, 0)) < 0)
(void)memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr_list[0]))->s_addr;
serv_addr.sin_port = htons(port);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "socket(%s,%d): %s\n", host, port, strerror(errno));
perror("socket");
exit(2);
}

/* connect */
if (connect(sockfd, ptr->ai_addr, ptr->ai_addrlen) < 0)
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
fprintf(stderr, "connect(%s,%d): %s\n", host, port, strerror(errno));
perror("connect");
exit(2);
}

Expand Down
37 changes: 15 additions & 22 deletions tools/setINDIproperty.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,40 +318,33 @@ static int crackSpec(int *acp, char **avp[])
*/
static void openINDIServer(FILE **rfpp, FILE **wfpp)
{
struct addrinfo *result, *ptr;
struct addrinfo hints = {};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
struct sockaddr_in serv_addr;
struct hostent *hp;
int sockfd;

/* lookup host address */
int len = snprintf(NULL, 0, "%d", port);
char *indi_port_str = malloc(len + 1 );
snprintf(indi_port_str, len + 1, "%d", port);
int ret = getaddrinfo(host, indi_port_str, &hints, &result);
if (ret != 0) {
fprintf(stderr, "getaddrinfo(%s): %s\n", host, gai_strerror(ret));
hp = gethostbyname(host);
if (!hp)
{
perror("gethostbyname");
exit(2);
}
free(indi_port_str);

for (ptr = result; ptr != NULL; ptr = ptr->ai_next) {
if (ptr->ai_family == AF_INET || ptr->ai_family == AF_INET6) {
break;
}
}

/* create a socket to the INDI server */
int sockfd;
if ((sockfd = socket(ptr->ai_family, SOCK_STREAM, 0)) < 0)
(void)memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr_list[0]))->s_addr;
serv_addr.sin_port = htons(port);
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
fprintf(stderr, "socket(%s,%d): %s\n", host, port, strerror(errno));
perror("socket");
exit(2);
}

/* connect */
if (connect(sockfd, ptr->ai_addr, ptr->ai_addrlen) < 0)
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
fprintf(stderr, "connect(%s,%d): %s\n", host, port, strerror(errno));
perror("connect");
exit(2);
}

Expand Down

0 comments on commit 9045b59

Please sign in to comment.