summaryrefslogtreecommitdiffstats
path: root/src/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/socket.c')
-rw-r--r--src/socket.c21
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;
+}