2025-11-07 - 2026-11-07

Overview

115 Active Pull Requests
115 Active Issues
Excluding merges, 2 authors have pushed 39 commits to main and 149 commits to all branches. On main, 51 files have changed and there have been 4818 additions and 207272 deletions.

114 Pull requests merged by 2 users

Merged #231 Record origin changes and show them on the prefix page (closes #161) 2026-11-05 06:57:42 +01:00

Merged #230 Drop an update only when its handler's queue is full (closes #229) 2026-11-03 18:27:09 +01:00

Merged #210 Rewrite the README sentence by sentence (closes #157) 2026-11-03 00:10:09 +01:00

Merged #224 Rewrite TODO.md sentence by sentence (part of #157) 2026-11-02 23:44:10 +01:00

Merged #228 Take every down peer out of the table in one walk (closes #225) 2026-11-02 23:10:10 +01:00

Merged #227 Let the lock go for as long as it was held during Overview's walk (closes #226) 2026-11-02 08:00:01 +01:00

Merged #223 Lengthen the WHOIS fetcher's wait after a skipped lookup (closes #222) 2026-11-02 03:59:47 +01:00

Merged #220 Keep taking messages while a peer's session goes down (closes #216) 2026-11-02 03:27:11 +01:00

Merged #221 Pause a registry's WHOIS server after it refuses a query (closes #218) 2026-11-02 02:59:58 +01:00

Merged #219 Keep one entry per AS in the AS handler's batch (closes #217) 2026-11-02 02:10:17 +01:00

Merged #214 Make the routewatch tests pass on a loaded host (closes #213) 2026-10-28 01:44:48 +01:00

Merged #212 Keep working out the home page cards after startup (closes #211) 2026-10-27 22:55:18 +01:00

Merged #209 Say in README why RouteWatch exists (closes #204) 2026-10-27 21:34:09 +01:00

Merged #208 Give every JSON answer @meta, errors included (closes #201) 2026-10-27 21:20:08 +01:00

Merged #207 Give every API value with a unit as a number (closes #199) 2026-10-27 20:19:01 +01:00

Merged #206 Give every IP lookup result the same fields (closes #200) 2026-10-27 19:54:03 +01:00

Merged #205 Trust reverse proxies at private addresses by default (closes #198) 2026-10-27 19:18:35 +01:00

Merged #196 Show figures of the routing table on the home page (closes #154) 2026-10-27 18:27:02 +01:00

Merged #197 deploy 2026-10-27 18:16:15 +01:00

Merged #166 next into main 2026-10-27 18:15:11 +01:00

Merged #195 Remove the per-peer route tables (closes #122) 2026-10-27 17:22:33 +01:00

Merged #194 Read every route from the routing table in memory (part of #122) 2026-10-27 16:22:00 +01:00

Merged #193 Make a timed batch write on every tick (closes #192) 2026-10-27 15:23:53 +01:00

Merged #191 Start no AS, peer or peering write after the stop deadline (closes #189) 2026-10-27 14:56:12 +01:00

Merged #190 Start no prefix flush after the stop deadline (closes #188) 2026-10-27 13:13:04 +01:00

Merged #187 Write the routing table every second and read it at startup (part of #122) 2026-10-27 10:27:13 +01:00

Merged #186 Store the routing table in the database (part of #122) 2026-10-27 08:54:58 +01:00

Merged #185 Add internal/routetable, the routing table in memory (part of #122) 2026-10-27 07:51:56 +01:00

Merged #184 Report which public blocklists list an address in the IP lookup (closes #158) 2026-10-27 06:35:18 +01:00

Merged #183 Show the IP information API on the home page (closes #156) 2026-10-27 05:27:24 +01:00

Merged #182 Let the AS page's prefix lists fold (closes #155) 2026-10-27 04:56:59 +01:00

Merged #181 List an AS's prefixes by mask length, shortest first (closes #153) 2026-10-27 04:37:18 +01:00

Merged #180 Show whether the status on / and /status is fresh (closes #152) 2026-10-27 04:24:53 +01:00

Merged #179 Take Brazilian AS details from NIC.br's WHOIS server (closes #174) 2026-10-27 03:59:12 +01:00

Merged #178 Stop asinfo-gen when the as.csv download breaks off (closes #177) 2026-10-27 03:10:41 +01:00

Merged #176 Keep the AS list when the asupdate generator fails (closes #173) 2026-10-27 02:43:36 +01:00

Merged #175 Read only the AS's objects in RIPE, APNIC and AFRINIC answers (closes #168) 2026-10-27 02:12:50 +01:00

Merged #172 Keep accented letters in AS names (closes #165) 2026-10-27 01:50:35 +01:00

Merged #171 Show ages on the AS and prefix pages in words (closes #163) 2026-10-27 01:23:51 +01:00

Merged #170 Never move last seen back or first seen forward (closes #162) 2026-10-27 01:10:02 +01:00

Merged #169 Show route churn as a whole count per minute (closes #160) 2026-10-27 00:14:25 +01:00

Merged #167 Back off WHOIS lookups more slowly and stop asking for personal data (closes #159) 2026-10-26 23:40:14 +01:00

Merged #164 Make the home page's AS name search work (closes #151) 2026-10-26 22:51:13 +01:00

Merged #149 deploy 2026-10-22 18:52:22 +02:00

Merged #87 next into main 2026-10-22 18:25:14 +02:00

Merged #147 Log the start-up checkpoint's figures under their own names (closes #117) 2026-10-20 04:32:09 +02:00

Merged #148 Add the Rationale section to README (closes #121) 2026-10-20 04:24:42 +02:00

Merged #146 Treat a path with AS 0 anywhere as a withdrawal (closes #141) 2026-10-20 04:07:42 +02:00

Merged #145 Keep the database files, logs and binaries out of the build context (closes #120) 2026-10-20 03:58:57 +02:00

Merged #142 Keep prefixes that do not parse out of the prefix tables (closes #114) 2026-10-20 03:51:10 +02:00

Merged #144 Show the MIT licence in the page footers (closes #119) 2026-10-20 03:46:45 +02:00

Merged #143 Bound the WHOIS fetcher's success and error time lists (closes #118) 2026-10-20 03:38:52 +02:00

Merged #140 Reset the peering handler's dropped_paths figure after each log line (closes #116) 2026-10-20 03:28:07 +02:00

Merged #138 Handle an announcement without an origin like a replacement (closes #113) 2026-10-20 03:25:43 +02:00

Merged #139 Read the drop counter atomically and set the WHOIS fetcher before serving (closes #115) 2026-10-20 03:18:01 +02:00

Merged #136 Answer HEAD requests and give 405 a plain message (closes #111) 2026-10-20 03:06:23 +02:00

Merged #137 Store a new prefix's earliest timestamp as first_seen (closes #112) 2026-10-20 02:59:17 +02:00

Merged #135 Leave SIGINT and SIGTERM to fx (closes #131) 2026-10-20 02:34:05 +02:00

Merged #134 Bound the IP lookup's address list and name lookups (closes #110) 2026-10-20 02:23:50 +02:00

Merged #130 Bound each shutdown stage by the stop deadline (closes #100) 2026-10-20 02:15:11 +02:00

Merged #133 Answer 500, not 404, when the IP lookup cannot read the database (closes #109) 2026-10-20 01:49:34 +02:00

Merged #132 Add the HTTP hardening the policy requires before 1.0 (closes #108) 2026-10-20 01:36:19 +02:00

Merged #126 Checkpoint without waiting on readers and log a busy checkpoint (closes #102) 2026-10-20 01:06:52 +02:00

Merged #129 Read the AS page from bounded lookups (closes #104) 2026-10-20 00:52:33 +02:00

Merged #128 Cap WHOIS answers and follow referrals only to WHOIS servers (closes #106) 2026-10-20 00:15:15 +02:00

Merged #127 Retry a WHOIS lookup that failed instead of storing it as complete (closes #105) 2026-10-20 00:02:35 +02:00

Merged #124 Keep a peer-down until its route delete succeeds (closes #101) 2026-10-19 23:39:29 +02:00

Merged #125 Build and test with a supported Go release (closes #107) 2026-10-19 23:19:22 +02:00

Merged #123 Percent-decode URL parameters before parsing them (closes #103) 2026-10-19 23:02:01 +02:00

Merged #99 Bring README and TODO.md up to date with the code (closes #72) 2026-10-19 16:09:23 +02:00

Merged #98 Make live route writes cheaper so the prefix handler keeps up (closes #96) 2026-10-19 15:43:39 +02:00

Merged #97 Run database maintenance under the database lock (closes #94) 2026-10-19 13:26:37 +02:00

Merged #95 Drain the handler queues before stopping the handlers on shutdown (closes #69) 2026-10-19 13:08:49 +02:00

Merged #91 Keep a trailing AS set out of the origin and the peerings (closes #75) 2026-10-19 12:50:06 +02:00

Merged #93 Let bgp_peer_count drop to 0 (closes #92) 2026-10-19 12:41:16 +02:00

Merged #90 Count every peer the feed has heard from in bgp_peer_count (closes #74) 2026-10-19 12:24:50 +02:00

Merged #85 Re-vendor the shared files from sneak/prompts at 0653579 (closes #52) 2026-10-19 12:10:12 +02:00

Merged #89 Read feed lines up to 1 MiB (closes #76) 2026-10-19 11:49:48 +02:00

Merged #88 Remove a peer's live routes when its session goes down (closes #56) 2026-10-19 11:40:32 +02:00

Merged #79 Sample the prefix-length pages with bounded lookups, each prefix once (closes #66) 2026-10-19 10:29:03 +02:00

Merged #80 Answer 504, not 408, when a request outlasts its time limit 2026-10-19 10:02:23 +02:00

Merged #83 Write each handler batch from its flush goroutine, outside the mutex 2026-10-19 09:45:25 +02:00

Merged #82 Identify a live route by prefix and peer 2026-10-19 09:13:26 +02:00

Merged #60 Reconnect when RIS Live ends or stalls the stream 2026-10-14 19:42:58 +02:00

Merged #84 Show the prefix page's origin names from the prefix query 2026-10-14 19:08:59 +02:00

Merged #78 Exit with status 1 when the web server cannot listen (closes #73) 2026-10-14 18:26:05 +02:00

Merged #81 Parse the prefix on the prefix pages before looking it up 2026-10-14 17:24:04 +02:00

Merged #59 Ignore routes shorter than /8 or /16 in the IP lookup 2026-10-14 17:23:52 +02:00

Merged #58 Apply each peer's last update for a prefix in a batch 2026-10-14 17:09:14 +02:00

Merged #77 Count every reconnect in reconnect_count (closes #68) 2026-10-14 15:59:15 +02:00

Merged #6 Next milestone: production memory under 5 GiB, ready for upaas 2026-10-06 00:34:49 +02:00

Merged #50 Serve the /api/v1/stats prefix distribution from memory (closes #30) 2026-10-03 18:43:59 +02:00

Merged #49 Create new databases with auto_vacuum incremental (closes #43) 2026-10-03 17:09:30 +02:00

Merged #51 Look up IP addresses by prefix at each mask length 2026-10-03 16:04:39 +02:00

Merged #47 Stamp the git tag or short commit in a plain docker build (closes #46) 2026-10-02 08:17:36 +02:00

Merged #44 Container makes its data directory usable itself (closes #42) 2026-09-29 12:23:44 +02:00

Merged #41 Add a .dockerignore (closes #39) 2026-09-29 07:42:21 +02:00

Merged #40 README: license and author up front; bring TODO.md up to date (closes #38) 2026-09-29 07:06:32 +02:00

Merged #37 Add MIT LICENSE (closes #1) 2026-09-29 05:05:36 +02:00

Merged #36 Stop the streamer without sending on closed queues (closes #34) 2026-09-28 21:42:34 +02:00

Merged #35 Let the daemon receive docker stop's signal itself (closes #33) 2026-09-28 21:08:33 +02:00

Merged #32 Refuse invalid settings at start, health check follows PORT (closes #31) 2026-09-28 20:08:42 +02:00

Merged #29 Serve /api/v1/stats counts from realtime in-memory counters (closes #27) 2026-09-22 09:41:16 +02:00

Merged #26 Add _txlock=immediate so batch writes wait instead of dropping (closes #25) 2026-09-21 20:12:34 +02:00

Merged #24 Cap glibc malloc arenas to keep non-Go RSS bounded (closes #23) 2026-09-21 19:29:32 +02:00

Merged #22 Set GOMEMLIMIT in the image and document the memory budget (closes #13) 2026-09-21 17:29:30 +02:00

Merged #21 Shrink the four handler queues from 100,000 to 20,000 (closes #11) 2026-09-21 16:29:39 +02:00

Merged #19 Fix two goroutine leaks: stats handlers on timeout, streamer tickers on reconnect (closes #12) 2026-09-21 16:29:32 +02:00

Merged #18 Stop decoding unused Community and Raw fields of RIS messages 2026-09-21 16:12:42 +02:00

Merged #17 Add .editorconfig and Gitea CI workflow (closes #14) 2026-09-21 16:01:14 +02:00

Merged #16 Bound peering AS-path map and swap it instead of copying 2026-09-21 16:01:09 +02:00

Merged #15 Bound SQLite memory across the whole connection pool (closes #8) 2026-09-21 15:46:35 +02:00

Merged #7 Run make check inside the Docker build with a pinned lint stage (closes #5) 2026-09-21 09:35:17 +02:00

Merged #4 Skip live network feed test under -short for deterministic make check (closes #2) 2026-09-21 09:05:34 +02:00

1 Pull request proposed by 1 user

Proposed #202 next into main 2026-10-27 18:39:24 +01:00

113 Issues closed from 2 users

Closed #161 add announcement list to the prefix page 2026-11-05 06:57:42 +01:00

Closed #229 The prefix handler still dropped updates in one burst with the fixes for 216, 225 and 226 in 2026-11-03 18:27:09 +01:00

Closed #157 Rewrite README.md and the other prose documents sentence by sentence, on Fable 2026-11-03 00:10:09 +01:00

Closed #225 The prefix handler still drops updates when sessions go down and come straight back 2026-11-02 23:10:10 +01:00

Closed #226 The home page's once-a-minute refresh stops the prefix handler, which drops updates 2026-11-02 08:00:01 +01:00

Closed #222 A skipped WHOIS lookup leaves the fetch interval short, so IANA is asked about paused ASes up to once a second 2026-11-02 03:59:47 +01:00

Closed #216 A session going down stops the prefix handler for over a second, and it drops updates 2026-11-02 03:27:11 +01:00

Closed #218 The WHOIS fetcher keeps asking a registry that refuses it 2026-11-02 02:59:58 +01:00

Closed #217 The AS handler drops updates when the feed bursts 2026-11-02 02:10:18 +01:00

Closed #215 The peering handler's dropped-count test fills 500,000 paths 2026-10-28 01:44:49 +01:00

Closed #213 Three prefix handler tests still fail on timing under load 2026-10-28 01:44:48 +01:00

Closed #211 The home page cards are never worked out again after startup 2026-10-27 22:55:18 +01:00

Closed #204 rationale section for README 2026-10-27 21:34:09 +01:00

Closed #201 all json responses should include the @meta object 2026-10-27 21:20:09 +01:00

Closed #199 execution_time should be execution_time_ms and not be a string but the actual value 2026-10-27 20:19:02 +01:00

Closed #200 IP lookup doesn't give the data 2026-10-27 19:54:04 +01:00

Closed #198 /ip doesn't correctly calculate client IP 2026-10-27 19:18:35 +01:00

Closed #154 / page needs some additional useful links 2026-10-27 18:27:02 +01:00

Closed #122 Keep the whole routing table in memory and in one database table, pruning only redundant routes so it stays bounded 2026-10-27 17:22:33 +01:00

Closed #192 Timed batch writes happen only on every other tick 2026-10-27 15:23:53 +01:00

Closed #189 The AS, peer and peering handlers can start a write after the stop deadline 2026-10-27 14:56:12 +01:00

Closed #188 next is red: the prefix handler's stop-deadline test fails intermittently 2026-10-27 13:13:04 +01:00

Closed #158 IP lookup: report the public blocklists that list an address, from cached copies 2026-10-27 06:35:18 +01:00

Closed #156 index page needs a card showing example code to curl an IP info page from the api, with example response 2026-10-27 05:27:25 +01:00

Closed #155 ipv4 and ipv6 prefix lists should be collapsible sections on the as view page 2026-10-27 04:56:59 +01:00

Closed #153 the AS view page should sort prefixes in the prefix list by prefix length ascending 2026-10-27 04:37:18 +01:00

Closed #152 needs a connection status freshness indicator on / and /status 2026-10-27 04:24:53 +01:00

Closed #174 Brazilian AS names from LACNIC show replacement characters 2026-10-27 03:59:12 +01:00

Closed #177 asinfo-gen loops forever when the as.csv download is cut off 2026-10-27 03:10:41 +01:00

Closed #173 make asupdate replaces the AS list with an empty file when the generator fails 2026-10-27 02:43:36 +01:00

Closed #168 APNIC lookups store the AS block's dates instead of the AS's 2026-10-27 02:12:50 +01:00

Closed #165 AS names lose or garble accented letters 2026-10-27 01:50:36 +01:00

Closed #163 Ages show as raw durations such as 360h0m0s ago 2026-10-27 01:23:52 +01:00

Closed #162 First seen can be later than last seen when a collector sends old updates 2026-10-27 01:10:02 +01:00

Closed #160 "Route Churn/sec" figure is wrong 2026-10-27 00:14:25 +01:00

Closed #159 the whois fetcher needs to be slightly more aggressive 2026-10-26 23:40:15 +01:00

Closed #151 as name search does not work 2026-10-26 22:51:14 +01:00

Closed #150 prod error 2026-10-22 19:25:18 +02:00

Closed #117 The start-up WAL checkpoint log line labels the busy flag as wal_pages and always prints zeros after a successful checkpoint 2026-10-20 04:32:09 +02:00

Closed #121 README has no Rationale section, which REPO_POLICIES requires 2026-10-20 04:24:43 +02:00

Closed #141 A path with AS 0 before its end is stored as a normal route, where RFC 7607 treats it as a withdrawal 2026-10-20 04:07:42 +02:00

Closed #120 The .dockerignore database patterns do not match db.sqlite, and the repository's *.log and binary suffixes are missing from it 2026-10-20 03:58:57 +02:00

Closed #114 A prefix string that does not parse is written into the prefixes table and counted in the prefix totals 2026-10-20 03:51:10 +02:00

Closed #119 The home and status page footers say WTFPL while LICENSE and README say MIT 2026-10-20 03:46:45 +02:00

Closed #118 The WHOIS fetcher's success and error time lists grow without bound unless the stats endpoints are polled 2026-10-20 03:38:52 +02:00

Closed #116 The peering handler's dropped_paths log figure is never reset, so every run reports the total since start 2026-10-20 03:28:07 +02:00

Closed #113 An announcement whose path gives no origin leaves the peer's old route live and cancels a withdrawal in the same batch 2026-10-20 03:25:43 +02:00

Closed #115 The handler drop counter is written atomically but read without synchronisation, and the WHOIS fetcher pointer is set after the server starts serving 2026-10-20 03:18:01 +02:00

Closed #111 HEAD requests answer 405 on every route, and a 405 on the JSON routes says "Internal server error" 2026-10-20 03:06:23 +02:00

Closed #112 A new prefix's first_seen is the latest timestamp among the batch's updates for it, not the earliest 2026-10-20 02:59:17 +02:00

Closed #131 The daemon handles SIGINT and SIGTERM itself as well as through fx, and logs a shutdown failure on a clean stop 2026-10-20 02:34:05 +02:00

Closed #110 The IP lookup accepts an unbounded address list, gives PTR lookups no limit of their own, and echoes private addresses of internal names 2026-10-20 02:23:50 +02:00

Closed #100 Shutdown ignores its deadline and upaas kills the container 10 seconds after SIGTERM, so the final writes are cut off and a stop exits with status 1 2026-10-20 02:15:11 +02:00

Closed #109 The IP lookup answers 404 "No routes found" when the database read fails 2026-10-20 01:49:34 +02:00

Closed #108 The HTTP hardening REPO_POLICIES requires before a 1.0 tag is missing: security headers, trusted proxies for forwarded headers, generic error messages 2026-10-20 01:36:19 +02:00

Closed #102 The 5-second TRUNCATE checkpoint holds the database lock for up to the busy timeout while any read is in progress, and logs the busy result as a success 2026-10-20 01:06:52 +02:00

Closed #104 The AS page reads every route of the AS, one random row per peer and prefix, so the largest ASes head for a 504 as the tables fill 2026-10-20 00:52:34 +02:00

Closed #106 The WHOIS client reads a server's answer into memory with no size cap and follows a referral to any host and port 2026-10-20 00:15:15 +02:00

Closed #105 A WHOIS lookup whose RIR query fails or returns nothing is stored as complete and the AS is not retried for 30 days 2026-10-20 00:02:35 +02:00

Closed #101 A peer-down whose route delete fails or is cut short is lost for good, so the peer's routes stay live 2026-10-19 23:39:29 +02:00

Closed #107 The image builds and tests the daemon with Go 1.24, a release line that no longer receives security fixes 2026-10-19 23:19:23 +02:00

Closed #103 The home page cannot look up any IPv6 address: percent-encoded URL parameters are read undecoded and answer 400 2026-10-19 23:02:01 +02:00

Closed #72 README endpoint list and database schema do not match the code 2026-10-19 16:09:24 +02:00

Closed #96 The prefix handler drops a quarter of its updates on the live feed: route writes are slower than the feed 2026-10-19 15:43:40 +02:00

Closed #94 Database maintenance fails or makes batch writes fail: it runs outside the database lock 2026-10-19 13:26:37 +02:00

Closed #69 Shutdown loses the updates still in the handler queues 2026-10-19 13:08:49 +02:00

Closed #75 An AS set in a path is flattened into the path, giving a wrong origin AS and false peerings 2026-10-19 12:50:07 +02:00

Closed #92 bgp_peer_count never drops to 0 2026-10-19 12:41:17 +02:00

Closed #74 bgp_peer_count in /api/v1/stats counts only peers whose session opened since startup 2026-10-19 12:24:50 +02:00

Closed #52 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-19 12:10:13 +02:00

Closed #76 A feed line longer than 64 KiB ends the connection 2026-10-19 11:49:49 +02:00

Closed #56 Routes of a peer whose BGP session goes down are never removed 2026-10-19 11:40:33 +02:00

Closed #66 The prefix-length pages read every route of that length, and can list a prefix more than once 2026-10-19 10:29:03 +02:00

Closed #70 A request past its time limit answers 408, and /api/v1/stats answers 500 2026-10-19 10:02:24 +02:00

Closed #65 The batch handlers take nothing off their queues while they write to the database, so updates are dropped 2026-10-19 09:45:26 +02:00

Closed #55 Live routes keyed by origin AS: an origin change or a withdrawal sent with announcements leaves a stale route 2026-10-19 09:13:27 +02:00

Closed #53 The feed stops for good, health still ok, when RIS Live ends or stalls the connection 2026-10-14 19:42:58 +02:00

Closed #67 The prefix page reads every route of each origin AS just to show the AS name 2026-10-14 19:08:59 +02:00

Closed #73 The daemon keeps running without its web server when it cannot listen on its port 2026-10-14 18:26:05 +02:00

Closed #71 Prefix pages answer 500 for a malformed prefix and 404 for a prefix written in another valid form 2026-10-14 17:24:04 +02:00

Closed #57 IP lookup can name the AS of a default or near-default route as an address's owner 2026-10-14 17:23:52 +02:00

Closed #54 A prefix batch keeps one update per prefix across all peers, losing the rest 2026-10-14 17:09:15 +02:00

Closed #68 reconnect_count in /api/v1/stats never leaves 0 2026-10-14 15:59:16 +02:00

Closed #64 Routes of a peer whose session goes down stay in the live table for good 2026-10-14 14:51:07 +02:00

Closed #63 A peer's routes are stored per origin AS, so some withdrawals and every origin change leave a stale route 2026-10-14 14:51:06 +02:00

Closed #62 The prefix handler keeps one update per prefix in each batch, so other peers' updates are lost 2026-10-14 14:51:05 +02:00

Closed #61 The stream stops for good when the server ends it normally, and the health check still reports it connected 2026-10-14 14:51:04 +02:00

Closed #3 Production memory: run under 5 GiB on real internet feed (was killed at ~12 GiB) 2026-10-05 02:44:00 +02:00

Closed #30 /api/v1/stats answers HTTP 500 after 35 hours on the live feed 2026-10-03 18:43:59 +02:00

Closed #43 auto_vacuum is never enabled, so incremental vacuum frees nothing 2026-10-03 17:09:30 +02:00

Closed #48 Looking up an IPv6 address reads every IPv6 route, so it times out on a production-sized database 2026-10-03 16:04:39 +02:00

Closed #46 docker build . stamps dev, not the git tag or short commit 2026-10-02 08:17:36 +02:00

Closed #45 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:12:11 +02:00

Closed #42 The container sets its data directory permissions itself before startup 2026-09-29 12:23:44 +02:00

Closed #39 Add a .dockerignore 2026-09-29 07:42:21 +02:00

Closed #38 README and TODO.md: licence and author up front, TODO.md brought up to date 2026-09-29 07:06:32 +02:00

Closed #1 Add missing standard files: LICENSE, .editorconfig, and a CI workflow 2026-09-29 05:05:36 +02:00

Closed #34 Stopping the daemon while the feed is flowing can panic with "send on closed channel" 2026-09-28 21:42:34 +02:00

Closed #33 docker stop kills the daemon 2 seconds after the stop signal 2026-09-28 21:08:34 +02:00

Closed #31 Ready to run under upaas on fsn1app1: prod branch, settings from env, health check, README section 2026-09-28 20:08:43 +02:00

Closed #27 Stats endpoint returns 500 once the database passes about 4.5 GiB 2026-09-22 09:41:16 +02:00

Closed #25 Batch writes fail with "database is locked" thousands of times per hour 2026-09-21 20:12:34 +02:00

Closed #23 Non-Go memory grows about 70 MiB per minute, past the SQLite hard heap limit 2026-09-21 19:29:32 +02:00

Closed #13 Enforce a Go memory limit in the image and document memory requirements 2026-09-21 17:29:30 +02:00

Closed #11 Reduce the four handler queues from 100,000 to 20,000 messages 2026-09-21 16:29:39 +02:00

Closed #12 Fix two goroutine leaks: stats handlers on timeout, streamer tickers on reconnect 2026-09-21 16:29:32 +02:00

Closed #9 Stop retaining unused Community and Raw fields of parsed RIS messages 2026-09-21 16:12:42 +02:00

Closed #20 Shrink the four handler queues from 100,000 to 20,000 (closes #11) 2026-09-21 16:10:19 +02:00

Closed #10 Bound the peering handler AS-path map and stop copying it every 30 s 2026-09-21 16:02:15 +02:00

Closed #14 Add .editorconfig and the Gitea CI workflow 2026-09-21 16:01:15 +02:00

Closed #8 Bound SQLite memory across the whole connection pool 2026-09-21 15:46:35 +02:00

Closed #5 Dockerfile must run make check with a pinned lint stage (repo policy) 2026-09-21 09:35:17 +02:00

Closed #2 TestRouteWatchLiveFeed is network-flaky; make make check deterministic 2026-09-21 09:05:34 +02:00

115 Issues created by 2 users

Opened #1 Add missing standard files: LICENSE, .editorconfig, and a CI workflow 2026-07-26 20:12:19 +02:00

Opened #2 TestRouteWatchLiveFeed is network-flaky; make make check deterministic 2026-08-04 02:27:58 +02:00

Opened #3 Production memory: run under 5 GiB on real internet feed (was killed at ~12 GiB) 2026-09-21 08:27:00 +02:00

Opened #5 Dockerfile must run make check with a pinned lint stage (repo policy) 2026-09-21 08:52:31 +02:00

Opened #8 Bound SQLite memory across the whole connection pool 2026-09-21 14:54:35 +02:00

Opened #9 Stop retaining unused Community and Raw fields of parsed RIS messages 2026-09-21 14:54:35 +02:00

Opened #10 Bound the peering handler AS-path map and stop copying it every 30 s 2026-09-21 14:54:36 +02:00

Opened #11 Reduce the four handler queues from 100,000 to 20,000 messages 2026-09-21 14:54:36 +02:00

Opened #12 Fix two goroutine leaks: stats handlers on timeout, streamer tickers on reconnect 2026-09-21 14:54:36 +02:00

Opened #13 Enforce a Go memory limit in the image and document memory requirements 2026-09-21 14:54:36 +02:00

Opened #14 Add .editorconfig and the Gitea CI workflow 2026-09-21 14:55:59 +02:00

Opened #20 Shrink the four handler queues from 100,000 to 20,000 (closes #11) 2026-09-21 16:10:01 +02:00

Opened #23 Non-Go memory grows about 70 MiB per minute, past the SQLite hard heap limit 2026-09-21 18:02:29 +02:00

Opened #25 Batch writes fail with "database is locked" thousands of times per hour 2026-09-21 19:13:14 +02:00

Opened #27 Stats endpoint returns 500 once the database passes about 4.5 GiB 2026-09-22 00:50:15 +02:00

Opened #30 /api/v1/stats answers HTTP 500 after 35 hours on the live feed 2026-09-23 08:04:29 +02:00

Opened #31 Ready to run under upaas on fsn1app1: prod branch, settings from env, health check, README section 2026-09-25 11:02:24 +02:00

Opened #33 docker stop kills the daemon 2 seconds after the stop signal 2026-09-28 19:24:03 +02:00

Opened #34 Stopping the daemon while the feed is flowing can panic with "send on closed channel" 2026-09-28 20:20:43 +02:00

Opened #38 README and TODO.md: licence and author up front, TODO.md brought up to date 2026-09-29 05:06:27 +02:00

Opened #39 Add a .dockerignore 2026-09-29 05:06:28 +02:00

Opened #42 The container sets its data directory permissions itself before startup 2026-09-29 11:07:47 +02:00

Opened #43 auto_vacuum is never enabled, so incremental vacuum frees nothing 2026-09-29 11:23:36 +02:00

Opened #45 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:02:20 +02:00

Opened #46 docker build . stamps dev, not the git tag or short commit 2026-10-02 02:21:45 +02:00

Opened #48 Looking up an IPv6 address reads every IPv6 route, so it times out on a production-sized database 2026-10-03 14:27:10 +02:00

Opened #52 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-06 01:30:23 +02:00

Opened #53 The feed stops for good, health still ok, when RIS Live ends or stalls the connection 2026-10-14 14:33:43 +02:00

Opened #54 A prefix batch keeps one update per prefix across all peers, losing the rest 2026-10-14 14:33:43 +02:00

Opened #55 Live routes keyed by origin AS: an origin change or a withdrawal sent with announcements leaves a stale route 2026-10-14 14:33:44 +02:00

Opened #56 Routes of a peer whose BGP session goes down are never removed 2026-10-14 14:33:44 +02:00

Opened #57 IP lookup can name the AS of a default or near-default route as an address's owner 2026-10-14 14:35:04 +02:00

Opened #61 The stream stops for good when the server ends it normally, and the health check still reports it connected 2026-10-14 14:50:29 +02:00

Opened #62 The prefix handler keeps one update per prefix in each batch, so other peers' updates are lost 2026-10-14 14:50:30 +02:00

Opened #63 A peer's routes are stored per origin AS, so some withdrawals and every origin change leave a stale route 2026-10-14 14:50:30 +02:00

Opened #64 Routes of a peer whose session goes down stay in the live table for good 2026-10-14 14:50:31 +02:00

Opened #65 The batch handlers take nothing off their queues while they write to the database, so updates are dropped 2026-10-14 14:50:31 +02:00

Opened #66 The prefix-length pages read every route of that length, and can list a prefix more than once 2026-10-14 14:50:31 +02:00

Opened #67 The prefix page reads every route of each origin AS just to show the AS name 2026-10-14 14:50:32 +02:00

Opened #68 reconnect_count in /api/v1/stats never leaves 0 2026-10-14 14:50:32 +02:00

Opened #69 Shutdown loses the updates still in the handler queues 2026-10-14 14:50:32 +02:00

Opened #70 A request past its time limit answers 408, and /api/v1/stats answers 500 2026-10-14 14:50:32 +02:00

Opened #71 Prefix pages answer 500 for a malformed prefix and 404 for a prefix written in another valid form 2026-10-14 14:50:33 +02:00

Opened #72 README endpoint list and database schema do not match the code 2026-10-14 14:50:33 +02:00

Opened #73 The daemon keeps running without its web server when it cannot listen on its port 2026-10-14 14:50:34 +02:00

Opened #74 bgp_peer_count in /api/v1/stats counts only peers whose session opened since startup 2026-10-14 14:50:34 +02:00

Opened #75 An AS set in a path is flattened into the path, giving a wrong origin AS and false peerings 2026-10-14 14:50:34 +02:00

Opened #76 A feed line longer than 64 KiB ends the connection 2026-10-14 15:01:29 +02:00

Opened #86 Release 1.0: what stands between routewatch and a release candidate 2026-10-14 22:25:51 +02:00

Opened #92 bgp_peer_count never drops to 0 2026-10-19 12:18:45 +02:00

Opened #94 Database maintenance fails or makes batch writes fail: it runs outside the database lock 2026-10-19 12:50:45 +02:00

Opened #96 The prefix handler drops a quarter of its updates on the live feed: route writes are slower than the feed 2026-10-19 13:10:40 +02:00

Opened #100 Shutdown ignores its deadline and upaas kills the container 10 seconds after SIGTERM, so the final writes are cut off and a stop exits with status 1 2026-10-19 22:35:05 +02:00

Opened #101 A peer-down whose route delete fails or is cut short is lost for good, so the peer's routes stay live 2026-10-19 22:35:06 +02:00

Opened #102 The 5-second TRUNCATE checkpoint holds the database lock for up to the busy timeout while any read is in progress, and logs the busy result as a success 2026-10-19 22:35:08 +02:00

Opened #103 The home page cannot look up any IPv6 address: percent-encoded URL parameters are read undecoded and answer 400 2026-10-19 22:35:09 +02:00

Opened #104 The AS page reads every route of the AS, one random row per peer and prefix, so the largest ASes head for a 504 as the tables fill 2026-10-19 22:35:10 +02:00

Opened #105 A WHOIS lookup whose RIR query fails or returns nothing is stored as complete and the AS is not retried for 30 days 2026-10-19 22:35:11 +02:00

Opened #106 The WHOIS client reads a server's answer into memory with no size cap and follows a referral to any host and port 2026-10-19 22:35:13 +02:00

Opened #107 The image builds and tests the daemon with Go 1.24, a release line that no longer receives security fixes 2026-10-19 22:35:14 +02:00

Opened #108 The HTTP hardening REPO_POLICIES requires before a 1.0 tag is missing: security headers, trusted proxies for forwarded headers, generic error messages 2026-10-19 22:35:15 +02:00

Opened #109 The IP lookup answers 404 "No routes found" when the database read fails 2026-10-19 22:35:16 +02:00

Opened #110 The IP lookup accepts an unbounded address list, gives PTR lookups no limit of their own, and echoes private addresses of internal names 2026-10-19 22:35:18 +02:00

Opened #111 HEAD requests answer 405 on every route, and a 405 on the JSON routes says "Internal server error" 2026-10-19 22:35:19 +02:00

Opened #112 A new prefix's first_seen is the latest timestamp among the batch's updates for it, not the earliest 2026-10-19 22:35:20 +02:00

Opened #113 An announcement whose path gives no origin leaves the peer's old route live and cancels a withdrawal in the same batch 2026-10-19 22:35:21 +02:00

Opened #114 A prefix string that does not parse is written into the prefixes table and counted in the prefix totals 2026-10-19 22:35:23 +02:00

Opened #115 The handler drop counter is written atomically but read without synchronisation, and the WHOIS fetcher pointer is set after the server starts serving 2026-10-19 22:35:24 +02:00

Opened #116 The peering handler's dropped_paths log figure is never reset, so every run reports the total since start 2026-10-19 22:35:26 +02:00

Opened #117 The start-up WAL checkpoint log line labels the busy flag as wal_pages and always prints zeros after a successful checkpoint 2026-10-19 22:35:27 +02:00

Opened #118 The WHOIS fetcher's success and error time lists grow without bound unless the stats endpoints are polled 2026-10-19 22:35:29 +02:00

Opened #119 The home and status page footers say WTFPL while LICENSE and README say MIT 2026-10-19 22:35:30 +02:00

Opened #120 The .dockerignore database patterns do not match db.sqlite, and the repository's *.log and binary suffixes are missing from it 2026-10-19 22:35:31 +02:00

Opened #121 README has no Rationale section, which REPO_POLICIES requires 2026-10-19 22:35:33 +02:00

Opened #122 Keep the whole routing table in memory and in one database table, pruning only redundant routes so it stays bounded 2026-10-19 22:40:42 +02:00

Opened #131 The daemon handles SIGINT and SIGTERM itself as well as through fx, and logs a shutdown failure on a clean stop 2026-10-20 01:17:49 +02:00

Opened #141 A path with AS 0 before its end is stored as a normal route, where RFC 7607 treats it as a withdrawal 2026-10-20 03:26:02 +02:00

Opened #150 prod error 2026-10-22 19:20:10 +02:00

Opened #151 as name search does not work 2026-10-22 19:26:21 +02:00

Opened #152 needs a connection status freshness indicator on / and /status 2026-10-22 19:40:05 +02:00

Opened #153 the AS view page should sort prefixes in the prefix list by prefix length ascending 2026-10-22 19:42:12 +02:00

Opened #154 / page needs some additional useful links 2026-10-22 19:44:13 +02:00

Opened #155 ipv4 and ipv6 prefix lists should be collapsible sections on the as view page 2026-10-22 19:46:11 +02:00

Opened #156 index page needs a card showing example code to curl an IP info page from the api, with example response 2026-10-22 19:50:03 +02:00

Opened #157 Rewrite README.md and the other prose documents sentence by sentence, on Fable 2026-10-22 20:16:30 +02:00

Opened #158 IP lookup: report the public blocklists that list an address, from cached copies 2026-10-22 20:20:27 +02:00

Opened #159 the whois fetcher needs to be slightly more aggressive 2026-10-22 20:26:01 +02:00

Opened #160 "Route Churn/sec" figure is wrong 2026-10-22 20:27:46 +02:00

Opened #161 add announcement list to the prefix page 2026-10-22 20:29:50 +02:00

Opened #162 First seen can be later than last seen when a collector sends old updates 2026-10-26 21:15:39 +01:00

Opened #163 Ages show as raw durations such as 360h0m0s ago 2026-10-26 21:15:39 +01:00

Opened #165 AS names lose or garble accented letters 2026-10-26 21:33:15 +01:00

Opened #168 APNIC lookups store the AS block's dates instead of the AS's 2026-10-26 23:12:58 +01:00

Opened #173 make asupdate replaces the AS list with an empty file when the generator fails 2026-10-27 01:39:22 +01:00

Opened #174 Brazilian AS names from LACNIC show replacement characters 2026-10-27 01:39:22 +01:00

Opened #177 asinfo-gen loops forever when the as.csv download is cut off 2026-10-27 02:44:12 +01:00

Opened #188 next is red: the prefix handler's stop-deadline test fails intermittently 2026-10-27 10:28:36 +01:00

Opened #189 The AS, peer and peering handlers can start a write after the stop deadline 2026-10-27 11:19:23 +01:00

Opened #192 Timed batch writes happen only on every other tick 2026-10-27 14:00:23 +01:00

Opened #198 /ip doesn't correctly calculate client IP 2026-10-27 18:24:46 +01:00

Opened #199 execution_time should be execution_time_ms and not be a string but the actual value 2026-10-27 18:28:25 +01:00

Opened #200 IP lookup doesn't give the data 2026-10-27 18:31:30 +01:00

Opened #201 all json responses should include the @meta object 2026-10-27 18:32:11 +01:00

Opened #203 propose additional information we can return/provide in ip lookup objects or any other api responses 2026-10-27 18:40:03 +01:00

Opened #204 rationale section for README 2026-10-27 18:43:27 +01:00

Opened #211 The home page cards are never worked out again after startup 2026-10-27 22:23:03 +01:00

Opened #213 Three prefix handler tests still fail on timing under load 2026-10-27 22:38:02 +01:00

Opened #215 The peering handler's dropped-count test fills 500,000 paths 2026-10-27 23:57:29 +01:00

Opened #216 A session going down stops the prefix handler for over a second, and it drops updates 2026-11-02 00:16:14 +01:00

Opened #217 The AS handler drops updates when the feed bursts 2026-11-02 00:16:15 +01:00

Opened #218 The WHOIS fetcher keeps asking a registry that refuses it 2026-11-02 00:16:15 +01:00

Opened #222 A skipped WHOIS lookup leaves the fetch interval short, so IANA is asked about paused ASes up to once a second 2026-11-02 03:00:31 +01:00

Opened #225 The prefix handler still drops updates when sessions go down and come straight back 2026-11-02 06:00:35 +01:00

Opened #226 The home page's once-a-minute refresh stops the prefix handler, which drops updates 2026-11-02 06:44:22 +01:00

Opened #229 The prefix handler still dropped updates in one burst with the fixes for 216, 225 and 226 in 2026-11-03 17:00:28 +01:00