{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":135839606,"defaultBranch":"main","name":"hypercorn","ownerLogin":"pgjones","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-06-02T17:47:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1391482?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716929669.0","currentOid":""},"activityList":{"items":[{"before":"bfb087756da53c25fd9390b4ea0acf914408ecbf","after":"c405deafb22d66587ea0aff4f8fa4f5688b74351","ref":"refs/heads/main","pushedAt":"2024-05-28T20:54:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bump and release 0.17.3","shortMessageHtmlLink":"Bump and release 0.17.3"}},{"before":"7136c61029532d9f9563e993f045f6c16630c53b","after":"bfb087756da53c25fd9390b4ea0acf914408ecbf","ref":"refs/heads/main","pushedAt":"2024-05-28T20:21:03.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bugfix ensure ExceptionGroup lifespan failures crash the server\n\nA lifespan.startup.failure should crash the server, however if these\nbecame wrapped in an Exception group in the ASGI app the server\nwouldn't crash, now fixed.","shortMessageHtmlLink":"Bugfix ensure ExceptionGroup lifespan failures crash the server"}},{"before":"494268ae438540f8db098881d03c2481d182ea34","after":"7136c61029532d9f9563e993f045f6c16630c53b","ref":"refs/heads/main","pushedAt":"2024-05-27T20:21:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bump and release 0.17.2","shortMessageHtmlLink":"Bump and release 0.17.2"}},{"before":"a2e7bcece2c9dc1ad3dca5bbc4de3a7fce2ea5ce","after":"494268ae438540f8db098881d03c2481d182ea34","ref":"refs/heads/main","pushedAt":"2024-05-27T20:11:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bump and release 0.17.1","shortMessageHtmlLink":"Bump and release 0.17.1"}},{"before":"d16b50398aaedc509f83fe2b5c6c83a0ffbfc991","after":"a2e7bcece2c9dc1ad3dca5bbc4de3a7fce2ea5ce","ref":"refs/heads/main","pushedAt":"2024-05-27T19:56:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bump and release 0.17.0","shortMessageHtmlLink":"Bump and release 0.17.0"}},{"before":"e47757d5471f705d7c3d9018e436be205ce3f05c","after":"d16b50398aaedc509f83fe2b5c6c83a0ffbfc991","ref":"refs/heads/main","pushedAt":"2024-05-27T19:50:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Improve the trailing headers support\n\nThe EndBody event should only be sent after the headers as this\nresults in the stream being closed.\n\nIt is acceptable to send no response and only trailing headers, in\nwhich case a default 200 status code response is sent with the\nheaders.","shortMessageHtmlLink":"Improve the trailing headers support"}},{"before":"a40aa2c87f3eecc71a564139781914e205a51a32","after":"e47757d5471f705d7c3d9018e436be205ce3f05c","ref":"refs/heads/main","pushedAt":"2024-05-27T16:58:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Ensure responses are sent with empty bodies for WSGI\n\nThe previous code was meant to ensure the response was not sent until\nthe first byte was recevied. However, as the response_body has been\nset this should be enough and ensures that empty response bodies work.","shortMessageHtmlLink":"Ensure responses are sent with empty bodies for WSGI"}},{"before":"d1c1a23ae2a24fc2cd059a51b844013725993532","after":"a40aa2c87f3eecc71a564139781914e205a51a32","ref":"refs/heads/main","pushedAt":"2024-05-27T16:52:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Allow sending of the response before body data arrives\n\nThis was an ASGI specification condition that has now been relaxed.","shortMessageHtmlLink":"Allow sending of the response before body data arrives"}},{"before":"ba3d813684e8b8076d295f9a23778a39cdb9b470","after":"d1c1a23ae2a24fc2cd059a51b844013725993532","ref":"refs/heads/main","pushedAt":"2024-05-27T16:27:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Add support for lifespan state\n\nThis allows ASGI apps to store state during startup that is then\npassed in every scope.","shortMessageHtmlLink":"Add support for lifespan state"}},{"before":"116bd8cdf7b547ddfd5d2e52a317d00aeb53bbd0","after":"ba3d813684e8b8076d295f9a23778a39cdb9b470","ref":"refs/heads/main","pushedAt":"2024-05-27T15:20:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Don't check the internal close_at with QUIC\n\nBetter to handle the timer every time. With thanks to @rthalley.","shortMessageHtmlLink":"Don't check the internal close_at with QUIC"}},{"before":"d8de5f28adc99b1bc9b47a6c557fe25972ab966f","after":"116bd8cdf7b547ddfd5d2e52a317d00aeb53bbd0","ref":"refs/heads/main","pushedAt":"2024-05-27T15:15:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Add a dependency on typing extensions\n\nThis is required to use `NotRequired` when type hinting TypedDicts as\nrequired in d8de5f28adc99b1bc9b47a6c557fe25972ab966f.","shortMessageHtmlLink":"Add a dependency on typing extensions"}},{"before":"ab98383f521a8b7d4f173ffa1f28b443e85561d8","after":"d8de5f28adc99b1bc9b47a6c557fe25972ab966f","ref":"refs/heads/main","pushedAt":"2024-05-27T13:43:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Support sending trailing headers on h2/h3\n\nThis adds support for the ASGI http-trailers extension which allows\nfor trailing headers to be sent after a response.\n\nMany thanks to @jeffsawatzky from whom parts of this implementation\nare based.","shortMessageHtmlLink":"Support sending trailing headers on h2/h3"}},{"before":"81bbb32642f4daa2dbeb3b4912da53bd146fd9ae","after":"ab98383f521a8b7d4f173ffa1f28b443e85561d8","ref":"refs/heads/main","pushedAt":"2024-05-27T09:37:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Ensure only a single QUIC timer task per connection\n\nThis prevents Hypercorn calling aioquic's interface too many times,\ndue to many tasks running concurrently, triggering exponential backoff\nand errors.\n\nMany thanks to @rthalley from whom's work this is based.","shortMessageHtmlLink":"Ensure only a single QUIC timer task per connection"}},{"before":"d264794d09fd8de4172623eec459a2efe31257ad","after":"81bbb32642f4daa2dbeb3b4912da53bd146fd9ae","ref":"refs/heads/main","pushedAt":"2024-05-26T10:11:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Send a 400 if data is received before the websocket is accepted\n\nThis is necessary as the data is not known to be either websocket or\nhttp data as the server must accept or reject the connection and hence\nit is a bad request.\n\nIn practice this is rare as the upgrade request is a GET request which\nrarely has body data and most websocket clients wait for acceptance.","shortMessageHtmlLink":"Send a 400 if data is received before the websocket is accepted"}},{"before":"0a23657b12d945c620e15afc90fc70c1ba9269c0","after":"d264794d09fd8de4172623eec459a2efe31257ad","ref":"refs/heads/main","pushedAt":"2024-05-26T09:08:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Improve the proxy fix docs\n\nThis should make it clearer what the trusted_hops argument should be.\nThis is based on the Werkzeug docs.","shortMessageHtmlLink":"Improve the proxy fix docs"}},{"before":"751f6d232e70749dbe26ef4f46386e71884814d8","after":"0a23657b12d945c620e15afc90fc70c1ba9269c0","ref":"refs/heads/main","pushedAt":"2024-05-25T20:43:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Drop exceptiongroup dependency in Python 3.11 and later\n\nAll of the imports are already conditionalized on the Python interpreter\nversion; there is no need to install this backport package on current\ninterpreters.","shortMessageHtmlLink":"Drop exceptiongroup dependency in Python 3.11 and later"}},{"before":"6a9fd70d79fb5ad54709ab224ebbe9956bb9454b","after":"751f6d232e70749dbe26ef4f46386e71884814d8","ref":"refs/heads/main","pushedAt":"2024-05-25T20:43:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Revert #228\n\nI wish to consider this solution, and also ensure any solution applies\nin the same manner for asyncio and UDP servers.","shortMessageHtmlLink":"Revert #228"}},{"before":"24aacf432ef44ddf8ba32e2427b507e560f63ce2","after":"6a9fd70d79fb5ad54709ab224ebbe9956bb9454b","ref":"refs/heads/main","pushedAt":"2024-05-25T20:35:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Remove executable permissions from non-script sources\n\nThese files are not script-like (no `if __name__ == \"__main__\":` or\ninteresting side effects) and have no shebang lines (`#!`), so there is\nno reason for the executable bit to be set in their filesystem\npermissions.","shortMessageHtmlLink":"Remove executable permissions from non-script sources"}},{"before":"bb34f360cbefbbecec72605e306cf164af349296","after":"24aacf432ef44ddf8ba32e2427b507e560f63ce2","ref":"refs/heads/main","pushedAt":"2024-05-25T20:34:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bugfix handle already-closed on StreamEnded\n\nThis occurs if the response is sent before the full request body has\nbeen received.","shortMessageHtmlLink":"Bugfix handle already-closed on StreamEnded"}},{"before":"b316c2464388010c1fa5874e6d8678a9e7c30933","after":"bb34f360cbefbbecec72605e306cf164af349296","ref":"refs/heads/main","pushedAt":"2024-05-11T01:48:39.000Z","pushType":"pr_merge","commitsCount":7,"pusher":{"login":"njsmith","name":"Nathaniel J. Smith","path":"/njsmith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/609896?s=80&v=4"},"commit":{"message":"don't log oserror","shortMessageHtmlLink":"don't log oserror"}},{"before":"aee69f5fcc5dda48e33e6566e9068d4fe03c1e30","after":"b316c2464388010c1fa5874e6d8678a9e7c30933","ref":"refs/heads/main","pushedAt":"2024-05-09T18:37:25.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"njsmith","name":"Nathaniel J. Smith","path":"/njsmith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/609896?s=80&v=4"},"commit":{"message":"more format","shortMessageHtmlLink":"more format"}},{"before":"a099217fdfd80035f43fc3bd467818acdef7b5af","after":"aee69f5fcc5dda48e33e6566e9068d4fe03c1e30","ref":"refs/heads/main","pushedAt":"2024-05-07T06:12:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"njsmith","name":"Nathaniel J. Smith","path":"/njsmith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/609896?s=80&v=4"},"commit":{"message":"Demonstrate and fix a statsd logging bug","shortMessageHtmlLink":"Demonstrate and fix a statsd logging bug"}},{"before":"31639ec2f4d03aa920b95c84686163901224c6cf","after":"a099217fdfd80035f43fc3bd467818acdef7b5af","ref":"refs/heads/main","pushedAt":"2024-05-07T06:10:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"njsmith","name":"Nathaniel J. Smith","path":"/njsmith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/609896?s=80&v=4"},"commit":{"message":"Set TCP_NODELAY on sockets","shortMessageHtmlLink":"Set TCP_NODELAY on sockets"}},{"before":"155a1f66714f01582ab3d6c0a9bcb01f1b64d684","after":"31639ec2f4d03aa920b95c84686163901224c6cf","ref":"refs/heads/main","pushedAt":"2024-04-11T20:00:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bugfix don't double-access log if the response was sent\n\nThe access log after StreamClosed is meant for requests that are not\nresponded to - usually due to an error that would otherwise go\nunnoticed without this log.","shortMessageHtmlLink":"Bugfix don't double-access log if the response was sent"}},{"before":"c37a9abc10c6282e6006c31c8c4312df34d6d822","after":"155a1f66714f01582ab3d6c0a9bcb01f1b64d684","ref":"refs/heads/main","pushedAt":"2024-04-11T19:49:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"encode headers using latin-1","shortMessageHtmlLink":"encode headers using latin-1"}},{"before":"3fbd5f245e5dfeaba6ad852d9135d6a32b228d05","after":"c37a9abc10c6282e6006c31c8c4312df34d6d822","ref":"refs/heads/main","pushedAt":"2024-04-11T19:45:20.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"fixed all tests","shortMessageHtmlLink":"fixed all tests"}},{"before":"bc39603a06458a6fa7fc7bd7aafee52b08614e88","after":"3fbd5f245e5dfeaba6ad852d9135d6a32b228d05","ref":"refs/heads/main","pushedAt":"2024-01-04T23:14:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Properly set host header to ascii string in ProxyFixMiddleware.","shortMessageHtmlLink":"Properly set host header to ascii string in ProxyFixMiddleware."}},{"before":"b8197d5f5dc1617063b75046fdb772ff9991877e","after":"bc39603a06458a6fa7fc7bd7aafee52b08614e88","ref":"refs/heads/main","pushedAt":"2024-01-01T15:17:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Add max_requests and max_requests_jitter to configuration docs\n\nThis was missed in 7c39c68b61012a3c30979176080861c8b00fb229","shortMessageHtmlLink":"Add max_requests and max_requests_jitter to configuration docs"}},{"before":"f8e4e5de3aec7f8eb986535163c3d5b4f424465c","after":"b8197d5f5dc1617063b75046fdb772ff9991877e","ref":"refs/heads/main","pushedAt":"2024-01-01T14:48:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Fix the year\n\nIt is now 2024!","shortMessageHtmlLink":"Fix the year"}},{"before":"0bb4fb9de5e00dbaece82a6c02617d1d9c0c8e56","after":"f8e4e5de3aec7f8eb986535163c3d5b4f424465c","ref":"refs/heads/main","pushedAt":"2024-01-01T13:50:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"pgjones","name":"Phil Jones","path":"/pgjones","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1391482?s=80&v=4"},"commit":{"message":"Bump and release 0.16.0","shortMessageHtmlLink":"Bump and release 0.16.0"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVkc-nwA","startCursor":null,"endCursor":null}},"title":"Activity ยท pgjones/hypercorn"}