summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-26 17:35:12 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-26 17:35:12 +0000
commit0a8310af38022a5794c6ec8f0b5a6e745debfdea (patch)
treeb0bb645f30393f00562e3b1f8f876a76f017125a
parent167799dd240e946ca94f3cc01ded1b90f69be0fd (diff)
issue 129, issue 130
-rw-r--r--src/bencode.c20
-rw-r--r--src/torrent.c8
-rw-r--r--src/trg-torrent-model.c9
3 files changed, 21 insertions, 16 deletions
diff --git a/src/bencode.c b/src/bencode.c
index 3eacebb..c9c9b6a 100644
--- a/src/bencode.c
+++ b/src/bencode.c
@@ -180,12 +180,6 @@ be_node *be_decode(const char *data)
return be_decoden(data, strlen(data));
}
-static inline void _be_free_str(char *str)
-{
- if (str)
- g_free(str - sizeof(gint64));
-}
-
int be_validate_node(be_node * node, int type)
{
if (!node || node->type != type)
@@ -194,6 +188,12 @@ int be_validate_node(be_node * node, int type)
return 0;
}
+static inline void _be_free_str(char *str)
+{
+ if (str)
+ g_free(str - sizeof(gint64));
+}
+
void be_free(be_node * node)
{
switch (node->type) {
@@ -206,9 +206,11 @@ void be_free(be_node * node)
case BE_LIST:{
unsigned int i;
- for (i = 0; node->val.l[i]; ++i)
- be_free(node->val.l[i]);
- g_free(node->val.l);
+ if (node->val.l) {
+ for (i = 0; node->val.l[i]; ++i)
+ be_free(node->val.l[i]);
+ g_free(node->val.l);
+ }
break;
}
diff --git a/src/torrent.c b/src/torrent.c
index 784668f..426a2ce 100644
--- a/src/torrent.c
+++ b/src/torrent.c
@@ -204,12 +204,15 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow
break;
case TR_STATUS_DOWNLOAD:
flags |= TORRENT_FLAG_DOWNLOADING;
+ flags |= TORRENT_FLAG_ACTIVE;
break;
case TR_STATUS_SEED_WAIT:
flags |= TORRENT_FLAG_SEEDING_WAIT;
break;
case TR_STATUS_SEED:
flags |= TORRENT_FLAG_SEEDING;
+ if (torrent_get_peers_getting_from_us(t))
+ flags |= TORRENT_FLAG_ACTIVE;
break;
}
} else {
@@ -231,6 +234,8 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow
flags |= TORRENT_FLAG_CHECKING;
break;
}
+ if (downRate > 0 || upRate > 0)
+ flags |= TORRENT_FLAG_ACTIVE;
}
if (torrent_get_is_finished(t) == TRUE)
@@ -238,9 +243,6 @@ guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, gint64 dow
else
flags |= TORRENT_FLAG_INCOMPLETE;
- if (downRate > 0 || upRate > 0)
- flags |= TORRENT_FLAG_ACTIVE;
-
if (strlen(torrent_get_errorstr(t)) > 0)
flags |= TORRENT_FLAG_ERROR;
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index 90d9d6f..8959027 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -264,10 +264,6 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
statusIcon = torrent_get_status_icon(rpcv, newFlags);
pf = torrent_get_peersfrom(t);
trackerStats = torrent_get_tracker_stats(t);
- if (json_array_get_length(trackerStats) > 0) {
- JsonObject *firstTracker = json_array_get_object_element(trackerStats, 0);
- firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker));
- }
gtk_tree_model_get(GTK_TREE_MODEL(model), iter,
TORRENT_COLUMN_FLAGS, &lastFlags,
@@ -275,6 +271,11 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
json_object_ref(t);
+ if (json_array_get_length(trackerStats) > 0) {
+ JsonObject *firstTracker = json_array_get_object_element(trackerStats, 0);
+ firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker));
+ }
+
#ifdef DEBUG
gtk_list_store_set(ls, iter, TORRENT_COLUMN_ICON, statusIcon, -1);
gtk_list_store_set(ls, iter,