Charles Kerr
0ab37e45d5
(rpc)
...
1. fix #968 : 'transmission-remote -r' deletes all
2. fix error in escaping control characters when serializing tr_benc to JSON
3. fix small memory leak in rpc command parsing
2008-05-24 18:22:16 +00:00
Charles Kerr
d18fb68fbc
sine we now have two public ports (peer and rpc), rename "publicPort" as "peerPort"
2008-05-23 16:18:58 +00:00
Charles Kerr
9fdb8afdf0
(rpc) remove TR_RPC_TORRENT_CLOSING. formalize "torrent-list"'s response in the rpc spec.
2008-05-22 19:24:11 +00:00
Charles Kerr
c7b9c8c043
( #954 ) rpc: add "torrent-remove" method. rename tr_torrentDelete() as tr_torrentRemove() for consistency with various parts of the code.
2008-05-20 23:58:59 +00:00
Charles Kerr
7d3e3d6dd6
fix up the man pages a bit
2008-05-20 18:21:36 +00:00
Charles Kerr
7beacb3032
(1) RPC "add-torrent" now lets clients embed base64-encoded metainfo directly into the request
...
(2) remove the RISON code; it didn't make the final cut
(3) add base64 encode/decode utilities and unit tests
2008-05-20 17:33:54 +00:00
Charles Kerr
9815e48daf
tweak the daemon & remote console messages a little
2008-05-20 14:01:15 +00:00
Charles Kerr
8ea0437bcf
sync man page with the transmission-remote rewrite
2008-05-19 18:53:11 +00:00
Charles Kerr
d7f0e0fa1e
* better RPC handling of requests submitted via http POST
...
* plug a pair of minor memory leaks reported by valgrind.
2008-05-19 18:16:58 +00:00
Charles Kerr
52db6baa7a
minor tweaks.
2008-05-19 16:16:38 +00:00
Charles Kerr
f9f8e18865
updated daemon manpage
2008-05-19 15:50:30 +00:00
Charles Kerr
5693ba9c71
fix compile error reported by BentMyWookie
2008-05-19 00:21:16 +00:00
Charles Kerr
dde9cb49f2
fix the cyclical header dependency, and fix a couple of warnings sniffed out by gcc 4.3
2008-05-19 00:12:31 +00:00
Charles Kerr
2c79888a93
RPC/IPC redesign
2008-05-18 16:44:30 +00:00
Charles Kerr
be9427931a
ipc: add session accessor/mutators.
...
transmission.h: make the session API more consistent.
2008-05-12 16:33:17 +00:00
Charles Kerr
2ee27d4979
fix daemon breakage
2008-05-12 15:17:25 +00:00
Charles Kerr
4b5e9a4274
#923 : daemon should use tr_initFull()
2008-05-08 19:34:12 +00:00
Charles Kerr
e839456a86
use sendpkmsg()
2008-05-07 11:57:23 +00:00
Charles Kerr
967a253f93
silence r5755 compile warning
2008-05-06 19:02:05 +00:00
Charles Kerr
d998a6ba1d
#912 : Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup#912: Resume file parsed twice on startup
2008-05-06 16:21:40 +00:00
Charles Kerr
3eaac2e16b
(gtk,daemon,cli) we don't need to statically link in all of libevnt, just libevent_core.
2008-05-01 14:05:17 +00:00
Charles Kerr
ad817bae7f
use basename() to parse argv0
2008-04-29 03:36:14 +00:00
Charles Kerr
ed798be5ac
don't use strlcat.
2008-04-28 18:09:17 +00:00
Charles Kerr
7ef2511ca8
#377 : preliminary https support. this commit probably breaks mac and cli and is not for the faint of heart.
2008-04-24 01:42:53 +00:00
Charles Kerr
1ae1607025
gtk/cli/daemon/remote/proxy: add command-line argument --config-dir / -g to override the default config dir
2008-04-19 00:41:32 +00:00
Charles Kerr
c88aa6135d
benc cleanup
2008-04-18 16:23:59 +00:00
Charles Kerr
131d55d2a6
benc API cleanup
2008-04-17 20:57:58 +00:00
Charles Kerr
5619eae447
#853 : transmission-(daemon|gtk) segfault when querying status
2008-04-10 19:02:24 +00:00
Charles Kerr
b71a2985b3
#684 : Use XDG basedir spec for configuration and cache files in $HOME
2008-04-05 20:12:11 +00:00
Charles Kerr
f0f8cfae50
finish documentation for the "encryption" message and add an option for "plaintext preferred" to transmission-remote
2008-04-05 16:32:09 +00:00
Charles Kerr
3905005d88
#828 : transmission-daemon: verify local data fails
2008-04-05 15:56:24 +00:00
Charles Kerr
0080f1abe8
ipc/daemon cleanup
2008-04-04 17:19:44 +00:00
Charles Kerr
e61af54481
#837 : portability patch submitted by naddy
2008-04-04 01:21:36 +00:00
Charles Kerr
fd0e71c00a
hack on IPC a bit because it's been too long since I broke it
2008-04-03 21:38:32 +00:00
Charles Kerr
a331582ec0
string folding
2008-03-30 13:52:55 +00:00
Charles Kerr
e037324a7a
add "bsdtree.h" to the NOINST_HEADERS list.
2008-03-19 20:57:59 +00:00
Charles Kerr
549aa1679a
add -v --verify to transmission-remote's getopt handling
2008-03-18 17:59:52 +00:00
Charles Kerr
777c0de53a
more i18n strings work
2008-03-06 21:59:00 +00:00
Charles Kerr
d870c12f40
add win32/posix wrapper function tr_lockfile() to libT and use it in daemon/gtk.
2008-02-28 19:06:23 +00:00
Charles Kerr
f8a98a8c35
eliminate duplicate code between readfile() and tr_loadFile(). shrink down the daemon torrent code a bit.
2008-02-27 20:06:53 +00:00
Charles Kerr
9ee96fd0dc
add `verify' command to ipc.
2008-02-27 17:38:39 +00:00
Charles Kerr
5d233f86c4
make struct ipc_info opaque. const-ify the ipcparse functions where possible.
2008-02-27 16:47:58 +00:00
Charles Kerr
b17c229aaa
#739 : fix transmission-remote manpage
2008-02-27 16:03:41 +00:00
Charles Kerr
494acbfa85
tear out about 1/3 of ipcparse's overhead.
2008-02-27 06:01:46 +00:00
Charles Kerr
8cc587a66f
more housekeeping: benc_val_t --> tr_benc
2008-02-26 21:58:58 +00:00
Charles Kerr
bd7a98d7df
fix daemon PEX enable/disable bug reported by Bicster
2008-02-08 16:51:34 +00:00
Charles Kerr
1ed9e15ee0
#670 "transmission-remote -x (core dumped)" patch by joshe
2008-02-03 07:03:40 +00:00
Charles Kerr
df9bd1f713
#667 : remote crash exploit in bencode parser
2008-01-31 02:24:43 +00:00
Charles Kerr
76ef3aaf7b
#636 : make the daemon application manpages' descriptions more helpful.
2008-01-20 15:14:33 +00:00
Charles Kerr
b9c491d5c1
update some more URLS to www.transmissionbt.com
2008-01-20 14:53:38 +00:00
Charles Kerr
b9bd002030
595: transmission-remote command-line parsing error reported by aroberts
2008-01-07 19:31:18 +00:00
Mitchell Livingston
4723192946
replace other instances of the old url
2007-12-31 01:19:35 +00:00
Charles Kerr
401cfbdb6b
replace the per-torrent PEX setting with a global one, as per discussion with SoftwareElves and BentMyWookie
2007-12-24 05:03:40 +00:00
Mitchell Livingston
63e7a8597e
get ipc fully working with ipc
2007-12-24 03:48:42 +00:00
Charles Kerr
7542573044
brush away the last remnants of tr_torrentInit()
2007-12-22 03:51:12 +00:00
Charles Kerr
73ee11f233
Use libnatpmp for port mapping. rewrite the upnp/natpmp manager.
...
NOTE: this will break the xpjets build until SoftwareElves or a volunteer patches the xcode project file to make a libnatpmp library just like was done for libminiupnp.
2007-12-08 19:34:15 +00:00
Charles Kerr
60aab6c433
remove libtransmission code that duplicates functionality in libevent
2007-11-06 21:14:30 +00:00
Charles Kerr
9df263326d
use Thomas Bernard's miniupnp library instead of rolling our own.
2007-11-06 16:02:50 +00:00
Charles Kerr
e0965c3a63
better openssl detection & support: use openssl's pkg-config file.
2007-10-28 19:55:03 +00:00
Josh Elsasser
13bd23e44b
Add IPC messages to set and retrieve the encryption mode.
...
Implement encryption mode messages in -daemon and -remote.
2007-10-26 03:43:27 +00:00
Josh Elsasser
cc2dcb4d15
Don't trip assertion when the daemon gets a fatal signal after a quit message is sent.
2007-10-26 03:39:44 +00:00
Josh Elsasser
a3b0698150
Whoops. Start the exit timer on the right libevent instance.
...
This should fix some problems with the daemon exiting.
2007-10-26 03:36:02 +00:00
Charles Kerr
9fa2fa2c8f
ensure that "make install" installs the man pages.
2007-10-24 22:53:44 +00:00
Charles Kerr
c50cadbcaa
remove dead code (TR_STATUS_ACTIVE, TR_STATUS_INACTIVE)
2007-10-20 22:07:21 +00:00
Charles Kerr
e698756c98
remove unused flags
2007-10-15 20:58:39 +00:00
Charles Kerr
bb84cb9f09
janitorial work for the freeze: (1) finish replacing "transmission-gtk" with "transmission". (2) add Charles to authors lists in man pages. (3) standardize the summary as "A fast and easy BitTorrent client" in the rpm spec, gtk about dialog, and man pages. (4) fold together similar translation strings in the gtk client. (5) use g_strerror instead of strerror in the gtk client.
2007-10-13 17:33:53 +00:00
Charles Kerr
e3352ac714
add bsdqueue.h to daemon dir
2007-09-25 23:59:50 +00:00
Charles Kerr
fb70a9cca0
remove the backwards compatability typedefs at BentMyWookie's suggestion. update libT, gtk, daemon, and cli accordingly...
2007-09-20 20:14:13 +00:00
Josh Elsasser
511470bfa4
Catch up with an old libT API change and allow autostart to be disabled again.
2007-09-05 04:05:30 +00:00
Josh Elsasser
8d01190690
Document the ipc value for the waiting to check state and implement in remote.
2007-08-23 06:04:21 +00:00
Josh Elsasser
aafd6488af
Shut down ipc server on fatal signal, not just torrent client.
2007-08-17 03:57:26 +00:00
Josh Elsasser
571e53b7ca
Properly protect pidfile creation and deletion with the lockfile.
2007-08-16 21:17:02 +00:00
Charles Kerr
44a61eced1
Add $(LIBEVENT_CPPFLAGS) to daemon's Makefile.am
2007-08-16 16:03:01 +00:00
Josh Elsasser
5fc5e06422
Unbreak daemon.
2007-08-16 00:10:56 +00:00
Josh Elsasser
7f5777a9f7
Fix -p option to be optional. Someone pass the dunce cap over this way.
2007-08-16 00:02:43 +00:00
Charles Kerr
db7a354958
more work on getting our autoconf setup to play nice with libevent
2007-08-15 02:48:32 +00:00
Josh Elsasser
f69012d0e7
Add a pidfile command-line argument.
2007-08-14 04:02:50 +00:00
Charles Kerr
ae6e82a1a5
fix manpage errors reported by Lacrocivious
2007-07-31 16:19:31 +00:00
Charles Kerr
44282a7be8
fix r2417 bug that caused transmission-daemon to not daemonize
2007-07-27 02:25:28 +00:00
Charles Kerr
bbac082af5
finish splitting the rate control from one state into two states as requested by BMW
2007-07-20 08:33:59 +00:00
Josh Elsasser
ceb66c2de7
Add compat code for if daemon() function isn't available.
2007-07-19 01:27:52 +00:00
Josh Elsasser
32e3f9a8e6
Conditionally define a couple of macros that may be missing.
...
Remove a few stray ; that can cause problems.
2007-07-19 01:27:11 +00:00
Josh Elsasser
4ab0a93807
Apparently "sun" is a bad choice for a variable name on solaris.
2007-07-19 01:25:36 +00:00
Josh Elsasser
65dba27217
bzero -> memset
2007-07-19 00:57:26 +00:00
Charles Kerr
bd3ce76fa5
part one of moving the build environment over to automake/autoconf. beware!
2007-07-18 23:04:26 +00:00
Josh Elsasser
80beee3d81
Display torrent error correctly.
2007-07-17 21:11:51 +00:00
Josh Elsasser
7befa196a1
Iterate correctly when removing all torrents.
2007-07-16 17:22:57 +00:00
Charles Kerr
321b01d430
make tr_torrentStat() const.
...
malloc, rather than calloc, the buffer in strndup.
2007-07-15 19:12:54 +00:00
Josh Elsasser
357f7444b0
Don't segfault if an 'all' hash argument is combined with specific hashes.
2007-07-14 18:57:50 +00:00
Charles Kerr
5455df4373
update versioning scheme as per consensus between TMT, John_Clay, Gimp_, and charles_
2007-07-10 19:40:21 +00:00
Charles Kerr
6c6732ed39
make tr_torrentInfo() a const function
2007-06-30 13:36:58 +00:00
Josh Elsasser
a09a9c9157
Add client/server name to IPC version handshake.
2007-06-29 02:21:29 +00:00
Josh Elsasser
f106cce58f
Whoops, fix signal handling for SIGQUIT and SIGTERM.
2007-06-29 01:06:46 +00:00
Charles Kerr
47a5ff4120
add tr_torrentCanAdd() as per BentMyWookie's request... clear tracker error string when restarting... fix r2202 "completed" announce bug.
2007-06-27 05:14:38 +00:00
Charles Kerr
af92ca6211
sync with r2002's torrent destruction sequence
2007-06-26 20:46:12 +00:00
Charles Kerr
40ee651158
push the destination directory into tr_torrentInit*()
2007-06-26 20:29:13 +00:00
Mitchell Livingston
0256f4616d
Merge file selection and torrent creation into the main branch.
...
The new code for these features is under a new license.
2007-06-18 03:40:41 +00:00
Josh Elsasser
33ade6978b
Fix daemon to unlink the socket on exit with -s
2007-06-17 15:47:09 +00:00
Josh Elsasser
0eaedc2fe3
Return bad-format message when appropriate.
...
Fix supported message to be more accurate.
2007-06-10 22:56:18 +00:00
Mitchell Livingston
b679945ea6
add the beginnings of ipc to the mac front end
2007-05-28 02:27:13 +00:00
Josh Elsasser
6d9472edc8
Massage types a bit to silence some warnings and add a couple missing headers.
2007-05-27 16:31:16 +00:00
Josh Elsasser
85bc8ebc87
Handle the server failing to send info or stat response gracefully.
2007-05-25 21:22:02 +00:00
Josh Elsasser
f3a544d49e
Fix build error.
2007-05-24 09:18:19 +00:00
Josh Elsasser
8fbb4eab67
Move a macro.
2007-05-24 07:11:59 +00:00
Josh Elsasser
e60a686ce6
Move this file.
2007-05-24 06:06:47 +00:00
Josh Elsasser
28a4d4544e
Rename ipc to ipcparse
2007-05-24 04:05:50 +00:00
Josh Elsasser
0f9748ad01
Add command-line option to use an alternate location for the socket file.
2007-05-24 03:59:53 +00:00
Josh Elsasser
8d61b3e49e
Move ipc parsing code into libt.
2007-05-24 03:44:40 +00:00
Josh Elsasser
81a6d96d6e
Remove tr_handle_t argument from tr_torrentClose().
2007-05-23 04:45:20 +00:00
Josh Elsasser
5fe9d0fcea
Check error codes correctly in instead of reporting all errors as 'assert'.
...
Add TR_ERROR_IO_SPACE and TR_ERROR_IO_RESOURCES.
2007-05-09 18:41:22 +00:00
Josh Elsasser
209eb5651a
Ignore SIGPIPE.
...
errnomsg -> errmsg.
2007-05-09 06:58:46 +00:00
Josh Elsasser
cbf6b91669
Allow a socket path to be given with -t.
2007-05-09 06:56:51 +00:00
Josh Elsasser
3ef81c7977
Add debug mode to daemon.
2007-04-26 07:03:36 +00:00
Josh Elsasser
6f1c25a22e
Don't use uninitialized variables.
2007-04-18 16:41:37 +00:00
Josh Elsasser
132e4f5c8c
Merge daemon branch to trunk.
2007-04-18 16:39:10 +00:00