Commit graph

119 commits

Author SHA1 Message Date
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
Justin Li 8369bbbcd8 Allow configuring if a peer may have 2 IPs 2014-07-23 13:36:31 -04:00
Justin Li b227fc1fcd Support dual-stacked peers 2014-07-23 13:15:04 -04:00
Justin Li 14843b9e89 Add AllowIPSpoofing configuration 2014-07-23 13:08:57 -04:00
Justin Li 4295ad739c Reorder peer stats to provide a more readable output 2014-07-23 02:25:35 -04:00
Justin Li bacf4f0fd4 Add really really verbose log level 2014-07-23 02:25:15 -04:00
Justin Li f2cc5188dd Amend announce test to include an instance of the started event 2014-07-23 01:39:20 -04:00
Justin Li 2a400a0419 Handle ErrBadRequest after HandleAnnounce is called 2014-07-23 01:34:40 -04:00
Justin Li 856568f1a8 Always log errors 2014-07-23 01:31:22 -04:00
Justin Li 84195deb58 Correctly handle ErrBadRequest in the announce handler 2014-07-23 01:26:47 -04:00
Jimmy Zelinskie f8d12054c5 log request failures 2014-07-23 01:20:48 -04:00
Justin Li e7481b31c1 Don't write ipv6 peers field if empty 2014-07-23 00:56:11 -04:00
Justin Li b99e5e0c36 Add compact announce tests 2014-07-23 00:55:57 -04:00
Justin Li 6396990e52 Move errors to tracker/models 2014-07-23 00:37:30 -04:00
Justin Li 6c7abdfa2d Don't return an HTTP error for "bad request" tracker errors 2014-07-23 00:33:00 -04:00
Justin Li 8625c4b3c4 Update the easter egg 2014-07-23 00:12:29 -04:00
Justin Li 7fce8c9ad4 Add response time stats 2014-07-22 14:57:36 -04:00
Justin Li 8d8c1fba62 Don't write nil compact peer lists 2014-07-22 01:59:05 -04:00
Justin Li 9b60b3144e Fix copy and paste error 2014-07-22 01:56:48 -04:00
Justin Li 38d2c91ff1 Implement RequestsHandled and RequestsErrored stats 2014-07-22 01:40:52 -04:00