Fix AF_INET6 / AF_UNSPEC mixup.
This commit is contained in:
parent
0b74b5e054
commit
f57b204029
1 changed files with 18 additions and 18 deletions
16
netcalc.c
16
netcalc.c
|
@ -23,12 +23,12 @@ void cleanup(int signum)
|
|||
}
|
||||
}
|
||||
|
||||
int prepaddr(char *host, char *port, struct addrinfo **ainfo, int flags)
|
||||
int prepaddr(char *host, char *port, struct addrinfo **ainfo, int afamily, int flags)
|
||||
{
|
||||
fprintf(stderr, "debug: %s %s\n", host, port);
|
||||
struct addrinfo hints; // hints to what we want
|
||||
memset(&hints, 0, sizeof hints);
|
||||
hints.ai_family = AF_INET6; // AF_INET or AF_INET6 to force version
|
||||
hints.ai_family = afamily; // AF_INET or AF_INET6 to force version
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_flags = flags;
|
||||
|
||||
|
@ -283,10 +283,10 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
char* host = NULL;
|
||||
char* port = "5000";
|
||||
int afamiliy = AF_UNSPEC;
|
||||
int flags = 0;
|
||||
|
||||
if (argc > 1) {
|
||||
if (strcmp(argv[1], "-c") == 0) {
|
||||
if (argc > 1 && strcmp(argv[1], "-c") == 0) {
|
||||
printf("debug: argv[1] = %s running in client mode\n", argv[1]);
|
||||
CLIENT = 1; // client mode
|
||||
if (argc > 3) {
|
||||
|
@ -296,15 +296,15 @@ int main(int argc, char *argv[])
|
|||
} else {
|
||||
printf("debug: argv[1] = %s running in server mode\n", argv[1]);
|
||||
CLIENT = 0;
|
||||
if (argc > 2) {
|
||||
port = argv[1];
|
||||
afamiliy = AF_INET6;
|
||||
flags |= AI_PASSIVE;
|
||||
}
|
||||
if (argc > 1) {
|
||||
port = argv[1];
|
||||
}
|
||||
}
|
||||
|
||||
struct addrinfo *ainfo;
|
||||
if (prepaddr(host, port, &ainfo, flags) != 0) {
|
||||
if (prepaddr(host, port, &ainfo, afamiliy, flags) != 0) {
|
||||
fprintf(stderr, "prepaddr: failed to obtain adress.\n");
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue