diff options
Diffstat (limited to 'src/socket.c')
-rw-r--r-- | src/socket.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/socket.c b/src/socket.c index ad6135f..1029a71 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1233,3 +1233,24 @@ LIBIMOBILEDEVICE_GLUE_API int socket_send(int fd, void *data, size_t length) #endif return send(fd, data, length, flags); } + +LIBIMOBILEDEVICE_GLUE_API int socket_get_socket_port(int fd, uint16_t *port) +{ +#ifdef WIN32 + int addr_len; +#else + socklen_t addr_len; +#endif + struct sockaddr_in addr; + + memset(&addr, 0, sizeof(addr)); + + addr_len = sizeof(addr); + if (0 > getsockname(fd, (struct sockaddr*)&addr, &addr_len)) { + perror("getsockname()"); + return -1; + } + + *port = ntohs(addr.sin_port); + return 0; +} |