From 2e7207fd23a076c3698bc4e8b87e533274f47288 Mon Sep 17 00:00:00 2001 From: flamingcow Date: Sat, 4 May 2019 23:54:38 -0700 Subject: [PATCH] Remove redundant files, break build --- afl.sh | 6 - ...25e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b | Bin 123 -> 0 bytes ...8b435776eb0732660dd0a07fdef48764beacb67a99 | Bin 41 -> 0 bytes ...0175b1b0d77d13d2b3cc68a79121d9f2644b78d099 | Bin 31 -> 0 bytes ...4389df7b72ace63e83f25640bbee8425e15dd0cde3 | Bin 56 -> 0 bytes ...c20f35261a9e43fbdf4238b57064f0b47c3f28110e | Bin 64 -> 0 bytes ...0059ad04875ee66b2abebf489a7feda6cd3d6fe051 | Bin 46 -> 0 bytes ...9fe51cc844e174d86e37d87903530754e1f14ecb45 | Bin 96 -> 0 bytes ...171cab81359608b47e06b07d52ea353eada90a3b2e | Bin 56 -> 0 bytes ...ec9c7e7b40c6e8812d08926d18c79485f59fab348a | Bin 32 -> 0 bytes ...effeeba6be045e5dc5b9f548ba206341f3dfb331ce | Bin 26 -> 0 bytes ...09d574063838b15bfa3b4c1cf2cbd57b762a5385bb | Bin 2096 -> 0 bytes ...d9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 | Bin 25 -> 0 bytes ...b44f64fb2db8405c1404b9d5d57c28cdc9f837a095 | Bin 552 -> 0 bytes ...ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 | Bin 16 -> 0 bytes ...7c56aaf687dcaa03e787480cf08d3e294c7adb789e | Bin 24 -> 0 bytes ...642064c60d7b836cf51b25e3e63ebc15c4040df0fd | Bin 24 -> 0 bytes ...61c044a67531aa45cf98e3a4d9cfa70613e95aaa88 | Bin 108 -> 0 bytes ...38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 | Bin 48 -> 0 bytes ...9a496ca36f3678ce5a10eea1c22841ba47e0e67d93 | Bin 268 -> 0 bytes ...514d7ed7018c6771337de049a6e18afb4e964206cc | Bin 190 -> 0 bytes ...001cf40ae0649be9dfd3b67eaaa88251fd6a3e8375 | Bin 85 -> 0 bytes ...c09747cffa65b988e67812abac5a9da9684000a37a | Bin 371 -> 0 bytes ...93209d4af8c282a3178901846758fdaf032541ae35 | Bin 26 -> 0 bytes ...a9f2669918900a42373b17d0451013ab015aebc11a | Bin 9 -> 0 bytes ...11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 | Bin 182 -> 0 bytes ...eea75fdd9e570e9a147476478a0baec24a51fc061c | Bin 72 -> 0 bytes ...2244d03a274bc169ca16dc1b230ccf045051fcb09c | Bin 88 -> 0 bytes ...76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d | Bin 120 -> 0 bytes ...e219463d3bc1bd43843d97e87bf44cf7c0698aba4d | Bin 9 -> 0 bytes ...03e295f669ea2061260df472f66e1cf8a2f93f9963 | Bin 80 -> 0 bytes ...9dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc | Bin 300 -> 0 bytes ...be29692b866a73ab61ace36b2fba1deb63f5e834e6 | Bin 104 -> 0 bytes ...bdfa2d621e824e788e6801fccb6c94c9221e7555fc | Bin 304 -> 0 bytes ...e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab | Bin 88 -> 0 bytes ...78f1f5267b00201c60e4ea05dca190a2bf208ec84b | Bin 528 -> 0 bytes ...8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 | Bin 49 -> 0 bytes ...2b058540fef909f305b84188d8b8ff7fa2a4a2f046 | Bin 239 -> 0 bytes ...e5ec76b5595d135f68cfc2d9f1e84931374cc2683e | Bin 56 -> 0 bytes ...746254aeb71939d68e80d34e6453e9b79117001bb8 | Bin 160 -> 0 bytes ...0e3477dbe2da02981ebf1df321b185b4c81594fc30 | Bin 232 -> 0 bytes ...d38995054df14892f592a548590779323628d97ee7 | Bin 144 -> 0 bytes ...0c30cd6d00e46894b530886f855a9ff77b3b4e9f28 | Bin 9 -> 0 bytes ...46d350462a8eb603cdb8ff607afc632ac722fe860c | Bin 131 -> 0 bytes buffer.cc | 79 ---------- buffer.h | 49 ------ example_simple.cc | 19 --- fastcgi.cc | 113 -------------- fastcgi.h | 23 --- fastcgi_conn.cc | 143 ------------------ fastcgi_conn.h | 29 ---- fastcgi_conn_afl.cc | 18 --- fastcgi_parse.cc | 7 - fastcgi_parse.h | 47 ------ fastcgi_request.cc | 107 ------------- fastcgi_request.h | 38 ----- stream_buffer.cc | 14 -- stream_buffer.h | 13 -- 58 files changed, 705 deletions(-) delete mode 100755 afl.sh delete mode 100644 afl_state/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b delete mode 100644 afl_state/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 delete mode 100644 afl_state/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 delete mode 100644 afl_state/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 delete mode 100644 afl_state/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e delete mode 100644 afl_state/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 delete mode 100644 afl_state/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 delete mode 100644 afl_state/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e delete mode 100644 afl_state/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a delete mode 100644 afl_state/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce delete mode 100644 afl_state/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb delete mode 100644 afl_state/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 delete mode 100644 afl_state/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 delete mode 100644 afl_state/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 delete mode 100644 afl_state/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e delete mode 100644 afl_state/testcases/6d0fd877b23fbda56ba5c9642064c60d7b836cf51b25e3e63ebc15c4040df0fd delete mode 100644 afl_state/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 delete mode 100644 afl_state/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 delete mode 100644 afl_state/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 delete mode 100644 afl_state/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc delete mode 100644 afl_state/testcases/768986e1087fe968f65838001cf40ae0649be9dfd3b67eaaa88251fd6a3e8375 delete mode 100644 afl_state/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a delete mode 100644 afl_state/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 delete mode 100644 afl_state/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a delete mode 100644 afl_state/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 delete mode 100644 afl_state/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c delete mode 100644 afl_state/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c delete mode 100644 afl_state/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d delete mode 100644 afl_state/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d delete mode 100644 afl_state/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 delete mode 100644 afl_state/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc delete mode 100644 afl_state/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 delete mode 100644 afl_state/testcases/bbab38731506afc10241edbdfa2d621e824e788e6801fccb6c94c9221e7555fc delete mode 100644 afl_state/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab delete mode 100644 afl_state/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b delete mode 100644 afl_state/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 delete mode 100644 afl_state/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 delete mode 100644 afl_state/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e delete mode 100644 afl_state/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 delete mode 100644 afl_state/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 delete mode 100644 afl_state/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 delete mode 100644 afl_state/testcases/f4ab1cb7fb2de87e60d33e0c30cd6d00e46894b530886f855a9ff77b3b4e9f28 delete mode 100644 afl_state/testcases/fb89ee72a9399c6bec2ff246d350462a8eb603cdb8ff607afc632ac722fe860c delete mode 100644 buffer.cc delete mode 100644 buffer.h delete mode 100644 example_simple.cc delete mode 100644 fastcgi.cc delete mode 100644 fastcgi.h delete mode 100644 fastcgi_conn.cc delete mode 100644 fastcgi_conn.h delete mode 100644 fastcgi_conn_afl.cc delete mode 100644 fastcgi_parse.cc delete mode 100644 fastcgi_parse.h delete mode 100644 fastcgi_request.cc delete mode 100644 fastcgi_request.h delete mode 100644 stream_buffer.cc delete mode 100644 stream_buffer.h diff --git a/afl.sh b/afl.sh deleted file mode 100755 index b486422..0000000 --- a/afl.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -ex - -cd $(dirname $0) - -make afl -afl-fuzz -i afl_state/testcases -o afl_state/findings -- ./fastcgi_conn_afl diff --git a/afl_state/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b b/afl_state/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b deleted file mode 100644 index bd7a9d3ba6043e0d50450cfd1f56ee465e7d3747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df&cI;62v*MmR}WGGmXpKOgQOj%3aHxvYLfu~ DdwLJU diff --git a/afl_state/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 b/afl_state/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 deleted file mode 100644 index 574b77434bc222985293d8d3585e3361f54bb805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 fcmZQ%WH4ah0AfZ1FkoZ_u^9{u7+F9P25<=gMLGlF diff --git a/afl_state/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 b/afl_state/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 deleted file mode 100644 index 406e0817e8d669a8a09fbe260659b5ddf134048b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 bcmZQ%WH4ah0AfZ1FkoacFkoPZuz@51Eq?>3 diff --git a/afl_state/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 b/afl_state/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 deleted file mode 100644 index 02cd8fa34dd5a7cbaf92177224f0736acc0a8e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ%WH4ah0AfZ1FkoZ_vKbf*7;%V0R2dim0D%GpV*mgE diff --git a/afl_state/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e b/afl_state/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e deleted file mode 100644 index e2c27936c4a3bb07be7b12d605f9760cfcba51c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 fcmZQ%WH4ah0AfZ1FkoZ>vNa407zhA}Y6AlRc|rrp diff --git a/afl_state/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 b/afl_state/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 deleted file mode 100644 index 91e8aae9f041d179ad530bb2a6702bd966c53120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 hcmZQ%WH4ah0AfZ1FkoZ>viTSc7=e5S4u}|n1OQ{%1!({P diff --git a/afl_state/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 b/afl_state/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 deleted file mode 100644 index ee84c9b492a424e05f0388f920051f9a11a46744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 ecmZQ%WH4ah0AfZ1FkoZ_vKbf*7^xy|U;qGdBM0>W diff --git a/afl_state/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e b/afl_state/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e deleted file mode 100644 index 8842abbac83271d5f62bd90cc9ffac4b1c91f54f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 gcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df&VUdH0IPHc=l}o! diff --git a/afl_state/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a b/afl_state/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a deleted file mode 100644 index 1769f8b4e2c6ff29430edb331df7897ba7fef846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ZcmZQ%G%#S`U@%|+(jdSH<^#o`d;l~I1E&B0 diff --git a/afl_state/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce b/afl_state/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce deleted file mode 100644 index 20210f72c226bdc5edbcec66f4206d6b34caa98b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26 YcmZQ%WH4ah0AfZ1FkoZ>vY9|k02_V+g8%>k diff --git a/afl_state/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb b/afl_state/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb deleted file mode 100644 index 681909764886265ea7d3ed1f617874e22d13dad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2096 zcmZQ%WH4ah0AfZ1Fkob1FyIhiFkl4o86ZL=kPM?>Gz3ONVAzBJ=|#Y>@%pGoMnhmU L1mGb6YXkrQhv*hd diff --git a/afl_state/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 b/afl_state/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 deleted file mode 100644 index c0fffd2b448085b0c4ebaf49acd05047d5463fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25 VcmZQ%WH4ah0AfZ1FkobbvH=+X0#g70 diff --git a/afl_state/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 b/afl_state/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 deleted file mode 100644 index e934f88f5b138292ae3863ac6050ecf3e713a7d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmZQ%WH4ah0AfZ1FkoZ>vKbf*7}3R9A?hHi3=A02`Q+*YnIpgeGZs$M+#TrtBiH@p Q>KiD3qsJQ|cR*tV05DKHp#T5? diff --git a/afl_state/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 b/afl_state/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 deleted file mode 100644 index 8353483545ef26831addc336e2261fdf14cb07da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQ%G%#S`0Ae5w0ssvj0qg(( diff --git a/afl_state/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e b/afl_state/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e deleted file mode 100644 index 78f2c4968c8e038f36cec6cf222b0c5d5a6d785d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 bcmZQ%G%#S`U@%|+(jdUdYQVt2U|;|M8uvKb5v02ZPGApigX diff --git a/afl_state/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 b/afl_state/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 deleted file mode 100644 index 17f5084d58216433544c44355443932473c71ed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 ncmZQ%WH4ah0AfZ1FkoZ>viTVdz`_tA0|N#Ia)d$pkbwaJ4QB}F diff --git a/afl_state/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 b/afl_state/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 deleted file mode 100644 index be69bc480ece60bd56cd1ebbb8cfc93ae891ae80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 jcmZQ%WH4ah0AfZ1Fkobb@F6?{14b4Q-vA`f00agAY>WhW diff --git a/afl_state/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 b/afl_state/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 deleted file mode 100644 index 65c353a8344e810511b4e8896154fecb0fab87c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 jcmZQ%WH4ah0AfZ1FkoZ>vcDJ@fP@DO7%)H_LuV2IT<#fW diff --git a/afl_state/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc b/afl_state/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc deleted file mode 100644 index 4b92cfbdf5b7b3a215f410805036452768cbdac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmZQ%WH4ah0AfZ1FkoZ>vKbf*7}3R9A?hHi3=9~t@#Pp`(l}_Wx`4LB09alC!AB8C IQU?viTVdz`_tA0|N#Iyuu&_3^27I8URf{2+9Be diff --git a/afl_state/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a b/afl_state/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a deleted file mode 100644 index 3cd488dbfb75c28225895fb7f6ab86b7be5a0c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df4pavNSoyg0kt$BMJqj@A5lu4^>wj$O(A|m4 LpUjAG13C-<`V}&f diff --git a/afl_state/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 b/afl_state/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 deleted file mode 100644 index 891759538dae4ebab5bfce2fce267fe8e258a787..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26 acmZQ%WH4ah0AfZ1FkoZ>vY8AF7#IK=?gAqK diff --git a/afl_state/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a b/afl_state/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a deleted file mode 100644 index 5e92dba39275f9d2f5fe04cbb3034c41bb368d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9 QcmZQ%H85acG%zp#00Yhd_y7O^ diff --git a/afl_state/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 b/afl_state/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 deleted file mode 100644 index 3ce56f94404f75e398892a132c58418dcb51f8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df&cI;62v*MmR}WGGmXpKOgQOj%3ZDshZ8ZS8 H5@8+y$~+df diff --git a/afl_state/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c b/afl_state/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c deleted file mode 100644 index 6573cc719d509a4ccaa6112fd18c2df8cd6168ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 acmZQ%G%#S`U@%|+(jdS{A|Im5zyJUdPY7)Q diff --git a/afl_state/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c b/afl_state/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c deleted file mode 100644 index 1964562afc7ea77ae566e07124170063623c65d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 acmZQ%G%#S`U@%|+(jdS{As=FjfdK%SB?>42 diff --git a/afl_state/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d b/afl_state/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d deleted file mode 100644 index 8f66d2c3c197c12bb661a96cc5d93d5c731034f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 ncmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df4pavNSouWggXsqVXIc-! diff --git a/afl_state/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d b/afl_state/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d deleted file mode 100644 index 0864eea26cebc229138fedecef123989959f1fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9 QcmZQ%F)(0YG%zp#00YJV_W%F@ diff --git a/afl_state/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 b/afl_state/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 deleted file mode 100644 index d8e63557afa3ae60a793b629af6efb64a3244671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 gcmZQ%WH4ah0AfZ1FkoZ_vKbf*7)ca|=r%9_00a^TQ~&?~ diff --git a/afl_state/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc b/afl_state/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc deleted file mode 100644 index 3e9213ebc9cb363626ceff9e163d4c53f8d1b1ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df&cI;62v*MmR}WGGmXpKOgQOj%3T}c3iV3JH Qp(fJ7608d*dng9R* diff --git a/afl_state/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 b/afl_state/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 deleted file mode 100644 index f4e6095a8d907628850d17a2bf635ef59deecf1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 vcmZQ%WH4ah0AfZ1FkoZ>vKbf*7_o^9fW!@e>LF@@ECvj9tU&!hb?5*9vKbf*7}3R9A?hHi3=A02`Q+*YnIpgeGZsz{I(I-_1^~S# BAzlCg diff --git a/afl_state/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab b/afl_state/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab deleted file mode 100644 index 84ea21b31424645a0cc1b1378bcc1f980a7e126e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 hcmZQ%WH4ah0AfZ1Fkobb@F6?{14e@K1}OSr`T&og3N8Qu diff --git a/afl_state/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b b/afl_state/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b deleted file mode 100644 index e0bdbd3a5132d7be0ca2ad5dedfb43500b7de907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df4pavNSoyg0kt$BMJqj@A5lu5v;(t>8MY4K2 I`Ue_f0Pm?v#Q*>R diff --git a/afl_state/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 b/afl_state/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 deleted file mode 100644 index 59e5208344c4e76783391e964d9cea1b74e35962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 hcmZQ%WH4ah0AfZ1FkoZ_u^9{u7=Z%F5)f$v0|0A%1zrFE diff --git a/afl_state/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 b/afl_state/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 deleted file mode 100644 index 392cfdd79212cd3475e0e04117672441e61d0038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmZQ%WH4ah0AfZ1FkoZ_vIQ6*93&Df&cI;62v*MmR}WGGmXpKOgQOj%3aA@u1bwXp I+7I?20E>to1poj5 diff --git a/afl_state/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e b/afl_state/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e deleted file mode 100644 index 305e73775e7885035636928ef00ad1335f4e475f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56 qcmXwtK?(pM0D}|?I`)+P|8dl>_yoq(zYbBiR@Iwxdv<1-s diff --git a/afl_state/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 b/afl_state/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 deleted file mode 100644 index c3ced6f614484791bdc3263a24c9ca815d752021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 rcmZQ%WH4ah0AfZ1FkoZ>vKbf*7)cQq0I4?sngcNd$YP*aKh!7yN`wyf diff --git a/afl_state/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 b/afl_state/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 deleted file mode 100644 index 0a90e28f2bb619878369bed06e75f31ff7074180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 ocmZQ%WH4ah0AfZ1FkoZ_vKbf*7;%alpsL5IZg7|j@s)uA0PB1de*gdg diff --git a/afl_state/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 b/afl_state/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 deleted file mode 100644 index a9a27916fa08d8794732eb2bb7260d40552dfa49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 vcmZQ%WH4ah0AfZ1FkoZ>vKbf*7_o^9fW!@e>LF@@EC#IVNYamNo`C@XlviTVdz`_tA0|N#IDheBb&1Qg^ZD0TZ8mSER diff --git a/buffer.cc b/buffer.cc deleted file mode 100644 index 69d8e41..0000000 --- a/buffer.cc +++ /dev/null @@ -1,79 +0,0 @@ -#include "buffer.h" - -ConstBuffer::ConstBuffer(const char *buf, size_t len) - : const_buf_(buf), - len_(len) {} - -size_t ConstBuffer::ReadMaxLen() const { - return len_ - start_; -} - -const char *ConstBuffer::Read(size_t len) { - if (ReadMaxLen() < len) { - return nullptr; - } - const auto *ret = &const_buf_[start_]; - start_ += len; - return ret; -} - -bool ConstBuffer::Discard(size_t len) { - if (len > ReadMaxLen()) { - return false; - } - static_cast(Read(len)); - return true; -} - -void ConstBuffer::ResetRead() { - start_ = commit_; -} - -void ConstBuffer::Commit() { - commit_ = start_; -} - - -Buffer::Buffer(char *buf, size_t size, size_t len) - : ConstBuffer(buf, size), - buf_(buf), - size_(size) { - len_ = len; -} - -Buffer::Buffer(size_t size) - : Buffer(new char[size], size, 0) { - own_buf_.reset(buf_); -} - -char *Buffer::WritePtr() { - return &buf_[len_]; -} - -size_t Buffer::WriteMaxLen() const { - return size_ - len_; -} - -bool Buffer::Write(const std::string_view& str) { - if (WriteMaxLen() < str.size()) { - return false; - } - memcpy(WritePtr(), str.data(), str.size()); - Wrote(str.size()); - return true; -} - -void Buffer::Wrote(size_t len) { - CHECK_LE(len, WriteMaxLen()); - len_ += len; -} - -void Buffer::Consume() { - if (commit_ == 0) { - return; - } - memmove(buf_, &buf_[commit_], len_ - commit_); - len_ -= commit_; - start_ -= commit_; - commit_ = 0; -} diff --git a/buffer.h b/buffer.h deleted file mode 100644 index 1d11aa2..0000000 --- a/buffer.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include -#include -#include - -class ConstBuffer { - public: - ConstBuffer(const char *buf, size_t len); - - [[nodiscard]] size_t ReadMaxLen() const; - [[nodiscard]] virtual const char *Read(size_t len); - template [[nodiscard]] const T *ReadObj(); - - bool Discard(size_t len); // like Read() but don't use the result - void ResetRead(); // next read from last commit - void Commit(); // commit read position - - protected: - const char *const_buf_; - size_t len_; - size_t start_ = 0; - size_t commit_ = 0; -}; - -class Buffer : public ConstBuffer { - public: - Buffer(char *buf, size_t size, size_t len); - Buffer(size_t size); - - [[nodiscard]] char *WritePtr(); - [[nodiscard]] size_t WriteMaxLen() const; - bool Write(const std::string_view& str); - void Wrote(size_t len); - - void Consume(); // discard up to last commit - - protected: - std::unique_ptr own_buf_; - char *buf_; - const size_t size_; -}; - -template const T *ConstBuffer::ReadObj() { - if (ReadMaxLen() < sizeof(T)) { - return nullptr; - } - return reinterpret_cast(Read(sizeof(T))); -} diff --git a/example_simple.cc b/example_simple.cc deleted file mode 100644 index eac081b..0000000 --- a/example_simple.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -#include "fastcgi.h" - -DEFINE_int32(port, 9000, "TCP port to bind"); -DEFINE_int32(threads, 1, "Number of server threads"); - -int main(int argc, char *argv[]) { - google::InitGoogleLogging(argv[0]); - gflags::ParseCommandLineFlags(&argc, &argv, true); - - FastCGIServer server(FLAGS_port, [](std::unique_ptr request) { - request->WriteHeader("Content-Type", "text/plain"); - request->WriteBody("Hello world"); - request->End(); - }, FLAGS_threads); - server.Serve(); -} diff --git a/fastcgi.cc b/fastcgi.cc deleted file mode 100644 index db33226..0000000 --- a/fastcgi.cc +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "fastcgi.h" -#include "fastcgi_conn.h" - -FastCGIServer::FastCGIServer(int port, const std::function)>& callback, int threads, const std::unordered_set& headers) - : port_(port), - callback_(callback), - threads_(threads), - headers_(headers) { - LOG(INFO) << "listening on [::1]:" << port_; - - signal(SIGPIPE, SIG_IGN); -} - -void FastCGIServer::Serve() { - std::vector threads; - for (int i = 0; i < threads_ - 1; ++i) { - threads.emplace_back([this]() { ServeInt(); }); - } - ServeInt(); -} - -void FastCGIServer::ServeInt() { - auto epoll_fd = epoll_create1(0); - PCHECK(epoll_fd >= 0) << "epoll_create()"; - - auto listen_sock = NewListenSock(); - - { - struct epoll_event ev{ - .events = EPOLLIN, - .data = { - .ptr = nullptr, - }, - }; - PCHECK(epoll_ctl(epoll_fd, EPOLL_CTL_ADD, listen_sock, &ev) == 0); - } - - while (true) { - constexpr auto max_events = 256; - struct epoll_event events[max_events]; - auto num_fd = epoll_wait(epoll_fd, events, max_events, -1); - if (num_fd == -1 && errno == EINTR) { - continue; - } - PCHECK(num_fd > 0) << "epoll_wait()"; - - for (auto i = 0; i < num_fd; ++i) { - if (events[i].data.ptr == nullptr) { - NewConn(listen_sock, epoll_fd); - } else { - auto conn = static_cast(events[i].data.ptr); - auto fd = conn->Read(); - if (fd != -1) { - PCHECK(epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, nullptr) == 0); - delete conn; - } - } - } - } -} - -void FastCGIServer::NewConn(int listen_sock, int epoll_fd) { - sockaddr_in6 client_addr; - socklen_t client_addr_len = sizeof(client_addr); - - auto client_sock = accept(listen_sock, (sockaddr*) &client_addr, &client_addr_len); - PCHECK(client_sock >= 0) << "accept()"; - CHECK_EQ(client_addr.sin6_family, AF_INET6); - - int flags = 1; - PCHECK(setsockopt(client_sock, SOL_TCP, TCP_NODELAY, &flags, sizeof(flags)) == 0); - - { - auto *conn = new FastCGIConn(client_sock, client_addr, callback_, headers_); - struct epoll_event ev{ - .events = EPOLLIN, - .data = { - .ptr = conn, - }, - }; - PCHECK(epoll_ctl(epoll_fd, EPOLL_CTL_ADD, client_sock, &ev) == 0); - } -} - -int FastCGIServer::NewListenSock() { - auto sock = socket(AF_INET6, SOCK_STREAM, 0); - PCHECK(sock >= 0) << "socket()"; - - { - int optval = 1; - PCHECK(setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)) == 0); - } - - { - sockaddr_in6 bind_addr = { - .sin6_family = AF_INET6, - .sin6_port = htons(port_), - .sin6_addr = IN6ADDR_LOOPBACK_INIT, - }; - PCHECK(bind(sock, (sockaddr*) &bind_addr, sizeof(bind_addr)) == 0); - } - - PCHECK(listen(sock, 128) == 0); - return sock; -} diff --git a/fastcgi.h b/fastcgi.h deleted file mode 100644 index bba8699..0000000 --- a/fastcgi.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "fastcgi_request.h" - -class FastCGIServer { - public: - FastCGIServer(int port, const std::function)>& callback, int threads=1, const std::unordered_set& headers={}); - void Serve(); - - private: - void NewConn(int listen_sock, int epoll_fd); - int NewListenSock(); - void ServeInt(); - - const int port_; - const std::function)> callback_; - const int threads_; - const std::unordered_set headers_; -}; diff --git a/fastcgi_conn.cc b/fastcgi_conn.cc deleted file mode 100644 index 54fbccc..0000000 --- a/fastcgi_conn.cc +++ /dev/null @@ -1,143 +0,0 @@ -#include -#include -#include - -#include "fastcgi_conn.h" - -#include "fastcgi_parse.h" -#include "fastcgi_request.h" - -FastCGIConn::FastCGIConn(int sock, const sockaddr_in6& client_addr, const std::function)>& callback, const std::unordered_set& headers) - : sock_(sock), - callback_(callback), - headers_(headers), - buf_(sock, fastcgi_max_record_len) { - char client_addr_str[INET6_ADDRSTRLEN]; - PCHECK(inet_ntop(AF_INET6, &client_addr.sin6_addr, client_addr_str, sizeof(client_addr_str))); - - LOG(INFO) << "new connection: [" << client_addr_str << "]:" << ntohs(client_addr.sin6_port); -} - -FastCGIConn::~FastCGIConn() { - PCHECK(close(sock_) == 0); - LOG(INFO) << "connection closed (handled " << requests_ << " requests)"; -} - -bool FastCGIConn::Write(const std::vector& vecs) { - ssize_t total_size = 0; - for (const auto& vec : vecs) { - total_size += vec.iov_len; - } - return writev(sock_, vecs.data(), vecs.size()) == total_size; -} - -int FastCGIConn::Read() { - if (!buf_.Refill()) { - return sock_; - } - - while (true) { - buf_.ResetRead(); - - const auto *header = buf_.ReadObj(); - if (!header) { - break; - } - - if (header->version != 1) { - LOG(ERROR) << "invalid FastCGI protocol version: " << header->version; - return sock_; - } - - if (buf_.ReadMaxLen() < header->ContentLength()) { - break; - } - - switch (header->type) { - case 1: - { - if (header->ContentLength() != sizeof(FastCGIBeginRequest)) { - LOG(ERROR) << "FCGI_BeginRequestBody is the wrong length: " << header->ContentLength(); - return sock_; - } - - const auto *begin_request = CHECK_NOTNULL(buf_.ReadObj()); - - if (begin_request->Role() != 1) { - LOG(ERROR) << "unsupported FastCGI role: " << begin_request->Role(); - return sock_; - } - - request_.reset(new FastCGIRequest(header->RequestId(), this)); - } - break; - - case 4: - { - if (request_ == nullptr || header->RequestId() != request_->RequestId()) { - LOG(ERROR) << "out of order FCGI_PARAMS record, or client is multiplexing requests (which we don't support)"; - return sock_; - } - - ConstBuffer param_buf(buf_.Read(header->ContentLength()), header->ContentLength()); - while (param_buf.ReadMaxLen() > 0) { - const auto *param_header = param_buf.ReadObj(); - if (!param_header) { - LOG(ERROR) << "FCGI_PARAMS missing header"; - return sock_; - } - - const auto *key_buf = param_buf.Read(param_header->key_length); - if (!key_buf) { - LOG(ERROR) << "FCGI_PARAMS missing key"; - return sock_; - } - std::string_view key(key_buf, param_header->key_length); - - const auto *value_buf = param_buf.Read(param_header->value_length); - if (!value_buf) { - LOG(ERROR) << "FCGI_PARAMS missing value"; - return sock_; - } - std::string_view value(value_buf, param_header->value_length); - - if (headers_.find(key) != headers_.end()) { - request_->AddParam(key, value); - } - } - } - break; - - case 5: - { - if (request_ == nullptr || header->RequestId() != request_->RequestId()) { - LOG(ERROR) << "out of order FCGI_STDIN record, or client is multiplexing requests (which we don't support)"; - return sock_; - } - - if (header->ContentLength() == 0) { - // Magic signal for completed request (mirrors the HTTP/1.1 protocol) - requests_++; - callback_(std::move(request_)); - } else { - std::string_view in(buf_.Read(header->ContentLength()), header->ContentLength()); - request_->AddIn(in); - } - } - break; - - default: - LOG(ERROR) << "unknown record type: " << header->type; - return sock_; - } - - if (!buf_.Discard(header->padding_length)) { - break; - } - - buf_.Commit(); // we've acted on the bytes read so far - } - - buf_.Consume(); - return -1; -} diff --git a/fastcgi_conn.h b/fastcgi_conn.h deleted file mode 100644 index 3f0a964..0000000 --- a/fastcgi_conn.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "fastcgi_request.h" -#include "stream_buffer.h" - -class FastCGIConn { - public: - FastCGIConn(int sock, const sockaddr_in6& client_addr, const std::function)>& callback, const std::unordered_set& headers); - ~FastCGIConn(); - - [[nodiscard]] int Read(); - [[nodiscard]] bool Write(const std::vector& vecs); - - private: - const int sock_; - const std::function)>& callback_; - const std::unordered_set& headers_; - - uint64_t requests_ = 0; - - StreamBuffer buf_; - - std::unique_ptr request_; -}; diff --git a/fastcgi_conn_afl.cc b/fastcgi_conn_afl.cc deleted file mode 100644 index da8d4d6..0000000 --- a/fastcgi_conn_afl.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include "fastcgi_conn.h" - -int main(int argc, char* argv[]) { - FLAGS_logtostderr = 1; - FLAGS_minloglevel = 3; - google::InitGoogleLogging(argv[0]); - gflags::ParseCommandLineFlags(&argc, &argv, true); - - { - FastCGIConn conn(STDIN_FILENO, {}, [](std::unique_ptr req) { req->End(); }, {}); - static_cast(conn.Read()); - } - - gflags::ShutDownCommandLineFlags(); - google::ShutdownGoogleLogging(); - - return 0; -} diff --git a/fastcgi_parse.cc b/fastcgi_parse.cc deleted file mode 100644 index 7964ccd..0000000 --- a/fastcgi_parse.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "fastcgi_parse.h" - -FastCGIHeader::FastCGIHeader(uint8_t type_in, uint16_t request_id, uint16_t content_length) - : type(type_in) { - SetRequestId(request_id); - SetContentLength(content_length); -} diff --git a/fastcgi_parse.h b/fastcgi_parse.h deleted file mode 100644 index 733a0d9..0000000 --- a/fastcgi_parse.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -#include - -struct FastCGIHeader { - FastCGIHeader(uint8_t type_in, uint16_t request_id, uint16_t content_length); - - uint8_t version = 1; - uint8_t type; - private: - uint16_t request_id_; // network byte order - uint16_t content_length_; // network byte order - public: - uint8_t padding_length = 0; - uint8_t reserved = 0; - - uint16_t RequestId() const { return ntohs(request_id_); } - uint16_t ContentLength() const { return ntohs(content_length_); } - - void SetRequestId(uint16_t request_id) { request_id_ = htons(request_id); } - void SetContentLength(uint16_t content_length) { content_length_ = htons(content_length); } -}; - -struct FastCGIBeginRequest { - private: - uint16_t role_; // network byte order - public: - uint8_t flags; - uint8_t reserved[5]; - - uint16_t Role() const { return ntohs(role_); } -}; - -struct FastCGIEndRequest { - uint32_t app_status = htonl(0); // network byte order - uint8_t protocol_status; - uint8_t reserved[3] = {}; -}; - -struct FastCGIParamHeader { - uint8_t key_length; - uint8_t value_length; -}; - -constexpr auto fastcgi_max_content_len = 65535; -constexpr auto fastcgi_max_padding_len = 255; -constexpr auto fastcgi_max_record_len = sizeof(FastCGIHeader) + fastcgi_max_content_len + fastcgi_max_padding_len; diff --git a/fastcgi_request.cc b/fastcgi_request.cc deleted file mode 100644 index 5dad645..0000000 --- a/fastcgi_request.cc +++ /dev/null @@ -1,107 +0,0 @@ -#include - -#include "fastcgi_request.h" - -#include "fastcgi_conn.h" - -namespace { - -template void AppendVec(const T& obj, std::vector* vec) { - vec->push_back(iovec{ - .iov_base = (void*)(&obj), - .iov_len = sizeof(obj), - }); -} - -} // namespace - -FastCGIRequest::FastCGIRequest(uint16_t request_id, FastCGIConn* conn) - : request_id_(request_id), - conn_(conn), - out_buf_(fastcgi_max_record_len) {} - -uint16_t FastCGIRequest::RequestId() { - return request_id_; -} - -void FastCGIRequest::AddParam(const std::string_view& key, const std::string_view& value) { - params_.try_emplace(std::string(key), std::string(value)); -} - -void FastCGIRequest::AddIn(const std::string_view& in) { - in_.append(in); -} - -const std::string& FastCGIRequest::GetParam(const std::string& key) { - auto iter = params_.find(key); - if (iter == params_.end()) { - static const std::string none; - return none; - } - return iter->second; -} - -void FastCGIRequest::WriteHeader(const std::string_view& name, const std::string_view& value) { - CHECK(!body_written_); - CHECK(out_buf_.Write(name)); - CHECK(out_buf_.Write(": ")); - CHECK(out_buf_.Write(value)); - CHECK(out_buf_.Write("\n")); -} - -void FastCGIRequest::WriteBody(const std::string_view& body) { - if (!body_written_) { - CHECK(out_buf_.Write("\n")); - body_written_ = true; - } - // TODO: make this able to span multiple packets - CHECK(out_buf_.Write(body)); -} - -bool FastCGIRequest::Flush() { - std::vector vecs; - - auto header = OutputHeader(); - AppendVec(header, &vecs); - - vecs.push_back(OutputVec()); - - if (!conn_->Write(vecs)) { - return false; - } - out_buf_.Commit(); - return true; -} - -bool FastCGIRequest::End() { - // Fully empty response not allowed - WriteBody(""); - - std::vector vecs; - - // Must be outside if block, so it lives through Write() below - auto output_header = OutputHeader(); - if (output_header.ContentLength()) { - AppendVec(output_header, &vecs); - vecs.push_back(OutputVec()); - } - - FastCGIEndRequest end; - FastCGIHeader end_header(3, request_id_, sizeof(end)); - AppendVec(end_header, &vecs); - AppendVec(end, &vecs); - - return conn_->Write(vecs); -} - -iovec FastCGIRequest::OutputVec() { - const auto output_len = out_buf_.ReadMaxLen(); - return iovec{ - .iov_base = (void *)(CHECK_NOTNULL(out_buf_.Read(output_len))), - .iov_len = output_len, - }; -} - -FastCGIHeader FastCGIRequest::OutputHeader() { - return FastCGIHeader(6, request_id_, out_buf_.ReadMaxLen()); -} diff --git a/fastcgi_request.h b/fastcgi_request.h deleted file mode 100644 index b1ee3f6..0000000 --- a/fastcgi_request.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include - -#include "buffer.h" -#include "fastcgi_parse.h" - -class FastCGIConn; - -class FastCGIRequest { - public: - FastCGIRequest(uint16_t request_id, FastCGIConn *conn); - - uint16_t RequestId(); - - void AddParam(const std::string_view& key, const std::string_view& value); - void AddIn(const std::string_view& in); - - const std::string& GetParam(const std::string& key); - - void WriteHeader(const std::string_view& name, const std::string_view& value); - void WriteBody(const std::string_view& body); - [[nodiscard]] bool Flush(); - bool End(); - - private: - FastCGIHeader OutputHeader(); - iovec OutputVec(); - - const uint16_t request_id_; - FastCGIConn *conn_; - - std::unordered_map params_; - std::string in_; - - Buffer out_buf_; - bool body_written_ = false; -}; diff --git a/stream_buffer.cc b/stream_buffer.cc deleted file mode 100644 index e02a4cb..0000000 --- a/stream_buffer.cc +++ /dev/null @@ -1,14 +0,0 @@ -#include "stream_buffer.h" - -StreamBuffer::StreamBuffer(int sock, size_t size) - : Buffer(size), - sock_(sock) {} - -bool StreamBuffer::Refill() { - auto read_len = read(sock_, WritePtr(), WriteMaxLen()); - if (read_len == 0) { - return false; - } - Wrote(read_len); - return true; -} diff --git a/stream_buffer.h b/stream_buffer.h deleted file mode 100644 index bcfc629..0000000 --- a/stream_buffer.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "buffer.h" - -class StreamBuffer : public Buffer { - public: - StreamBuffer(int sock, size_t size); - - [[nodiscard]] bool Refill(); - - private: - int sock_; -};