diff --git a/daemon/remote.c b/daemon/remote.c index eff0e6ec6..70076e583 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -272,6 +272,7 @@ static const char * details_keys[] = { }; static const char * list_keys[] = { + "errorString", "eta", "id", "leftUntilDone", @@ -749,23 +750,29 @@ getStatusString( tr_benc * t, char * buf, size_t buflen ) case TR_STATUS_DOWNLOAD: case TR_STATUS_SEED: { - int64_t fromUs = 0; - int64_t toUs = 0; - tr_bencDictFindInt( t, "peersGettingFromUs", &fromUs ); - tr_bencDictFindInt( t, "peersSendingToUs", &toUs ); - if( fromUs && toUs ) - tr_strlcpy( buf, "Up & Down", buflen ); - else if( toUs ) - tr_strlcpy( buf, "Downloading", buflen ); - else if( fromUs ) { - int64_t leftUntilDone = 0; - tr_bencDictFindInt( t, "leftUntilDone", &leftUntilDone ); - if( leftUntilDone > 0 ) - tr_strlcpy( buf, "Uploading", buflen ); - else - tr_strlcpy( buf, "Seeding", buflen ); - } else - tr_strlcpy( buf, "Idle", buflen ); + const char * err = NULL; + if( tr_bencDictFindStr( t, "errorString", &err ) ) + tr_strlcpy( buf, err, buflen ); + else { + int64_t fromUs = 0; + int64_t toUs = 0; + tr_bencDictFindInt( t, "peersGettingFromUs", &fromUs ); + tr_bencDictFindInt( t, "peersSendingToUs", &toUs ); + if( !fromUs && !toUs ) + tr_strlcpy( buf, "Idle", buflen ); + else if( fromUs && toUs ) + tr_strlcpy( buf, "Up & Down", buflen ); + else if( toUs ) + tr_strlcpy( buf, "Downloading", buflen ); + else if( fromUs ) { + int64_t leftUntilDone = 0; + tr_bencDictFindInt( t, "leftUntilDone", &leftUntilDone ); + if( leftUntilDone > 0 ) + tr_strlcpy( buf, "Uploading", buflen ); + else + tr_strlcpy( buf, "Seeding", buflen ); + } + } break; } }