diff --git a/libtransmission/peer.c b/libtransmission/peer.c index db6bc95d1..15d79d45b 100644 --- a/libtransmission/peer.c +++ b/libtransmission/peer.c @@ -305,6 +305,16 @@ uint8_t * tr_peerId( tr_peer_t * peer ) return & peer->id[0]; } +/*********************************************************************** + * tr_peerAddress + *********************************************************************** + * + **********************************************************************/ +struct in_addr * tr_peerAddress( tr_peer_t * peer ) +{ + return &peer->addr; +} + /*********************************************************************** * tr_peerHash *********************************************************************** diff --git a/libtransmission/peer.h b/libtransmission/peer.h index 262b68ce9..297a9f242 100644 --- a/libtransmission/peer.h +++ b/libtransmission/peer.h @@ -52,5 +52,6 @@ void tr_peerSetOptimistic ( tr_peer_t *, int ); int tr_peerIsOptimistic ( tr_peer_t * ); void tr_peerBlame ( tr_torrent_t *, tr_peer_t *, int piece, int success ); +struct in_addr * tr_peerAddress ( tr_peer_t * ); #endif diff --git a/libtransmission/transmission.c b/libtransmission/transmission.c index d714c6945..f8f99c256 100644 --- a/libtransmission/transmission.c +++ b/libtransmission/transmission.c @@ -494,11 +494,18 @@ tr_peer_stat_t * tr_torrentPeers( tr_torrent_t * tor, int * peerCount ) if (peers != NULL) { tr_peer_t * peer; + struct in_addr * addr; int i = 0; for( i = 0; i < tor->peerCount; i++ ) { peer = tor->peers[i]; + addr = tr_peerAddress( peer ); + if( NULL != addr ) + { + inet_ntop( AF_INET, addr, peers[i].addr, + sizeof( peers[i].addr ) ); + } peers[i].client = tr_clientForId(tr_peerId(peer)); peers[i].isDownloading = tr_peerIsDownloading(peer); peers[i].isUploading = tr_peerIsUploading(peer); diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index fba34a986..d78fcebc0 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -44,6 +44,10 @@ extern "C" { # define MAX_PATH_LENGTH 1024 #endif +#ifndef INET_ADDRSTRLEN +#define INET_ADDRSTRLEN 16 +#endif + #define TR_DEFAULT_PORT 9090 #define TR_NOERROR 0 @@ -321,6 +325,7 @@ struct tr_stat_s struct tr_peer_stat_s { + char addr[INET_ADDRSTRLEN]; char * client; int isDownloading;