Commit graph

138 commits

Author SHA1 Message Date
Justin Li
203e4e6020 Fix query parsing when blank values are present 2015-06-18 10:34:52 -04:00
Justin Li
242ba22f8c Add failing test that reproduces #63 2015-06-18 10:19:54 -04:00
Justin Li
de18172952 Update graceful import path 2015-04-28 20:32:19 -04:00
Justin Li
ae62188711 Disable graceful signal handling 2015-04-28 20:27:39 -04:00
Jimmy Zelinskie
222415f467 udp: Implement draft of BEP45; Endpoint type added
Because of the requirement of storing multiple ports, Announce.Port has
been abolished and Announce.IPv4/IPv6 have been replaced with the
Endpoint type. HTTP has been updated to support this model. UDP has been
updated to support the latest draft of BEP45 and most of the
optional-types described in BEP41.
2015-03-29 03:03:19 -04:00
Justin Li
da46ef8c8a tracker: Return announcing peer if there are no others to avoid an empty peers field 2015-02-28 00:56:45 -05:00
Jimmy Zelinskie
ac2fcade1e tracker: record announce/scrape stats in handlers
This deduplicates code tracking the stats code tracking announces and
scrapes for each protocol. The down side is that it isn't aware of any
failures writing responses, but it was already being called before the
write to a response for HTTP.
2015-02-26 09:03:52 -05:00
Justin Li
7512f50731 udp: Add basic UDP tests 2015-02-21 14:35:21 -05:00
Justin Li
669128c83a tracker: Pass listen address into tracker.Server.Serve() 2015-02-21 13:16:21 -05:00
Justin Li
afb22c3df6 udp: Add basic logging and more comments 2015-02-20 14:08:46 -05:00
Justin Li
92f3c62456 tracker: Add common interface to start and stop servers 2015-02-20 13:39:19 -05:00
Justin Li
e3aff35532 models: Use a uint16 for port numbers 2015-02-20 02:06:44 -05:00
Justin Li
d9a7611eee http: Unexport announce/scrape creation functions 2015-02-20 01:36:49 -05:00
Justin Li
778b64defa udp: Add UDP configuration, move tracker shutdown to the main package 2015-02-19 23:46:28 -05:00
Jimmy Zelinskie
14ead047ab http: improve clarity of /check 2015-02-08 18:05:30 -05:00
Jimmy Zelinskie
dfbf4a6fad http: ping backend on healthcheck
Fixes #37.
2015-02-08 17:15:27 -05:00
Jimmy Zelinskie
443fb4b70d http: add GET route for clients 2015-02-08 02:20:48 -05:00
Jimmy Zelinskie
c4c678e7a9 http: add enough comments to pass go lint
[ci skip]
2015-02-03 02:54:34 -05:00
Justin Li
87c68f1973 2015 2015-01-01 12:02:25 -05:00
Jimmy Zelinskie
ddd10d9732 Begin refactor to better encapsulate configuration
This also updates the example_config.json which did not previously work.
Config.Config is now composed of embedded structs of other configs that
can later be used to clearly have a separation of concerns.
2014-11-01 20:12:40 -04:00
Jimmy Zelinskie
d46beb0f7d Remove unkeyed composite literals.
This was done to keep in accordance with `go vet`.
2014-10-28 12:26:37 -04:00
Justin Li
b778b3ea40 go fmt [ci skip] 2014-09-25 15:12:25 -04:00
Cooper Lees
17a6fefc3b Go routine stat 2014-09-25 11:47:50 -07:00
Paul Saab
3f5b6b55b0 Limit number of concurrent connections
Go's net/http library has no limits in place for number of concurrent
requests currently being processed.  This can result in an enormous
number of goroutines being created and the read/write buffer pools
growing unbounded resulting in OOM situations.
2014-09-25 10:58:07 -07:00
Jimmy Zelinskie
b910fdabf5 Organize peers by subnet.
This commit restructures PeerMaps to be a map from Subnet to
PeerID to Peer. This reduces the complexity require to gather peers from
the same subnet.
2014-09-23 23:00:50 -04:00
Justin Li
976a983aa7 go fmt [ci skip] 2014-09-03 10:18:26 -04:00
Cooper Lees
67df033c7f Add configurable HTTP read and write timeouts 2014-09-02 22:24:15 -07:00
Jimmy Zelinskie
417d2a3b12 Disable HTTP KeepAlives 2014-08-26 18:03:44 -04:00
Jimmy Zelinskie
1d9b2bc322 First step towards removing Tracker Driver.
This feature isn't worth maintaining and if anyone needs to scale beyond
memory on a single box, we can evaluate it then.
2014-08-13 17:45:34 -04:00
Jimmy Zelinskie
e3420b4013 Silence net.OpErrors dealing with accept.
This code is borrowed from:
6e11439113/graceful.go (L52-L58)
2014-08-05 15:00:52 -04:00
Jimmy Zelinskie
fc18028796 Fix Purge reporting all peers as Seeders
PeerMaps now are constructed with a boolean value that tells the map
whether they are hosting seeders or leechers.
2014-08-05 06:57:48 -04:00
Jimmy Zelinskie
3cb286fb40 Introduce thread-safe PeerMap 2014-08-04 06:15:08 -04:00
Justin Li
d610b4ebb0 Address easy golint comments 2014-08-01 16:16:38 -04:00
Justin Li
b628b934ac Only keep one IP in the Peer type 2014-08-01 12:37:35 -04:00
Jimmy Zelinskie
ffb3c57181 move whitelist into cfg 2014-07-25 16:58:26 -04:00
Justin Li
cde8251bd3 Add logging for startup failure 2014-07-25 03:43:06 -04:00
Justin Li
3b84fb3f98 Better logging 2014-07-25 03:39:02 -04:00
Justin Li
818bef28d7 More refactoring of error handling 2014-07-25 03:05:43 -04:00
Justin Li
683e90631a Add pretty stats param and refactor error handling 2014-07-25 03:01:26 -04:00
Justin Li
ab43e6bd97 Add crazy struct flattening code 2014-07-24 20:28:07 -04:00
Jimmy Zelinskie
788b349dd7 ClientError base type struct -> string 2014-07-24 19:34:17 -04:00
Justin Li
b08195aeef Rename RequestsBlocked to ClientErrors and remove special cases from tracker code 2014-07-24 18:01:26 -04:00
Justin Li
02f67b4259 Create a ClientError type to distinguish between failure modes 2014-07-24 17:57:44 -04:00
Justin Li
1a79bdeb6b Add RequestsBlocked stat counter 2014-07-24 17:48:03 -04:00
Justin Li
2779560934 Fix typo 2014-07-24 17:10:43 -04:00
Justin Li
dfc31495b7 Fix splitting for IPv6 RemoteAddrs 2014-07-24 17:02:28 -04:00
Justin Li
7a64ae2d1b Create dummy stats object for tests 2014-07-23 17:30:38 -04:00
Justin Li
d5da5daa88 Read RealIP header from the request header map 2014-07-23 15:59:07 -04:00
Justin Li
98542c0ff1 Move tracker-specific logic out of http/query and into http 2014-07-23 15:56:15 -04:00
Justin Li
76c68a53b5 Add RealIPHeader configuration, and move network conf to its own struct 2014-07-23 14:00:17 -04:00