{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":23121600,"defaultBranch":"master","name":"tempesta","ownerLogin":"tempesta-tech","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-08-19T18:44:05.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10939672?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717677235.0","currentOid":""},"activityList":{"items":[{"before":"2e4a18dbad4729ab79f4f47a99f281b2a73ed916","after":"f8b1e532724c490ce9e868ea1e2e56fdf4d300e2","ref":"refs/heads/jinhua/feat-1808-migrate-to-linux-6.8.9","pushedAt":"2024-06-06T13:45:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"fix assembly functions: RET and endbr64-jump-table\n\nProblems:\n\n1. In the new kernel, assembly functions uniformly return from\n `__x86_return_thunk`. However, our assembly code uses the original\n `ret` instruction, so objtool in the kernel will notice this is a naked\n return during compilation.\n\n2. `SYM_FUNC_START` in the new kernel will add endbr64 to the head of\n the assembly function, and all indirect jumps to ENDBR instructions,\n that is, the code snippet within the same function, will fail, but we\n use jump tables in the assembly function to perform indirect jumps. It\n will raise CET exception:\n https://en.wikipedia.org/wiki/X86_instruction_listings#Added_with_Intel_CET).\n\nSolutions:\n\n1. Substitute the `ret` with `RET`, a macro in the new kernel to\n ensure the correct return.\n\n2. `notrack jmp` and enable notrack in CPU setting:\n `wrmsrl(MSR_IA32_S_CET, CET_ENDBR_EN | CET_NO_TRACK_EN)`\n\nAs an aside, interestingly, if a user-mode C program uses a switch\nstatement that meets the conditions for generating a jump table (gcc\nuses `-fcf-protection=full` by default), the generated jump table will\nuse a `jmp` with the `notrack` prefix, and IBT will be marked as `true`\nin the `.note.gnu.property` section of the compiled elf file, so that\nthe `NO_TRACK_EN` of the `MSR` will be set to `true` in user mode when\nthe kernel is loaded. So user mode can use `notrack` to bypass CET\nwithout caring about setting or not setting `NO_TRACK_EN`.","shortMessageHtmlLink":"fix assembly functions: RET and endbr64-jump-table"}},{"before":"7ecd7e4479467df704d1ef7763434ce9a4ae6e7a","after":null,"ref":"refs/heads/ag_2006-handle-https1-and-http2-on-the-same-port","pushedAt":"2024-06-06T12:33:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"biathlon3","name":"AlexandrGoncharov","path":"/biathlon3","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/162549826?s=80&v=4"}},{"before":"6db8760a050ec9f2c27157b79f31501f1a256d92","after":"930ba7dc761f8236424894fddc40cd5cc1c7af7f","ref":"refs/heads/master","pushedAt":"2024-06-06T12:33:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"biathlon3","name":"AlexandrGoncharov","path":"/biathlon3","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/162549826?s=80&v=4"},"commit":{"message":"Handle HTTPS/1 and HTTP/2 on the same port\n\nListen directive extended to allow HTTPS and HTTP/2 \r\non the same port (listen 443 proto=h2,https).\r\nThe protocol, and HTTP/1 or HTTP/2 parsers are defined on ALPN.","shortMessageHtmlLink":"Handle HTTPS/1 and HTTP/2 on the same port"}},{"before":"8daeb3964749d5b276eda2681f22f964b950696b","after":"dbcfe81985939b4a73a7f80bc7a8eacc057f6305","ref":"refs/heads/jinhua/fix-1346-flood","pushedAt":"2024-06-06T10:10:15.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"Merge branch 'master' into jinhua/fix-1346-flood","shortMessageHtmlLink":"Merge branch 'master' into jinhua/fix-1346-flood"}},{"before":"68fbfdc4814d51289d5d7e77832f6f516df580b5","after":"08e3b2a23069aae5a8efbfd9fcc36984ebb9357c","ref":"refs/heads/kt-1103-http","pushedAt":"2024-06-06T07:48:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"const-t","name":"Constantine","path":"/const-t","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/11637150?s=80&v=4"},"commit":{"message":"fix commit [Rework HTTP1 request adjusting]\n\nSkip trailer headers during copying regular headers\nto not duplicate them in headers and in trailer.\n\nHeaders `connection` and `keep-alive` marked as\nhop-by-hop during parsing, it's allowed to remove\nfollowing conditions:\n```\nif (hid == TFW_HTTP_HDR_KEEP_ALIVE\n || hid == TFW_HTTP_HDR_CONNECTION)\n```\ndo only simple `if (tgt->flags & TFW_STR_HBH_HDR)`.\n\n`keep-alive` was marked as HBH before, but only if\n`keep-alive` specified in `connection` header.","shortMessageHtmlLink":"fix commit [Rework HTTP1 request adjusting]"}},{"before":"336b43d1038235cd29ddc55b724e5fa39d038b0d","after":"7ecd7e4479467df704d1ef7763434ce9a4ae6e7a","ref":"refs/heads/ag_2006-handle-https1-and-http2-on-the-same-port","pushedAt":"2024-06-06T05:07:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"biathlon3","name":"AlexandrGoncharov","path":"/biathlon3","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/162549826?s=80&v=4"},"commit":{"message":"The code was changed considering the review.","shortMessageHtmlLink":"The code was changed considering the review."}},{"before":"dfa5448a3de715aceb52c9c5d05a9a51aca88a0b","after":"837e0652db4f6b9d9cf5495d508374797c1eb434","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-05T13:33:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Do not terminate connection in case of STREAM_FSM_RES_TERM_STREAM\n\nPurge stream send queue and do not terminate connection\nin case of STREAM_FSM_RES_TERM_STREAM error.\nAlso free stream->xmit.postponed skbs when connection\nis closed.","shortMessageHtmlLink":"Do not terminate connection in case of STREAM_FSM_RES_TERM_STREAM"}},{"before":"65f6c55bb521cc81ab048ddc42a468572bd3c877","after":"dfa5448a3de715aceb52c9c5d05a9a51aca88a0b","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-05T10:16:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Do not terminate connection in case of STREAM_FSM_RES_TERM_STREAM\n\nPurge stream send queue and do not terminate connection\nin case of STREAM_FSM_RES_TERM_STREAM error.\nAlso free stream->xmit.postponed skbs when connection\nis closed.","shortMessageHtmlLink":"Do not terminate connection in case of STREAM_FSM_RES_TERM_STREAM"}},{"before":"2329816c7719c2de723e530389b1cce0a504f505","after":"65f6c55bb521cc81ab048ddc42a468572bd3c877","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-05T08:50:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Rework and fix sending error response and TCP shutdown\n\nPass ss_action as a new argument to `sk_fill_write_queue`.\nSend TCP shutdown if ss_action is SS_SHUTDOWN (function\nis called from `ss_shutdown`) and there is no pending data\nin our scheduler and do not send it if it is called from\n`ss_do_close`.","shortMessageHtmlLink":"Rework and fix sending error response and TCP shutdown"}},{"before":"4d10da74e697070d2228d9e89e9e028c27dade62","after":"2329816c7719c2de723e530389b1cce0a504f505","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T18:17:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Fix enomem in tls encryption\n\nIn case of TCP segmentation we can catch ENOMEM\nwhen we try to encrypt several skb. The reason\nis that we don't limit count of skb for encryption\nonly the total len. But if the len of each skb is\nequal to 1, count of nents will be equal to\nTLS_MAX_PAYLOAD_SIZE (16384) and sgt list allocation\nfails.","shortMessageHtmlLink":"Fix enomem in tls encryption"}},{"before":"efa4f33df441e83ae471c9d4dbe46a6a0bfbeb4a","after":"4d10da74e697070d2228d9e89e9e028c27dade62","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T17:22:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Add comments and codestyle fixes","shortMessageHtmlLink":"Add comments and codestyle fixes"}},{"before":"3d5730e078fea9b595e5444420abbe7ced7dfede","after":"2e4a18dbad4729ab79f4f47a99f281b2a73ed916","ref":"refs/heads/jinhua/feat-1808-migrate-to-linux-6.8.9","pushedAt":"2024-06-04T17:01:21.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"continue sk->sk_receive_queue processing in case of SO_EE_ORIGIN_TIMESTAMPING","shortMessageHtmlLink":"continue sk->sk_receive_queue processing in case of SO_EE_ORIGIN_TIME…"}},{"before":"858beb800db4d6c9dae7b6a0193baa0dfb4c789c","after":"efa4f33df441e83ae471c9d4dbe46a6a0bfbeb4a","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T12:33:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"852f19ea302994f376b026b6ed52699ba4ad6dab","after":"6db8760a050ec9f2c27157b79f31501f1a256d92","ref":"refs/heads/master","pushedAt":"2024-06-04T11:23:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"krizhanovsky","name":"Alexander Krizhanovsky","path":"/krizhanovsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/884694?s=80&v=4"},"commit":{"message":"Remove now totally unused skb-in-flight statistic","shortMessageHtmlLink":"Remove now totally unused skb-in-flight statistic"}},{"before":"2c54b1cde3d72a0e642d26c7734cfbbefe6518ed","after":"858beb800db4d6c9dae7b6a0193baa0dfb4c789c","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T10:19:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Update linux kernel patch TMP","shortMessageHtmlLink":"Update linux kernel patch TMP"}},{"before":"d8d7ba704c07aacb1e0b807cab1d35929e02c8b2","after":"2c54b1cde3d72a0e642d26c7734cfbbefe6518ed","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T10:18:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"b647cefabe49cb4d28b93805815e9d4262bfbaae","after":"d8d7ba704c07aacb1e0b807cab1d35929e02c8b2","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T10:16:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"dedbce703235ea20f5e692b62a4eccd4df37f774","after":null,"ref":"refs/heads/jinhua/fix-2036-stats","pushedAt":"2024-06-04T09:57:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"}},{"before":"78e84b7478219180df7a22925eeb551070616d05","after":"852f19ea302994f376b026b6ed52699ba4ad6dab","ref":"refs/heads/master","pushedAt":"2024-06-04T09:56:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"fix(2036): fix statistics bugs (#2109)\n\nfix(2036): fix statistics bugs\r\n\r\n1. Correct max/min type and max value updating. The maximum value is not updated due to type incompatibility. The 0 of unsigned long will be cast into 4294967295 of unsigned int, then 0 will always be bigger than any value of unsigned int, so the maximum value is never updated if the minimum value keeps growing down.\r\n2. remove inaccurate skb-in-flight counter\r\n3. Use actual max val in histogram if approx is bigger than it, because the bounds are a logical approximation and it may be larger than the maximum value.","shortMessageHtmlLink":"fix(2036): fix statistics bugs (#2109)"}},{"before":"6662eb1fd4d215e3b8e6aec1e3231a30dc2d5710","after":"b647cefabe49cb4d28b93805815e9d4262bfbaae","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-04T09:31:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"a5d32138296eb1813076ebe85d3ee56f6dab0d33","after":"e3886671f276236e1044664ecd858f71c783602c","ref":"refs/heads/en/fix-2033","pushedAt":"2024-06-04T07:33:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"enuribekov-tempesta","name":null,"path":"/enuribekov-tempesta","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/161616945?s=80&v=4"},"commit":{"message":"Move node-cpu map initialization.\n\nBecause c_nodes array changed from static to dynamically allocated,\nwe should call tfw_init_node_cpus() before any access to it.\nStrictly speaking opening database and saving it descriptor to array\nalso should be moved to tfw_init_node_cpus().","shortMessageHtmlLink":"Move node-cpu map initialization."}},{"before":"2c84070a9086d75adac54897b6f40ecf6225e5c4","after":"6662eb1fd4d215e3b8e6aec1e3231a30dc2d5710","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-03T17:35:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"TMP","shortMessageHtmlLink":"TMP"}},{"before":"50a3a6cc71a8ae1128a61d241f1230dc372693b1","after":"2c84070a9086d75adac54897b6f40ecf6225e5c4","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-03T13:54:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"9956d6b665fb1ca9f7fc0e2d98917c679edd917d","after":"dedbce703235ea20f5e692b62a4eccd4df37f774","ref":"refs/heads/jinhua/fix-2036-stats","pushedAt":"2024-06-03T13:37:37.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"Merge branch 'master' into jinhua/fix-2036-stats","shortMessageHtmlLink":"Merge branch 'master' into jinhua/fix-2036-stats"}},{"before":"c1d13389c21cd7c8c989a018ba7eabaac0b9cb89","after":null,"ref":"refs/heads/MekhanikEvgenii/fix-if-conn-new-failed","pushedAt":"2024-06-03T13:32:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"}},{"before":"ebba9779c1dbcf6c2250cf8158b0a35236e511f4","after":"78e84b7478219180df7a22925eeb551070616d05","ref":"refs/heads/master","pushedAt":"2024-06-03T13:32:49.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Remove custom error injection and use fail function\n\nWe should use kernel error injection mechanizm\nbased on fail function and debugfs. Add examples\nof error injection for two functions. For further\ninformation look at the\nhttps://docs.kernel.org/fault-injection/fault-injection.html)","shortMessageHtmlLink":"Remove custom error injection and use fail function"}},{"before":"574179b2c4f178a790a1ddabbd63b2d48de3b7ad","after":"8daeb3964749d5b276eda2681f22f964b950696b","ref":"refs/heads/jinhua/fix-1346-flood","pushedAt":"2024-06-03T13:32:07.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"Merge branch 'master' into jinhua/fix-1346-flood","shortMessageHtmlLink":"Merge branch 'master' into jinhua/fix-1346-flood"}},{"before":"302ea8c35dde7b9a46825a66f67f841e1219a02a","after":"574179b2c4f178a790a1ddabbd63b2d48de3b7ad","ref":"refs/heads/jinhua/fix-1346-flood","pushedAt":"2024-06-03T13:31:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kingluo","name":"jinhua luo","path":"/kingluo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4401042?s=80&v=4"},"commit":{"message":"fix T_WARN","shortMessageHtmlLink":"fix T_WARN"}},{"before":"e6c1e4fac6243c49e1fc9bc219dcb7599c34a82e","after":"50a3a6cc71a8ae1128a61d241f1230dc372693b1","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-03T13:00:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Move some http2 related logic to separate files","shortMessageHtmlLink":"Move some http2 related logic to separate files"}},{"before":"650b2adc4336287664ad88fe11ae5cc7bd81a2d4","after":"e6c1e4fac6243c49e1fc9bc219dcb7599c34a82e","ref":"refs/heads/MekhanikEvgenii/1196-itog-2","pushedAt":"2024-06-03T12:11:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EvgeniiMekhanik","name":null,"path":"/EvgeniiMekhanik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/122307047?s=80&v=4"},"commit":{"message":"Rework send window calculation for making frames\n\n- Ajust counf of skbs, which were previously (during making\n frames) pushed to socket write queue. In `tcp_write_xmit`\n main loop `cong_win` is calculated on each loop iteration\n and if we calculate `cong_win` for making frames without\n taking into account previously pushed skbs we push more\n data into socket write queue then we can send.\n- Other frames (from any stream) MUST NOT occur between\n the HEADERS frame and any CONTINUATION frames that might\n follow. So add such frames to postponed list and send\n them later.","shortMessageHtmlLink":"Rework send window calculation for making frames"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXj7gBwA","startCursor":null,"endCursor":null}},"title":"Activity · tempesta-tech/tempesta"}