Skip to content

Commit 49ddcb5

Browse files
committed
iproxy: Make sure to print correct socket error messages
Also, make sure to return positive values from main()
1 parent 6ddeccc commit 49ddcb5

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

tools/iproxy.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,17 @@ static void *acceptor_thread(void *arg)
158158
}
159159
fprintf(stdout, "Requesting connection to NETWORK device %s (serial: %s), port %d\n", addrtxt, dev->udid, cdata->device_port);
160160
cdata->sfd = socket_connect_addr(saddr, cdata->device_port);
161+
if (cdata->sfd < 0) {
162+
cdata->sfd = -errno;
163+
}
161164
} else if (dev->conn_type == CONNECTION_TYPE_USB) {
162165
fprintf(stdout, "Requesting connection to USB device handle %d (serial: %s), port %d\n", dev->handle, dev->udid, cdata->device_port);
163166

164167
cdata->sfd = usbmuxd_connect(dev->handle, cdata->device_port);
165168
}
166169
free(dev_list);
167170
if (cdata->sfd < 0) {
168-
fprintf(stderr, "Error connecting to device: %s\n", strerror(errno));
171+
fprintf(stderr, "Error connecting to device: %s\n", strerror(-cdata->sfd));
169172
} else {
170173
fd_set fds;
171174
FD_ZERO(&fds);
@@ -334,15 +337,15 @@ int main(int argc, char **argv)
334337
fprintf(stderr, "Invalid listen port specified in argument '%s'!\n", argv[0]);
335338
free(device_udid);
336339
free(source_addr);
337-
return -EINVAL;
340+
return EINVAL;
338341
}
339342
endp = NULL;
340343
device_port[0] = (uint16_t)strtol(argv[1], &endp, 10);
341344
if (!device_port[0] || *endp != '\0') {
342345
fprintf(stderr, "Invalid device port specified in argument '%s'!\n", argv[1]);
343346
free(device_udid);
344347
free(source_addr);
345-
return -EINVAL;
348+
return EINVAL;
346349
}
347350
num_pairs = 1;
348351
} else {
@@ -354,22 +357,22 @@ int main(int argc, char **argv)
354357
fprintf(stderr, "Invalid listen port specified in argument '%s'!\n", argv[i]);
355358
free(device_udid);
356359
free(source_addr);
357-
return -EINVAL;
360+
return EINVAL;
358361
}
359362
device_port[i] = (uint16_t)strtol(endp+1, &endp, 10);
360363
if (!device_port[i] || (*endp != '\0')) {
361364
fprintf(stderr, "Invalid device port specified in argument '%s'!\n", argv[i+1]);
362365
free(device_udid);
363366
free(source_addr);
364-
return -EINVAL;
367+
return EINVAL;
365368
}
366369
}
367370
num_pairs = argc;
368371
}
369372

370373
if (num_pairs > 16) {
371374
fprintf(stderr, "ERROR: Too many LOCAL:DEVICE port pairs. Maximum is 16.\n");
372-
return -1;
375+
return 1;
373376
}
374377

375378
#ifndef _WIN32
@@ -389,7 +392,7 @@ int main(int argc, char **argv)
389392
for (j = num_listen; j >= 0; j--) {
390393
socket_close(listen_sock[j].fd);
391394
}
392-
return -errno;
395+
return 1;
393396
}
394397
listen_sock[num_listen].index = i;
395398
num_listen++;
@@ -403,7 +406,7 @@ int main(int argc, char **argv)
403406
for (j = num_listen; j >= 0; j--) {
404407
socket_close(listen_sock[j].fd);
405408
}
406-
return -errno;
409+
return 1;
407410
}
408411
listen_sock[num_listen].index = i;
409412
num_listen++;
@@ -448,7 +451,7 @@ int main(int argc, char **argv)
448451
socket_close(c_sock);
449452
fprintf(stderr, "ERROR: Out of memory\n");
450453
free(device_udid);
451-
return -1;
454+
return 1;
452455
}
453456
cdata->fd = c_sock;
454457
cdata->sfd = -1;

0 commit comments

Comments
 (0)