| isEncrypted | boolean | tr_peer_stat
| isIncoming | boolean | tr_peer_stat
| isUploadingTo | boolean | tr_peer_stat
+ | isUTP | boolean | tr_peer_stat
| peerIsChoked | boolean | tr_peer_stat
| peerIsInterested | boolean | tr_peer_stat
| port | number | tr_peer_stat
------+---------+-----------+----------------+-------------------------------
12 | 2.20 | yes | session-get | new arg "download-dir-free-space"
| | yes | session-close | new method
+ ------+---------+-----------+----------------+-------------------------------
+ 13 | 2.30 | yes | session-get | new arg "isUTP" to the "peers" list
stat->port = ntohs( peer->atom->port );
stat->from = atom->fromFirst;
stat->progress = peer->progress;
+ stat->isUTP = peer->io->utp_socket != NULL;
stat->isEncrypted = tr_peerIoIsEncrypted( peer->io ) ? 1 : 0;
stat->rateToPeer_KBps = toSpeedKBps( tr_peerGetPieceSpeed_Bps( peer, now_msec, TR_CLIENT_TO_PEER ) );
stat->rateToClient_KBps = toSpeedKBps( tr_peerGetPieceSpeed_Bps( peer, now_msec, TR_PEER_TO_CLIENT ) );
stat->pendingReqsToClient = peer->pendingReqsToClient;
pch = stat->flagStr;
- if( peer->io->utp_socket != NULL) *pch++ = 'T';
+ if( stat->isUTP ) *pch++ = 'T';
if( t->optimistic == peer ) *pch++ = 'O';
if( stat->isDownloadingFrom ) *pch++ = 'D';
else if( stat->clientIsInterested ) *pch++ = 'd';
#include "version.h"
#include "web.h"
-#define RPC_VERSION 11
+#define RPC_VERSION 13
#define RPC_VERSION_MIN 1
#define RECENTLY_ACTIVE_SECONDS 60
tr_bencDictAddBool( d, "isEncrypted", peer->isEncrypted );
tr_bencDictAddBool( d, "isIncoming", peer->isIncoming );
tr_bencDictAddBool( d, "isUploadingTo", peer->isUploadingTo );
+ tr_bencDictAddBool( d, "isUTP", peer->isUTP );
tr_bencDictAddBool( d, "peerIsChoked", peer->peerIsChoked );
tr_bencDictAddBool( d, "peerIsInterested", peer->peerIsInterested );
tr_bencDictAddInt ( d, "port", peer->port );
typedef struct tr_peer_stat
{
+ tr_bool isUTP;
+
tr_bool isEncrypted;
tr_bool isDownloadingFrom;
tr_bool isUploadingTo;