| Commit message (Expand) | Author | Age | Files | Lines |
* | {courses,sem,ws}.go: First step towards an efficient state propagator | Runxi Yu | 2024-10-05 | 1 | -5/+60 |
* | ws.go: Index chanPool by userID, rather than session cookie | Runxi Yu | 2024-10-05 | 1 | -5/+2 |
* | {main,utils,ws}.go: Initialize cancelPool directly too | Runxi Yu | 2024-10-05 | 1 | -16/+1 |
* | {main,ws}.go: Initialize chanPool directly instead of setupChanPool() | Runxi Yu | 2024-10-05 | 1 | -16/+1 |
* | {courses,ws,wsm}.go: Update userCourseGroups during choose/unchoose | Runxi Yu | 2024-10-05 | 1 | -3/+3 |
* | {courses,ws}.go: Populate userCourseGroups in a separate function | Runxi Yu | 2024-10-05 | 1 | -32/+1 |
* | {courses,ws}.go: Populate userCourseGroups for each connection | Runxi Yu | 2024-10-04 | 1 | -0/+44 |
* | {config,ws}.go, cca.scfg.example: Allow same-user fake auth | Runxi Yu | 2024-10-03 | 1 | -7/+15 |
* | ws.go: Don't log chanPool changes | Runxi Yu | 2024-10-03 | 1 | -2/+0 |
* | {ws,wsm}.go: Handle context cancellations | Runxi Yu | 2024-10-03 | 1 | -5/+74 |
* | ws.go: Fix memory leak introduced in last commit | Runxi Yu | 2024-10-03 | 1 | -0/+7 |
* | ws.go: Fix first race condition in cancelPool management | Runxi Yu | 2024-10-03 | 1 | -13/+2 |
* | {main,ws,wsm}.go: Attempt to cancel old sessions | Runxi Yu | 2024-10-03 | 1 | -8/+66 |
* | ws.go: Update comment on disallowed characters | Runxi Yu | 2024-10-02 | 1 | -5/+4 |
* | {auth,utils,ws}.go: randomBytes -> randomString | Runxi Yu | 2024-10-02 | 1 | -1/+1 |
* | {config,ws}.go, cca.scfg.example: Add fake auth support | Runxi Yu | 2024-10-02 | 1 | -16/+61 |
* | {ws,wsm}.go: Split message handlers into their own functions | Runxi Yu | 2024-10-01 | 1 | -124/+5 |
* | {auth,ws}.go: Remove unnecessary TODOs | Runxi Yu | 2024-10-01 | 1 | -14/+2 |
* | ws.go: Allow deselecting courses | Runxi Yu | 2024-10-01 | 1 | -0/+34 |
* | ws.go: Fix logic error when reaffirming a course choice | Runxi Yu | 2024-10-01 | 1 | -2/+2 |
* | ws.go: protocolError instead of R on unexpected database errors | Runxi Yu | 2024-10-01 | 1 | -23/+7 |
* | index.go, ws.go: Fix race condition surrounding courses | Runxi Yu | 2024-10-01 | 1 | -1/+5 |
* | ws.go: Decrement course.Selected counter on commit failures | Runxi Yu | 2024-10-01 | 1 | -0/+6 |
* | ws.go: Reaffirm course choice when duplicate is requested | Runxi Yu | 2024-10-01 | 1 | -5/+13 |
* | ws.go: propagateCouldFail -> propagateIgnoreFailures | Runxi Yu | 2024-10-01 | 1 | -2/+2 |
* | ws.go, schema.sql: Enforce uniqueness of course choices | Runxi Yu | 2024-10-01 | 1 | -42/+64 |
* | ws.go, *.sql: Add course choices to the database | Runxi Yu | 2024-10-01 | 1 | -1/+33 |
* | ws.go: propagate -> propagateCouldFail | Runxi Yu | 2024-10-01 | 1 | -3/+8 |
* | ws.go: propagate course number updates in another goroutine | Runxi Yu | 2024-10-01 | 1 | -1/+1 |
* | ws.go: Separate c.Write calls into writeText() | Runxi Yu | 2024-09-30 | 1 | -25/+17 |
* | ws.go, utils.go: Document some synchronization design choices | Runxi Yu | 2024-09-30 | 1 | -1/+18 |
* | *: Change license to AGPL-3.0-or-later | Runxi Yu | 2024-09-30 | 1 | -21/+11 |
* | {auth,index,ws}.go, schema.sql: Move session cookie into the user table | Runxi Yu | 2024-09-30 | 1 | -8/+8 |
* | index.html, main.js, ws.go: Enhance course selection rejection message | Runxi Yu | 2024-09-30 | 1 | -1/+1 |
* | ws.go, config.go, config.scfg.example: Attempt to fix deadlock | Runxi Yu | 2024-09-29 | 1 | -4/+7 |
* | ws.go: Attempt to propagate messages | Runxi Yu | 2024-09-29 | 1 | -1/+11 |
* | ws.go: Implement course choice limits | Runxi Yu | 2024-09-29 | 1 | -0/+31 |
* | ws.go: protocolError is now its own function | Runxi Yu | 2024-09-29 | 1 | -28/+15 |
* | .ws.go: Close websocket on protocol errors | Runxi Yu | 2024-09-29 | 1 | -0/+12 |
* | ws.go: Stub for commands "Y" and "N", currently only counting arguments | Runxi Yu | 2024-09-29 | 1 | -0/+14 |
* | ws.go: chanPoolLock should be locked during setupChanPool | Runxi Yu | 2024-09-27 | 1 | -0/+2 |
* | ws.go: chanPool should be a map too | Runxi Yu | 2024-09-27 | 1 | -19/+8 |
* | *.go, cca.scfg.example: Expose performance options | Runxi Yu | 2024-09-26 | 1 | -3/+3 |
* | *.go: Wrap errors | Runxi Yu | 2024-09-26 | 1 | -3/+4 |
* | {auth,index,ws}.go: Add contexts for database calls | Runxi Yu | 2024-09-26 | 1 | -1/+1 |
* | ws.go: Reformat | Runxi Yu | 2024-09-26 | 1 | -1/+1 |
* | ws.go: Document chanPoolLock's purpose | Runxi Yu | 2024-09-24 | 1 | -0/+9 |
* | *.go: Linting | Runxi Yu | 2024-09-24 | 1 | -14/+20 |
* | {index,utils,ws}.go: Handle write errors | Runxi Yu | 2024-09-24 | 1 | -8/+28 |
* | {utils,auth,index,ws}.go: Handle errors in random number generation | Runxi Yu | 2024-09-24 | 1 | -1/+1 |