From 4412317ddbc0b37b238c58f6ec8cbbde765d580b Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 2 Sep 2025 15:22:15 -0400 Subject: [PATCH] refactored nginx.conf --- Trash/ginxsom.db | Bin 0 -> 122880 bytes ...e33458a555b463d5d53e4dfe2d24cd740c5bc.txt} | 4 +- ...de3cee2a848bbf42c3e7aba0108cf7cedb8540.txt | 1 - ...ab06d82bc6221e9176c65fe6c46e8d16f3b26e.txt | 1 - ...c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt} | 4 +- ...92bf6fbbe13869b5bb5d665a03c83d453ba2de.txt | 7 - ...095adbd2b5e82f691f514454a8f4082179c7c1.txt | 7 - ...352ce5f52c3820c904b7066fe20b00f2d9cfe.webp | Bin 203886 -> 0 bytes ...b6d0b69361ac63bed5956652e39dad53400ac5.txt | 7 - ...432d279d859672e465bfc90fe44a7a2566a156.txt | 7 - ...5973510973fd713a37a10e9b4d04b1558a7999.txt | 7 - ...0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt | 7 - ...52cc8d687e7c7b4dbd0893f6470242614d1100.txt | 7 - ...5d9db94acce2246673bc347da6805951bdac52.txt | 7 - ...5ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.txt | 1 - ...9229d1955ea2e25aeddef196232008d4a25c5a.txt | 7 - ...34944d5fea43a8b3dc8eaa08abe4859eb68325.txt | 7 - ...93a571642e10c14e1325958eaac6d7e85e1fb1.txt | 7 - ...2b940b04e1b48b0b700d27ff85081206ed08bf.bin | 7 - ...ee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt | 7 - ...c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt} | 4 +- ...939268ac2871f194e95523b7b66113862da15e.jpg | Bin 30236 -> 0 bytes build/ginxsom-fcgi | Bin 212640 -> 212680 bytes build/main.o | Bin 140504 -> 140896 bytes config/local-nginx.conf | 236 +- db/ginxsom.db | Bin 122880 -> 32768 bytes db/ginxsom.db.backup.1755562070 | Bin 36864 -> 0 bytes db/ginxsom.db.backup.1755563905 | Bin 36864 -> 0 bytes db/ginxsom.db.backup.1755565735 | Bin 36864 -> 0 bytes db/ginxsom.db.backup.1755624647 | Bin 36864 -> 0 bytes db/schema.sql | 190 +- debug_hash_data.log | 42 + debug_validation.log | 36 + logs/access.log | 14 + logs/error.log | 4776 +++++++++++++++++ logs/fcgi-stderr.log | 1002 +--- logs/nginx.pid | 2 +- logs/spawn-fcgi.log | 1 + restart-all.sh | 6 +- src/main.c | 8 + 40 files changed, 5076 insertions(+), 1343 deletions(-) create mode 100644 Trash/ginxsom.db rename blobs/{22917078337a9df119979b8df2bbb59aafcc42161c50bd7881e68e27369f343c.txt => 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt} (61%) delete mode 100644 blobs/3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540.txt delete mode 100644 blobs/49838edfd837a9cab272503012ab06d82bc6221e9176c65fe6c46e8d16f3b26e.txt rename blobs/{27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt => 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt} (61%) delete mode 100644 blobs/545a2277dd4b7a66e320e12cdd92bf6fbbe13869b5bb5d665a03c83d453ba2de.txt delete mode 100644 blobs/61993aa6a0969bca4316461550095adbd2b5e82f691f514454a8f4082179c7c1.txt delete mode 100644 blobs/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe.webp delete mode 100644 blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt delete mode 100644 blobs/7b3b92e2ffefed8c7444e9c78c432d279d859672e465bfc90fe44a7a2566a156.txt delete mode 100644 blobs/8f68175a71f1a38e70e0dac1b45973510973fd713a37a10e9b4d04b1558a7999.txt delete mode 100644 blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt delete mode 100644 blobs/98681900bd97aabc4a7d2341bc52cc8d687e7c7b4dbd0893f6470242614d1100.txt delete mode 100644 blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt delete mode 100644 blobs/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.txt delete mode 100644 blobs/a27df9a425b43ca292eaf4e3779229d1955ea2e25aeddef196232008d4a25c5a.txt delete mode 100644 blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt delete mode 100644 blobs/b3bac1e07fa61f4668c0920b3493a571642e10c14e1325958eaac6d7e85e1fb1.txt delete mode 100644 blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin delete mode 100644 blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt rename blobs/{33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt => e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt} (61%) delete mode 100644 blobs/f8b5b4904c79bb53b2b417bc9c939268ac2871f194e95523b7b66113862da15e.jpg delete mode 100644 db/ginxsom.db.backup.1755562070 delete mode 100644 db/ginxsom.db.backup.1755563905 delete mode 100644 db/ginxsom.db.backup.1755565735 delete mode 100644 db/ginxsom.db.backup.1755624647 create mode 100644 debug_hash_data.log create mode 100644 debug_validation.log diff --git a/Trash/ginxsom.db b/Trash/ginxsom.db new file mode 100644 index 0000000000000000000000000000000000000000..61d084ef4830f4544477ae0545d99fcbf19f0366 GIT binary patch literal 122880 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 literal 0 HcmV?d00001 diff --git a/blobs/22917078337a9df119979b8df2bbb59aafcc42161c50bd7881e68e27369f343c.txt b/blobs/115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt similarity index 61% rename from blobs/22917078337a9df119979b8df2bbb59aafcc42161c50bd7881e68e27369f343c.txt rename to blobs/115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt index f672b45..460e87e 100644 --- a/blobs/22917078337a9df119979b8df2bbb59aafcc42161c50bd7881e68e27369f343c.txt +++ b/blobs/115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt @@ -1,6 +1,6 @@ Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:34:57-04:00 -Random data: 52bea9fe68b05eeeee258ae97cdcf8d9e7abbc13e67d61f681927250daef6e56 +Timestamp: 2025-09-02T15:17:47-04:00 +Random data: 4e8fefec3104b88408f0c71a73e97ba176846747e5577334d42be314839a9bba Test message: Hello from put_test.sh! This file is used to test the upload functionality diff --git a/blobs/3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540.txt b/blobs/3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540.txt deleted file mode 100644 index 1ab7817..0000000 --- a/blobs/3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540.txt +++ /dev/null @@ -1 +0,0 @@ -This is a set file to test. Don't edit. \ No newline at end of file diff --git a/blobs/49838edfd837a9cab272503012ab06d82bc6221e9176c65fe6c46e8d16f3b26e.txt b/blobs/49838edfd837a9cab272503012ab06d82bc6221e9176c65fe6c46e8d16f3b26e.txt deleted file mode 100644 index aef7030..0000000 --- a/blobs/49838edfd837a9cab272503012ab06d82bc6221e9176c65fe6c46e8d16f3b26e.txt +++ /dev/null @@ -1 +0,0 @@ -test data for debug \ No newline at end of file diff --git a/blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt b/blobs/52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt similarity index 61% rename from blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt rename to blobs/52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt index 764225e..fa2724e 100644 --- a/blobs/27a6a601f8257e257a6d4ae1508b9ab8a8e05cff173045a78e5a8fcfbc3d8ef9.txt +++ b/blobs/52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt @@ -1,6 +1,6 @@ Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T09:58:19-04:00 -Random data: faafb490d178139a95368b519dd836ef835b488da9324ab5387299654f294826 +Timestamp: 2025-09-02T14:22:55-04:00 +Random data: 952a584d8f3fc6b5e49b1dfabbf68d76385d6d51142aa07170c71897ea861c03 Test message: Hello from put_test.sh! This file is used to test the upload functionality diff --git a/blobs/545a2277dd4b7a66e320e12cdd92bf6fbbe13869b5bb5d665a03c83d453ba2de.txt b/blobs/545a2277dd4b7a66e320e12cdd92bf6fbbe13869b5bb5d665a03c83d453ba2de.txt deleted file mode 100644 index 6e9bd23..0000000 --- a/blobs/545a2277dd4b7a66e320e12cdd92bf6fbbe13869b5bb5d665a03c83d453ba2de.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:34:52-04:00 -Random data: 340fc3549683d7c208ffa373d5932551f9b2e53cc1a5713b55c934403d9640a2 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/61993aa6a0969bca4316461550095adbd2b5e82f691f514454a8f4082179c7c1.txt b/blobs/61993aa6a0969bca4316461550095adbd2b5e82f691f514454a8f4082179c7c1.txt deleted file mode 100644 index 7fc0f75..0000000 --- a/blobs/61993aa6a0969bca4316461550095adbd2b5e82f691f514454a8f4082179c7c1.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-09-02T12:45:42-04:00 -Random data: d29860f9b375c2f964dd3bcb4466fa018fe70ac6335b4ee79cec000c4f7de1e9 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe.webp b/blobs/708d0e8226ec17b0585417c0ec9352ce5f52c3820c904b7066fe20b00f2d9cfe.webp deleted file mode 100644 index d3d14810d86effe69c1bff316d1031bb46efce3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203886 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�m6 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 Mp3i6oxJEbt00>`Ip8x;= diff --git a/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt b/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt deleted file mode 100644 index 073cbe5..0000000 --- a/blobs/71300009a2840a82a5f596e833b6d0b69361ac63bed5956652e39dad53400ac5.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:10:05-04:00 -Random data: 0dbb5e8f50695faa4f8bc3a5369d21fca51c98fda6be69520a6bfe6160bd55ca -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/7b3b92e2ffefed8c7444e9c78c432d279d859672e465bfc90fe44a7a2566a156.txt b/blobs/7b3b92e2ffefed8c7444e9c78c432d279d859672e465bfc90fe44a7a2566a156.txt deleted file mode 100644 index 3048b19..0000000 --- a/blobs/7b3b92e2ffefed8c7444e9c78c432d279d859672e465bfc90fe44a7a2566a156.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-09-02T12:45:28-04:00 -Random data: 8d599bd3356624fcb782f832b8f03d9a53972b8472a1bdcac83eae353e722621 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/8f68175a71f1a38e70e0dac1b45973510973fd713a37a10e9b4d04b1558a7999.txt b/blobs/8f68175a71f1a38e70e0dac1b45973510973fd713a37a10e9b4d04b1558a7999.txt deleted file mode 100644 index 72c1b7a..0000000 --- a/blobs/8f68175a71f1a38e70e0dac1b45973510973fd713a37a10e9b4d04b1558a7999.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-09-02T12:46:50-04:00 -Random data: 4f03071e8de671359cc9f2d4c868825c597601a3224c924c16ac63d31222595e -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt b/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt deleted file mode 100644 index 348087d..0000000 --- a/blobs/976d02e163913c66cfce493dbf0c0350c90562e2a0f4c9cd5c5064b521f1414f.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T09:49:32-04:00 -Random data: 5fc993875e7b145b161463e2250f7b7d4be0428fca7a91a40a843b25d594eb2d -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/98681900bd97aabc4a7d2341bc52cc8d687e7c7b4dbd0893f6470242614d1100.txt b/blobs/98681900bd97aabc4a7d2341bc52cc8d687e7c7b4dbd0893f6470242614d1100.txt deleted file mode 100644 index db28e31..0000000 --- a/blobs/98681900bd97aabc4a7d2341bc52cc8d687e7c7b4dbd0893f6470242614d1100.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:34:56-04:00 -Random data: 52e5fee5b2f73c73ed388c9df9f74c58117b5f93982c5e6202951fd9fd90b626 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt b/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt deleted file mode 100644 index 25c0809..0000000 --- a/blobs/9ccfb66aff2f9e4929830f8f675d9db94acce2246673bc347da6805951bdac52.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:07:52-04:00 -Random data: f1690ecb249bb7499e997e47b515e0f067dc0fffa13f4265f497b87166799187 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.txt b/blobs/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.txt deleted file mode 100644 index 30d74d2..0000000 --- a/blobs/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08.txt +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/blobs/a27df9a425b43ca292eaf4e3779229d1955ea2e25aeddef196232008d4a25c5a.txt b/blobs/a27df9a425b43ca292eaf4e3779229d1955ea2e25aeddef196232008d4a25c5a.txt deleted file mode 100644 index b801f1a..0000000 --- a/blobs/a27df9a425b43ca292eaf4e3779229d1955ea2e25aeddef196232008d4a25c5a.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-09-02T12:45:33-04:00 -Random data: 0d4dce455f8a7bdfb8bd1cc8e90c2546fcb71f0689c3774530adfa718014c905 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt b/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt deleted file mode 100644 index 499e165..0000000 --- a/blobs/a5946f8210fb87f9772263864234944d5fea43a8b3dc8eaa08abe4859eb68325.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:11:22-04:00 -Random data: 97e6573bd31c5dd5dc1f3fd7ed6e7d94898959af435556879a648f83b62267e7 -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/b3bac1e07fa61f4668c0920b3493a571642e10c14e1325958eaac6d7e85e1fb1.txt b/blobs/b3bac1e07fa61f4668c0920b3493a571642e10c14e1325958eaac6d7e85e1fb1.txt deleted file mode 100644 index dd681a7..0000000 --- a/blobs/b3bac1e07fa61f4668c0920b3493a571642e10c14e1325958eaac6d7e85e1fb1.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:44:56-04:00 -Random data: 162b8c0930df1f600ddd936e99ecce0866ab82a436f545d2187ba56726f0df4f -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin b/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin deleted file mode 100644 index 6bad1ab..0000000 --- a/blobs/bbad76867950c43fd9f58c5c532b940b04e1b48b0b700d27ff85081206ed08bf.bin +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T09:23:37-04:00 -Random data: 91175d5c0a2465bb69dabfa79d822054cbc8c00cc05cc551b1ed69b5f619631a -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt b/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt deleted file mode 100644 index 8fc2eb9..0000000 --- a/blobs/d9928b2db1bc343c759dbf02aeee2321c8e383e1e9c7b94e5ad2666f6b3dd5ee.txt +++ /dev/null @@ -1,7 +0,0 @@ -Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T09:53:53-04:00 -Random data: e4170eb6a32ff51102a2e154ec96dd4c769b3033f92b2bdb68fe4b835ec42d8f -Test message: Hello from put_test.sh! - -This file is used to test the upload functionality -of the Ginxsom Blossom server implementation. diff --git a/blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt b/blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt similarity index 61% rename from blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt rename to blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt index c53e9e0..753c7cd 100644 --- a/blobs/33962cb60f7f35f32ac2ef20f707b54815c2519b17652acf2d81543a141d32a3.txt +++ b/blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt @@ -1,6 +1,6 @@ Test blob content for Ginxsom Blossom server -Timestamp: 2025-08-19T10:06:44-04:00 -Random data: a0100362b9eb683a4bf49f49b8b6597490142d2a2d2543e7d500f371f0a1f052 +Timestamp: 2025-09-02T13:59:11-04:00 +Random data: 77050ac92e48c47746e1d90541d99079e811c59fdd109491165b6d310ef8da76 Test message: Hello from put_test.sh! This file is used to test the upload functionality diff --git a/blobs/f8b5b4904c79bb53b2b417bc9c939268ac2871f194e95523b7b66113862da15e.jpg b/blobs/f8b5b4904c79bb53b2b417bc9c939268ac2871f194e95523b7b66113862da15e.jpg deleted file mode 100644 index f08dda369c89a02296274b969c543f928a0cedf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30236 zcmXtfbySn@`~Lt%5KN>?=|+%-F%^k{fOIn?L|VE*LE%lyMhFO#80naFGiip>-8Env zA&l?O-*&1_R$?$8X8*WhjjNIv9oY;u(PnSJ?0VPf6OJq&Bi7mD=6|*LP|=ClV2Vv zC#fX%OiJ?lH-LtU{1e4*GO`DN>rMb006;vWj)hGWJO;25PeX}w;l&C3W4CLzh%$v|AhMdIFkfpUy`f-j(n-| zLe`dszLY-K^r!gqojcUOe$ju4ZEx?WH!e12U~jXnW)P+!qj@esVVlBpGPl{W+^`Rd zW~(^>CT2}5Hz_H$jFp^r9-Mi+^~PF_LL+od_^N?Q9PJ0m+4cm>%!Rc74m^VyM^rEF z=V)3x@mXFbyM?ezty;&V$4z~2upRr=trzl#U5fu)I*@ZY;L@;K9&s)~2)+hz$g+;? zw1xFocJLmlkC%W5ftQZILc^Fb%b$Y-Y8sY(bNU0KsE%8+M|?)qW72cs-uj)(Jov^- z9m^J}JncXG{`VZy0(dSwWXvG8 zv_mswEKEbg_@ODXUPQ#0f$XjAuN^Y4n}{G*Tf7(6C+~3TSmB<-S!;f+z9tiPvr#uZ zJ>xL+Ud3%m-C8_h4Sl3O84z9-wl1;VL;C?~kx(_+vqan}whO``_)1t&@0OEM;ru|q zX^uqk8+cEZ8ry`B#Gj!YY?}Eu^NaeWot3ui7L@z|0dr`V_IuGxxK#i{9 zM4P~Q@#uxN3;yc0)UW@|EfXyntsM(l0-y(@L8Vdxx+}%7jT;DyBX$S z3Mnym{QdcuCynokq{j<0(I#@A``^rzZvOY${7poc>kHdol|FZFuziW0ifI2WB9aAQ zkIMVi^8QYRO`49>e*WCN?@L__mrg_~yQGMYgyy^{p z#9J=~TIQsG%F&~{{H;Qn&>-8Sn8u{)+Ddv3@wmGA6X^Lw{T&rO7uz9if{J_l0l#r` zOt7n+at<@-k--@qN75s!V)05LD;b%x8W&tZsAJ{4*z2on!0iB{b@hQ`|4C2Pn;dzt z&(}cc@HqdK?m&q8?*;k3A7iiyabM!TaySUAl{m8;qms(C=arsEKCZ?mB-2M;&q<+5i=>QY&-ieo1#|yrGSyceYVzl48ENy?m5Wd8vG#V`6t zUZ0^ILz6Z`On4mG#OD|O*&XRR0^{&X+-#0=KQnTOE~-T3Dh|0Wr$=ROcaSDGYG(_? zCYx+W@Zx1GjjK3m#;S`1spktd>pBCocd2I~T)yso7Fz~W*+T6NZxLs%MhbjiX2XZH z^`{tnOGj;eDodnn@tSavg1Nx+OhNt==ve%>x5);OWa0vF%R^{>iBDYZtFrHJ#5~uZ|vYy=_yV-r)*h`1B(NU>}vD6ESpy+~zS2fXwSLwD|Odd!gxBPNNW$LCviukPS{rwg~5`&cUV^Ypt;Z=0fhWEKC^x zXSk57!LT~%P$we1aVT_h37(%ee2q&j3(I6g(5UAs)OCsW4d=bX8+kchpe0rNhk#$S zJ`}yMr2L!FJ>Jr7c_xBy~-#(~3;%4gNNsHljz(pGW(Hm=d*vKD;D*6V&+~Smk zu1CP(Lzeh!K(3b){SO5Tw2GKoTB?SJnn029T~aj6MQ9P!UA)X$cC}upAZaI8@^JDM z28{F@_3shZ_Sy!&;wQRezk#^3O7Ks{>{1*aZ5wF6AH)DFFSAiAzG3XQubk|(4nTs0 zGo=h7n+l0y-*S@^no$Fe&)05)QadQ zl}9jtW=Qh3!Ui_v%$L5RXl0-%QHSo7q?Y7Lc+GYK=-o{o@nAS7{Qal=*YG!wr zKa|@$!kX97H=Iny1Sp3^bL+=#d#E)il{$?BZhri2L%~EFLb*B}Z->pDzll@UEn_W3_iE0RVn=m<9pnYFYPO?$%k-^2`yC1y>8|S%@4Zl*k~Opw2rfvKrOOUE1O-#phvsahMukJbXMlHKN^aC6REiuj#cMZr_YEbPqJmCRQQaq<% zA&ce~bd}hzr>`f)1)^}m@1SW7I~9u*>0f=*UkG|i)Wb?Ku-~6GK4>v=@ooV+AKN|< zw;^Q;iCg5)e**wDX<&WCrg{eIe14RRS9?jMr9Eg7$7OvuHS_@OlE>XM&yeXZQ zblFAhOT`D940<_Og!XBsbz*iuRi|2a_5@2UrJ*2?%b-EHY84j@oxd&-nv#Pl$V#|_%4;l7{=2EMGsXA}Sa zrt{6gk$MGAq9BQDfc9-Sff(meYh#JhraP%|=cbpmL=Q%S6YDnX!hhkpLaXL}wlAqv)< z#igK6mtOq5w~cL4jX4wDc_cX15etugSf2jjQIWjemFg zJAG5jbg6l)wRPAlX^$Gv7x#XKSmp|&i%YQ4+`CEFtDsDA3F)3GnO7LEM+Heqq_c<%NPm&sO|!r|m(BU{qz9bd zaiPM);^~ANpoy}QieFR$Z8-?kH@et92iQElVf2yqf0)IOEro(v!%s?o?zY7pT4d<0 z;(Fdlp7dW2pFE^Zrj7=^47l_4=kv#80IKHzDjO-9-ZO}!5~nz1!mcBUHBeGf_rG!r zP}nZycGt2pC+!=^7XvrvX~Jq;nTxl>qv{`;^Ap`!;$PFw8GHURbb{x~{^2Z5u*Ti` zslpSp2!f%J5c1ged%31i&73ddjuR_!YQSqNE^EWqY0d;%cSu#_d2mx7(>kc4ZO3rc ztvAV!!TDSR#D^>|DL!eBjDGg+5i-k9ob)#Kb5aYGIZM6QZcw0Q9!fhu=Q~YsYEzgG zifY7TEXn6MI`Q*ip9lXkj2WMuQt#;Ap?<&l_xsoQmDTlX5cg%lxp)BY95- zg}dj6EbY)c+|tt1vfWVZz=sd1%G3Z7bE2jEL~HY=r?>lK!Oag6#5a#5cJ*&nC_#_z zQjewo`hpR+v2Tftc+P=^(%yJXLqkUWG5W0yKyP;WQkd`zp^ZTDg#Fu+t&-SXhyv=o z7hmue!^@y=6O~6`&;%#;JKSK%)UaDC!u87_4(Q<)yWSk3&5Ne=OsFFq%2-Uxx;J-@ z?4U&-5~;yzvPY8bS$_nT8Q{-cOv23R_`Tv8Q_;HI@)#Yx*p`FCyz%)797i&2jax(z z!EkEaFR73Kk@>r~7<#FbAdJ-v`ZGRkzKEfN)&+|~hW2>Jw5|};Ja};J1V;RjV~ZtV z=a@m;C@3{yE=;whZQKcKcd?jUM1FYqs1_wd;{l^qa0rBTo!zMULU+gLjJ}_O_g{s0 z@ZGzd4{&>j*?h0PW1-MOIR8GXHf%t*t=WJp9@3Dt6NyZMjlXv<6B8P3y*-gx{kE4B z>?p~8bTcTcQI)aerZ7n4#v>^rz6uM!Kn`o!EWL)mRQ(+j{7Hs3?a9smUbTFDN#+h9 zp94Inm=d}D*%DzLrcPL_T6AD=QYj}qzMNz40v22Y+RixyewxC-flm-c1gAVzwVeau zucZ#6jD!c{b=U(wooPM8sO=UxM#h>gj?A-f{Y87SyIt@5I>J^PN_Qp_=mi$j3KdnG zP71bVbRNwi>+(hk9_GxB9u?xUFK&z?@o%aWAhH?~Ve&x=vL4#;6@MB;W&QV;CdMHd zgJW7tX=nJ$!P{n;9ZD@of90vdi;F>v_Gjli5#kMfZ$c}>e6Q}}JqxkRLEyk=)*eG4 zW@)E9%{ho&=^9va>okbxe(Tu9c;w_}g=MHn4#mM#d@v?ZvTfnY{w$DUEG_8Nn-FlsbDY7G7}fVJCe4? z9zhl_&veL1!PMTT`dFv~8U@sBrF|Tf6#2*BMiH6H>f$J5%QNX2O@WbIwvK*{N3ZJ7MfcEJWfEhmU;H4jw}RCWsOorZ`T5ggN8 z7!<=})n#bX_1w>GkZ8rJot4=`M_IiLyDmYzhr=0@&&inQxa&4r=Fl<3CqC4dS9ybf zjZ9_H*OJdhgv-!gE9ooH#MY+N*d~i*1yxUL*S!nv246YP zSt4TdGLe%mD^XBb&&w*=!-1sJ7*tIg37mxF%gZZY&Q2Q4VZh?ae}?V711+>It36;% znyzVA?3YxK*ydFFcAJC9QyTtd)Z?BL{ev3^L0T@&6hyHHzZ;+s|E&bS_oCJ0SUn-l{WeoUxsXD+(J9;Xlc{aR zI1|S8cTxaAEz=O-w;j{O>Rrtxd7*9zqGa0dSnLns2-5~SUMLB%13S3_XehNKr%25G zf870sTu(zm14!pGD_G>Lyi}P)pRPD$KWM+7K7Y-X%cA9>-S2Q>Xd-T)F@AG%U(ns$ z+CwK`nqFTDk`}!4k8+vR32fmn9M%YoV1I4*fJoSx`q+F1_=4I1SlxHN5tYU z%$vl#ChIU3VbRHBhcvQ!vo7-;D`BZuSB|++qG}T1f48ghdB*6`LeHy{6bKKU?3$)c z!%w>c2?HFcVpD~X(|KHpxS}kM&PvI$e66f<-^5QEd*0exJkyT)^QJaGEQtHh-!xsi z@5qY>+twPyW^nLD{c3qSD*Y_UVXR0%HlDnuoDf=E(O*fRc>c`eM__x*6iGoy!*8ql|=?Scpp+!M+ zF*afFM*cOxu@kNKwwD$Fup?0lK;@@LQ4%|Q)4 z#{Ke*^C|PMIHAjWdb8N#VIy;zQLGLULAXO$944Plcs1iycECE*jDhWh#+;#5*oZYV zIdQ54@A`uLSn5*~f`1s3TV(-SCB3+JcM0acCTh_#D0>eq?#(1~UOCw4wO)5I_*SZL zK8#%$rxeq_YUw`g<)mQA4KL1#l|9L39n_k1$i)V9E+^&27j>RPTV`f1@9E~d9Ry$( z_R!f$T<%&{sgI7f(a%@0gW{_H_7zVM`Iq-VyhoZwd)niz;wm${%`Tj}^jcO{>{dF- zy4p4SN{cjuN-ZXa*i0>cR|AU)c*YigUf4S^@W7=L+a({^{&K}jJDk2-w$Gd!DOJ&h zuVAujQ(S~Jm~GZJch{m`h(gx&7p&t8`D<=C)!`C2ueyF;11chCv4$WjcrvRp8C-Fj zUvp!m`PcS|Zz^(GLK5zMw4df$dY$$p=s(?;s`cLhrX)*%B;5lT+8W-(rM*hq#;b3E zD*sW&dtx^o@5QuEVNflcr3EQ|!%tSUyY(kmf>?S?i01UoP@-|iY4M06eICS|Kk1tr z!_|M;9<|4F$cLvHGvgC8+*%_TFaq-T&~?3c(rdVpIMw{--7P#tnvHX8eA0w^2SEnU@1dKN^2+m|=ZU&2r_XYX&ziM##~P{+LI&Qs24D{8FAQ@A-}Ih)V&)B< zI6U-rS9_w4OvE9F-&?@VsGWoo0n@Zn;g56)E8ujZAzGo(`ksiimS%MsSj8J7Q=WUspQ zFMZfRkFt$RSOR0Vv}OtKPDkIq*i@~wF4j5DPcLn+dYi&>p`}6uy>C_sm5q59?WWGP z14i<094S+DR;=O?VmVGK-042)#7R!!xjo`rrx|3ZPdGP2rY~ttA4z=llK4TgxJXo= zq=CFIV0bgE<+-c#8)F~IyYmDXV}oHNCs}}zpGfBtKx0wR8twmLlte|7Xz2na!Kx+< z;Tq=>%U^c~sXL-1##Q+XTZ>T1joT1zk2V&f1$~0kX-Y$?dl$R?A}rtfJ#S?YZi}Or zzb4SRvvjBKQB1sB&!};qdn!4)sV{jjD!PY^D7?>x6bOP4vb1E-XTy;;|cX zEvOz*8iH^oe7PxHTUSQkJCv9(Q$0yGvTCL<)w;1u7_kT$v>m^QS2#j@e{W9iS|0IE za|~7<$EzdKj1nbk%JOpz-uy{`toXF1VY<>6mds4{6(Lq=?jq6PDzPthv0^(5g-}22 zPde~Kqo^v%_bi?LO089Eq)QYvRy^57=nD?Lab&+6vv%=c(kiOtXC05Op`&!sdPq{u z<*hKP!#7EOug$xK;m7+R=A*izxIal{-K}gDC(WZ4i!fztc{ZQblp{Nsk&}6gK~Ns2 zn>iZB10ZvM%0$l80sVUCj=Mfno4Y>Cl!NH+yz0DHM?A07XumFz#BNG9Dh=DaH%Kcj zMQdK<61k0bw7!3#(z7ft9)0^?kOwyW`ATe0jL`JM8mMnALUS&!gm8Gqemf;Bm>O61 z=S>%S&;YXjoKW|09HnX-Jki#4N(WqNo-TUymXBy3&(Oblz-W++gpD6{i62LbWeb99 zPVDk(NYLWvgqx=CMaAOSezPtz2|R)wfD7|wLCi8D&3GSwP>9;3R%SY z1?X621bv78nJtv7&a1BTzif?07C9gKUB0*m+?D6GWFw~9XamiMF9ximAeYfpS8N{| z6t5i7vuD{>+GwBpe>*N~b?YAvp2iWpHo*R})6CLkYdNE+FM;k}hu&|xk{2os%R+rP zUqjmxl{J&o&0x#WVOg=U+2PagfhkbEqQcBDb$^wZm99me^YtSaL-#^-jHvPhU(GW! zP|2U=p${E`plbm5SRChTUyeO7|9;9npWb>6xWN*O2JPy{n(nQd^NgU9iwsDi+h9^R zS()=z5~7FUC=u}z+yIh+9&qV9scWy5NiXOh4n0Euw|MWBk9dc*W`sqkrV&Is*D?s& z)&69>GCcd4V@(F}o?8s^F6VuG{wd=nu8{PqQTm}Hx=~l743)fkE6HV*f#2+I0(VU67RcV4K0 zjyjhJkT6qKR7V*EsQvcK8iB5Era7nRW#1f88x+a19lIa$?O<9wzaMIt?#s7u4cJs@ zj7xvP>+4y#$Vx-+*CyVc_SqrpxFR;VMI#0N4_H%Rhddh&c!v-S(oDy(8)mmF&P)wU z(`pBDD~X>x@LHRF(%(F6)KrI8D|ddHa&Tf)xAy8S+{bNCG*oA5o_9UkpX&roBAe9q zXvx4+f?E2a>=h(AYmvZVdlh9Sf2hnkd+%N>el1&+q0%LG6rvU;x~j}lai|}V3h7)~ zn7q8l^&wz&mUmCfIQ}_+BKaf9YPN|bOCZIEEru_&At_O{oB)h1-4yhB`Y%bp`yZcE z*ng}80Pc5_l}r!WdG!^fHWi~}4%81kDznLVuL0!v5987_>HUPkcYZTT8Hf;2Zoxxc zTSSoXqA|Z)=eX;GYK+%}(Qi$wic4zkdE?ndUMK5M&f6xvJtEZwIpxsPOsuoqd8n*> zh3YxR0XnZQbKzX3TBfx4p!Yj3-=ec&$-nSz4js129DjbrG_{#9!)y+zjeq*F`X@y? zxCYDNbk&F^60SI$z7!?LiS{Y4#2Mi<9GOD`jKnS>f_AkaSLYzzj8 zYq$oew2F$y_3>xV5!ZGiLPyLYG-F$TVDmoPc3KPep}&xeS6T4B;8Nzx%D6D&G2 zsw=4kl>Q_$yJ58`GN|nS?@=PB!0e<4cgQJA7q5B$i1j-!=lfl;Cv^vfuZm{j>@|CR z(3XY55oaJ!!84`gY(60Yr;F>4t4uACxF%H1AtsUT58y zmg(hlNwc7RD)e%)e)81ffNBx@avWr0>l-?wZ>Z^}8a^+I!DLm0%Iqs$g!~BY+s#8=B~_h6S(h%-`(KABAs=@??<_pF|g^k;zwQ99PKOHpI&IGYZ-{l8+uMC z6H>C@hZMyGe6RAg-lVgt$VyBK(!B`%dnPgxho4>KP)OaMv!;4+^4(6WR&wMNIp}>H z=)jgB2bQQg)@W<}yr!VO~gUIJei3G~;Qk6hlPD{CHwx#338{W(P+ZB6&q z(l1BAW#XlMDQAd3P%Rw0$fSLW`^L|#`M@ysqJ`W9t$uxV7<9p@uf{#S_kb<4Llnq} z%^0NByf@c%q3g>H;9c`&Q`ar7{|m5d4O z(Y70U(g0rW4!r9o4c&$qD5r`9-K^A#yvdA)GbsP2$cfJyoZ%;wS0l|4p(CqeZnD;?@PO_%2deT4Jt@FR7+^Eh!TO z%5=8l)S-A>2}gMRx)mtevEO%^^4~t_;ii&_a>xnMzlEy_HZz_a+1WVdt9-^>fS8?j z!R&;>BLm_u6x$^O65lPnhPu#N%%&Z#+D9)hjBNC+-YpW^G0>KG)0{n<4uw<)2IXK@ zB0r}Vl~3kf1418kebTB#XS8m5;0ARIyXTzhN*50l_v}*l%f_eic5zlxxu~wD%6w`8 zIaK?xMm-n-cAmc|kLTd85pu`v;9yCvqDTYRK_$yd%;kF@*5NAjA>(U{SQUp_IT zCq_ICORHe@{PET;7}`quoY_~>Z0v0~t+|(VNF2hM$stqQvf$ilxArE}A0DroFno2Y zbJiRo(J14{{KUBYxT=3J)jZRs*4r!9vk@}PKK<;x;h^3U>dZdS5Akiqq`PbW}Nf7m4X zjDCzaH(+x2kOPPin#Va;_k=mfn&0q4%UH}ro;nfj1bO-rM#4hA6rd&#m6DvruRcxi zHnop{?wBHHTg--|SsKg3Hgf-Y4YGM^dZlocsJ1Zn;yXrbz}_XeW&C%edZb_eP}``& z>_k1#k}25Es;qBd%e2<2nJ`e?wzw>F>|AT{@5NNvIn8__O20zAj>igBjLm}0nqUoW zS9S#7mptulTJvqo)K+j+l%CzX%@DhN;(mhqYEbgNX1LPO8Q5C8HH)|gBo7=LrhjeB zDp5--@HvbLRGyjK(bdm+T`_U)CzW;e$g`YrZY@*Cs;)qT2NMtUEsY=Cg}Yj;=u(znTdVKZ;&G^|IYl zj+MiXx(k_mm7dwei zN`7{7ui$q*9_in*f*bDrX@o=+ZU+4mz_67ns) ziBd%tp*@!RyggR6hc{a`4^*~Ie4B)-e-wxfiup6X`=nEQ8WCH2agEQe{TYoh8BRZ1s# z+9Ogi1>@%6O`Ovx!gSPpz+d>B`LI6SU^Vnv&=Eoi#b0y)MBQ}`^wPFQnGlBvIQwgW zpV#DS3IbK;<8sThXdu6PwmWP8nV0^c2`bqmh$y|%#XcM|4ChK)wYV7mK2fA>pCj+o z-ShVxJcPc#n}};)qxYF;bPuCjX`$=N)EwD%OnqZnM|`;hIYJftqji5ZA=deWr$}z! zM~1b>r1kvT9s8of@?LUE^#7rchi%ZdEfqSFyGJpl^885!;3HF9qy<=cvTy0InXUt3 zvSMm;*uCZjo!$z6b@EO+I=6?ZH2!TK(UN_49FkdO|2^}f-|AR3(77uJ{U$tyRR|da zzlaIC3;BXB`8-oy=I2DySpK4Bo__t{jPuF)3yk$mHvek?->b}v!Tt{``ssrn&t`Fr zzTi`Db!6P_`clmrpCd(dAYQ>WbQE*bx+zv!dU*W2Gs`D+$48~7Szi6hbat^J>)=Xy zWIg=G%BW8kG{2So9kWpUY9XP26{-Zh$Z+;YZ2d79{orLW4aN`Vtcg0|b1l4&?iKwN zoQG)$PENkDc5phSF0ynLGV=So=3jN-_ihGh2JBPXx$7jl5L?Y>mQNr0XW~Sj==-gr z$=m#2Fq?d{V*#mhAdmqz0mrK`19Nc_2NmD<1%fAc{ehcjY|IzoMXd)bqlTFt5QU*l zTr-3rtWmBBx)tGmY*Jq2p*wCnusYuERJ@v!4LbMm&_Y%01Xy+a@Cq*8-29_hfuI%E z=Dzb^e5QVFiK=);fNvYSKbT}MB-NlEq`)P>!o;SlX#EAJ(=6m?B$%t=40?>>a%j*> z%8&;!4)vKg?kk#B^{?I}$m;%dE4^5Dw82g-D%yHg$9Z=gEc zYUZIyihR_oz5+D|Lxbk`?*Pb|XyuuPI+7FI-}F7#Cr{Rpqty6(MDovdJtaw1j?V#P zKS(k(8GWhxRIp6C_JmKps7QvxywuSF#QXR)bx%R;sK!LJrTF|f(1=}bTjo+5lu-p# zjNl|{4YP{220<71$}sc_rSjNWa5&Z_rZ(&F$>2%-s^$#LIwb_MP3}MHbJC2M!~bj8 z1Bx*EHV&WW#O>Wp&x=iSa;=UxE{d5vR~XBdq_@QJk2dznXzjr~T$WFcCiMUI;|fEgEk> z!-dGsiZEkyb95xbvfwWwyMqF|S5t$;ba1}EpmFi5x|qz4;)ES|c2yoT-RwSg7%Y2w zcihY98i0hAKs>$c=9D`%HHFWZ|0sY7Eqa6h##>x^v2fELvtHAqx^^)B1e;iYsWM~O zFo&$!_B#>DbXPbg#~R`?mg}U$m{*v@UA~83n_MVJ&)z&ziqEzrfxYvr@rC%EJ+V3- z$yK~3<|R;Bnx@5K!Qu?(WlLx*@nzamnhtgly3k37V?%F6`A%mN6w(D{R^?S8BMPBc zJwpLfxv&o2L^Gb1lpyzmW`cfr@HyORNcI|_5$6{EFlcnt_6PSsNfHGgBD`ou^`Z;03Qhd}hr*g?$ywnUu!61q z#)hBr=Q-JZS<265lW4mpY-&3kP_0sZgxUxO1!F2f5?+J#e4!sr{k4 zNRwjehwVd+0aJ?!QE7ZbmgUpwj{vT(x42ozNatzsCauF`i_~0_SI#W*m6U3rT2ss- z&mRK-fZ&J6r0=;coJ3K2tIKi}GAw#1Se)56XY^pld_fB(GHCs6Lup54mTy;)#Ddd&f%}!rg%pD=X`pLqTNo6rTpD8zuWU@M<1jMcXSqD|Q#! z1Nv#3U(`{bDEno(gT?3|!{4p}!^D=ie5VuAXH{_isI|zFu47M^@Z>?|Bp##s)&+A3 z=QqCP2bps-bbU2DvwyeRR^<0K|2b&IISvPSBss(;H9NoAFmaqXXys=vKEhz6ed?^$ zt0GI>AYQYtg5-#o$EU2ve0XmH8wrIZE-btJjR6Pd!}$zzHeKeH2;M>qWs}~2`X?Gw zjBwk^%&UhB+%rw0wG+qKkV&htJ`b}$+D^a+tM-4O&PeCOplP`4Y?0gU>{Rhm4p=|Q z_dRUtP>H+UVeBN0YT&M({!Vrym{eBreSvY@fgt%Vk#7y^uFZ2=muq^aG!!VQDJI#& zPUpUjtF1zJr2IMnzHS-I(O4}$>YB(DMjI~Dom^txfY{8$9RP0t);f*gra)8b+wfKJ<=z=^c^QrgN>+=4FkE8!H@Q) zu;Xt9tCoe$t^Zxrb*8EQV_S8XJXtjlk|NcHcR&0W;koa5cP{jmOM|~?ro5zG4&U)8 zoGWw{6~m8RzKrt3Fs$Qg=4f79ea2C_yQOXD*`r!Dg;)*+y2Q#hf!&?% z(c;su0hvanh4KMmlvhmrUFgg24Hx2tDGt&y2r26tDNSC_4O-(P!{rdtuw^li_&^bq-&cA8Mdv_sC zPbVPvCrY)&EzCisW4D8)hgMJ1s}{OY3w#X}0b)&@XVNE7XB>&I77bV+QBqfh4UBt= z=tnX&3zFWpei6*T zJ87>YxY(I#KDxLSqH8g##O!>pi49FdJk4<(DaSckAkae$?zk~D!{o-kM7A~D2&?_& zBRSLW2O76}dwvgFe$ueR+NpZ+@oCiGmjv7Yvc3OQg>0AnJ}GfKMFCH3n-_|7j7MS* z(5*c)R|8KQ0*XSfnB+l2m+4I_dPL)XPZ#J#y&`wZX{G(5Zy@tpIIT&}&j4vn>uAlO zUSe?zo0r{`I$YJ6((b#UJ_RLqz!g1qj=IwE-;An#<i|jt+v(im6XZ5l0EBM5He)wWMf^W3_X;V>S6pBo9c1(n*XNz?6}qUX+^j4Swvob zTEN?6!+hV;x(Zllex6qFC`?eG$fssun2`lhUiZ32u4}$#&63^vxT>fdwF2AmZ9+x> zUt53QYPl17mQs2&%w2S2;x*}LiWuo_`V2R3VuT%EnWw#)+*b@&c|C&Q#g}o>tY}@0 z`=7FT)~#f}f{w_o-bD3Rx$1lMXJ!?5m#tkheY~d>@ED3?qJ(J$c7mhL}aSZ0+ z%{IQ`g1m)A2@|$v6(Uoao|rxTE8_sO$Az=n>Rj_5hB3*CGo)58;$x=&fxQPBlu}fv z;!_quQX|z|IkgRjj_!UnPkKF-t_^_cc6-|vscMSS$7e=fs}EFCXys*+B5--@$U8wD z*}EuLtxouw8Txt^(ovDipRwwU;P4Jy9OZkm?t#WoPZ^t5Jt*8s>f(*v)p7Nrb*9IxdCddyBN3he1Jw4TQ7&ue>Z zReCxz!ssEnKdNFn>g0(_;ATjj#8msf4Z6@J{qDZvo`D5Yy1>15c3;ZqsuJeuRCi1_ zX)zTYJpPc-z-PgBDs#%6F)@QmP6T_RhT3(8<5&6fJVI%bwB>=-MCs_~YoZI8jpol@ zU$P-|oz2C$vySC^R^qc&&8;0}K!J&Fm_^%K_*w(*Ku7QRY5Gd)fC)Yicm)&M?pGLj zFhn4AIIx*q{?hta@B7f%S^A_1VrMvJCvV)BsFQW&nt+P+s)M9s9ftZFd`E(g`ny8! zCdQPg>0}q_;?=_2;h4%aECuN?)8COR`LDloZWYz-$apSaK}r^5sU9jd=QHE(!CE$p-<6uC zi6DsYRgI^$d%}}4kH0gD;4_>Ssh+#c&&vUJJYSYgQeO?F2lv%Z3-cp+YDQ!RL2X%K zoH8WGAk*;TP#HACmc(zB8a@rL2?`PX4pf=}n=fwp2haPRXQ~Ui!{H)z>1Td5 z$a%?p+2CrAD9xh{?_pAFC{ZDIW1}H|*6qknD?9v$Q%lT6PC;LDwImE|1j)rf=Lz0m zWIVjH{L4&M>8ek)R8Nct#Lu_=X<2xdOo9<_)A(evq>kpyV$^|r5i<|o{aBtiR$miX z($JTcAC_Jjs^+A=yJ}T>DFw`d(vKX?UWuT2bLU5E_Ao7CTN~deEaw$;_q3W0r3pm2 z1AXv?K`J+_AZzE3@Iq)sxF|DR-4h>#FWpIVv~CjL@$-53@AJIV!pIp%w2WAo$`?X} zMaBYJe_~8Wg%Sl(8H8U0wznHcM)#G~XG87+b=AjubTCI4lvNU_lcl%P<`2C9)(0*` zNctPJWzYuW;e-3|&y3EQniCq$-oj2Q6q8D^`(CS_DL*D=^6&kyD7_>xLy`jh6#GN< zUUJ^oiAX_mf$S+sa4;Dcqm&k<_D8@622$(rOB(>d$7i-rwlTjH-ee{pn}3irT_~^I z^z+XJip_)&1~Xj9sw$Vsr{By)mZA(m9n2sZ%>{9cS-C<%%k8+JJoqxiJ1Jz;A4jr{ zmwuWbN~S~kJ1do}S;w^gu)1swK*-!qICX`bYCOi_?5ksqt%$ml#zgE@Ot{KGkC^ED zqZS=hsOF-gS)u&wd?0&$V{1|oq^F;0qOn>eXF7mi${_s?K)b=Uue*Xb+2tmHx$6 z%MNc{*8xRf|H!y0X(T@#;}5HB$B?sq=y%WvJ<(I9Xc@mzJK`Uv+bst z&^3U6&^NqV_jWsi%`1?n+NwFn747s5k&`>3X*v;OUK?a3UORu+KgSFd&5;A5M~dRm zisu~HfT;BjcwUzrSUSfTE-LIe^rBe$uEgr($TeWX9PSv6O?9I|WtU#kp7|gq)da)4 z5?f8Q&Qn+J9IFY2Q62MkZJ`w;+gBNxx*EZYWu&J{(qDcL5f@G^-^tT=+usY19Ky{U z2Z^!{ZCSV~huK9DshL`?3cu6AAY=W3K^&Yh4r!c^@X}x%!-F~EWo0a>(dK8(2~YMU z>$9~BN1k7Qa{rJTa>RR2t^rK(3NeS^Mhw%jFeDaTs_f5U5-ID87a*t`rD_*l{CVdU z`W!&&15kZ@o3!uVzb7@!f1+>uKdT=4MADRwbn$=HIyWB~^P4FL$pn3k#f)N3#bW{? z{CId3&xCuUvQ;_m@~+mZ`fKM^TfHUMaQpN2v@&dA%@qlC0MP%X0_u(?iwwHid3JZqRN!Hdw4cr#VMe4ac7U= zs&(EKXq)of)SSiiZa;dn9ykv?8X}&-oxFKxW6t;jP8D*hIwg+=d9qvHACmeKD*GP5 zI_JyWkb^X3iL(E%r0b5S>i_?TC}dTX5wfy385tq-;@Yw+*(;lC7Exw)*%ud=@Ui1| zN#?cp-rKduwds5M{m$dz{)NXq=e*AAykF1t9#^MjmskufSV+Ebv5Fuk?$Sv*EH>e6 z-`i<+g=6CA`@{Y2N2$+n?{(q=9!)dR?Eg3j?dP4?MF~H@bdMYPb$2Q@vHidw^}d(- zz$%qVU>_#wR@As^5!H$L!)InV{au}+Ve^{oeT(VH@q2z5@+&T9vrM=4tZMto4RLBy zT8zD?wZvvcN5U`&5WR)&?-_VGW7 zqgQdgS02*>53nK-a@xi$fzSD?n;UTq3JeyHAwRY}{M%<%Qp7pR#*eQxj?T0=JsU3` z^k4%^8p$|T4Q&UlV#$%#t_>15T*?rY)$_rV!;?2&viF9|viO24*uLXrI1G5_82EFIu6(ExK%>wJtUm7*bEI4^pX>1T%QKVH ztV@~sAmzj(o#D%jM)nb`2I|**F4Sx76@xm@3H5NLHbL$TNqE`+-y0&$4_immsL|&Zru5V5P>h`|!y(V1s))Tsl&-1n@6@aaW%2#dFcU4FUcINT z%c;4NiyT)*j>d8u4AO~Mgjq%-*Y`hek>h9X4(BWLEzC5&mQaF(osSMFXTyHxy>8l$SG@&klB{B}l1!dsD*5)sxW<6mXDy?>p8b#W zk3G}<3w<_vrF?&!3oV87WE47B1lV8q|G-KMlo2P#THOd|K}kKRgJXv%#{jism+|sC-^| z)u18hUUr3U2uPRVPvMtX#>S?PJ2D+n)w1Zn^gd5>ieAAzeZJv_!$@FjW5&Dny0%;e zKDd<_;8Qgvv8O``i%foM z)=kfxJ9<79C;kO`qA%yOqEjJMflOG>w_sZio8FD1HkF)6;6q!VD~7Le7X&yE%iY-}n+Mft(J5wM4q!KGY%pKF zAl8=cPnO`4qx{hF`=A8xJ`DbpqxDRF?+@%EJXo?RM14Vo*Czjv1#Cgz@mmJ$I zmZaU>qkZK)*LN*8nw~nA-Gr&QW?(Qb_mAUwmUcgF8D?kFE7-IBI(gt)Z(n)GCn){# ztbu>yc$ag@q2v{dx^V-tpvKL0`+N72A5)NOn>bg0jd*SUC1dOTIOT+;XB%hH>K75* zb6VFf+tW-Md$vvSKQ16Kn}zT-oa`gotts3jn|n*{sdMqXEkF5Z&&nkKciD-KHePQw zEhL7z`HnU1dJ&7hQblvG7QJ_`r$z+*#Rgh<^T%X-wFd)Zw}S`=5Ysc8=!6m(QrSlX zMfnHF_etL;$61hS znY@$HQxPwwbZ&Z%4I?>LT8EWuGSDa7aV!bTzf3z+Nqx9DqD*eO>=4%h>3C5WR``JSuhg_7bcad~Oh~yDg|hMM!D~Pg46=QVMKYFF?C9C@~hK z3AsbDw-($1+GnmTSrjI zr6(f6W6M$hIXW{5^EekkR_fGj&KoQi4g*th?X&+WPXn zX7AiAqvP@8s>zN-)Sr>zxrdDn**sAX+|fQV(!O51rGrfk1|8o83iS+3Wi=|#VCiE# z2AB>3^1}T(y2C2*p*5%)Wbj!BV|sD4v!p=!z-9y_O>327(=2lW#z9yv>z_IJXQ}QY zPxX)Kc^ap^XJbJLy_#HS<6NN1)UOD-D(iZ)TN8bzG^hr+owknp^gFMO2oHCpfF);GgBng)L*n z+@<~I_qx)Gnl~}~vg6=wIOvgd-b!vbs+~OFixMNxyKkm2KW^wJ;-K5aNBac4=i!2i zH0Lxd@rrajm-rJPpu)b(N4&z=`ro^R6UuL4Cjey#a2vq4Hr+w=Ev-ex{V6|>1HYy< zg9h`67ft?960%$mH-WMgwLIME%)ZhMg6O3drtLO~EB5*rRMn_Jmp%qT^?0Y0_Xh7$ zOS@aZvMeJlTp|`wDO#hZ!PVZL)PDge*o5m%j-|;nf6a-F*f^JHabMM12Hr$84Hq&I zMmjoqj;G#<3#H#{@YmUV`$;)%x@S`5<(7x)l7T@Jq5scOZU3ZGRXOjt)UnXhccUkJ zD=}|ADCu64S$#3=Hd_79yJV0|1-ftccC6aqy_B69ez}N2ML`lred4?a$Is<@FICBj zR3q;%$=fNH_fH1erk6Kl`%yUZZZAtw0dItqqpLZ|d(%{!jnh#b2d+L4q0nb|ndCN~ zFmQw%$;isy`4+@`;8mM#g)a9QQe)RtPTjE7BxI_~>M(k=!8vXZd7D1a>o8q;T%0Ff z6)X>m!0e2A!vw=)Xbk-%J+o%SPPwntgt4d>;2@#ZS22d;}>saFp_gZswoP z_y1t@W-1*}?!rY?M^13c22zj|?rLv(@BayVLc%cs0KB~T;W92o596FaSgeovKN@Ka zZL3fp_g43u`(lwjz8!@7=-{TSHEb9&HuTa_S{SGQe$f*gllZ|kK_0spt!2-o)I}vM zuGzw*a9vrVlJlfsyp2xnsDHz~kIU0I2ibLRFXlQ}Q9|vwv3K_p9;#pGgIqiwa_iu2 z>W$yp{ByHDW;Ooj#H4-G%{Db0q-_)%xN6Ef2U+cMkrPXqyVaLzMY&0aZN&;hm_q-g zlurWOOk#@u0nt<5x|Pe#uz~m1EMg8t`PB_8#Vc9F4%t|S+LtLPK5ELbow_0cmG%@d zdvRFI)0*K8F2}<7A4V;nx(4(|pqa8%rTa({412PGc#t}xcnugpxi6`eDM~C%cesCK z$Y|Q)P5v9#gr=HM7=h#K#DV0qU|p*pbC>B_NtT_5Yd2hsF5>jjFdGC)%=co#sbO_`{SM3HW$m@`M|y$Xx}XXqQERJiorcz1kC zJlPxoz*A%(+e4^S4vJ=uWxZeccwqif=fzoLvlRNZ><;rQp6n)mcI4%&^?f)kXt;Y{aW=0YPp@Nm zd{sTp;Httv<)u#(GiIOThhtCmeV9=?VHGRu`1>h2HfbKn(TJb*eyv|U(^8P?(S-!k zrk8(ZRL{aN=*^`fcFvOS)c#7MViZ<&)Dv?$x{dt4jrSU~KD-uWAp8g6ftg1*&VcB$ z+np;=x4R(|@h*@Dpwykk;y1t?((wWytKF%cPk**?C@o{dTXJrbZpjCoN2hG1>MX`* zVsZB9vi|%Q&OUCnD`CUzZ;D#0CSrE&L+(*i5JibKbq8_Oz(z)@^ZZj?%&StF+92~gmL)mmh`GptzFWEv~ajm{0=lWl|mX~6dPYt(=ed@gmndJ8w%bNLo$eJ(; zUY;aduhFu(W2YC?$lU3-$8dXPS9d?ATkPkCO9uXN+hq2A>5+*yVPa)_qj#(iADH=t zJ!(aZozr^+rO~RPf1L`Y8yM9`BX>+-kA~Zm5GyoIRI_Mv26`Uwt4d13oTAoBtd*l& z<3*OW-PK%deR!@~>M=&?BVb|jc8Hug_8h`8VucdRxce+A+IFRk)pw0;RwmEpYZ;*E zgREks>PvH{qH|)?|b`C78=+_jGVPf1q=oq@Y$QrgKndU9Z-VK+2t^t zzt^)GG?q<61x(=dtsE_|QOmP$T9d@WuY^2bf2X00 z%myp4Vojo>HFh%Tc7z`EPMBH4j41GcS`gvWF4sWDHi+nxVoiZ`(H4m=nAoWlg5AJw z6)Vh!9h+jbG)}preeA8hYqW(tqljAdgGCR!Tpmh3^WF0X88_0~ zq4HqnMgUdhLI9bQ?nI7hQsiw2Wf&hg3qOGqhlHsD+U+3#0q}4aM2JfsefFZM=(^X5 z)f6vJ9>ksnSEG$INh|go(RKD{feR-i(;eBM@?t;K>cb&Tj=a)X#*z-HtXv`8bQkW# zssszxk#4^#E}UQCuUS9i)PTCWEvzGXAurt-q98rnYr8zw21D#w&X$qCl<2CTJU_3v zBW2%^RPN(YFB{iVrA)(;KcqE$6=A=ELVHT(&f0l)IN(M`*_GqbF;rd+JTc$4;=@x> zB16+7PF+yl=b0PkB{S7OMh%?o=}N#=q{vEy5hkNLSa26D9dT_=eZ5iU{ScXq*fpT7 zdNw7hmGT#0v6<4ZpJ~@UV{dPuK@|t<(vMqlH3|fGuA6IAtRzOAy+#U1-K-1fEI$b2 zHz+9V@r~Pg$jFrP>e4^M(_W@eL#{^6w*T?_&Ei>cTSWHBr(wnXq?Pes4LX``<Zth=#*c#GduK*_bnc@Hj>pq`zzT8PX&;&L#AAIpOj zBTZLhSnW+~FFN__NjdBDVHedP8xi&TiKWiu@vQZzrGzu~vM)?gzI{gNtw-vAfoy1f z@6h_Gt(20FP7IIYM14mEbwL&6&=so3lZ)1Qs`sfi}$D*qk+7 zogrq4F=92sm1n7XDKb^vPwNW$Br#~ynXe=O0FPj$aTiq5=IbKR(H9lfG5S3)Ak)?v z#!pzm@=w_Clkz1DG74I;;NGmxMjgb@4dWhhQBy%Vd%ac?aj9%$8hM45OnU>Tw!}k4bQ_{Wam^E#J z=L?sMl`KrY8)_2HOBOe(WA_mdpfupJ4Q>tOpEA3%RF&CTMX3 zi{n-f-H7Kc8higFFzOeiFalzz!do$~`3W!sDa?Xkf{_qV_u?OkaW|xaI+U^%Tqwyu z(zO&h-m_{bluZ$I-ItR63*7oSefa!MMYTnt27R6#1iEh$pF7osb~F!EL3rREyA;t2 zCJy{@Kfj6%h)p&ff9E)ips~!_9y7jgY0i~#*jsuoqZaFpsJ)`UIWFGWsd*G9HQR7h z1)Y0f;OVi_b9FMqnlKb(Q<1s1X3zK5n)vCdiAXMm!Vd(}EaIEnOPNMx_mYV|i?C-W z)i!(G9^xxj31_zCezG0qcYa@5kNB70?Mn0!pN5}1mTiGzDN20um$$&P5(;4njgP@o zC822t5pSwGIy$ZdW^I`-90LlJU*0Zgya4e31Hk+J5j<@GV3ScnfLL0bZc0!aN3opt zrf>kYtKLxS4#U0kYqFfLANYcNT*(;ghRalwjFCDrMN zm+6ZjxM0D@H&$04>vUaWSUn!t&s200+VWlvj5iCvkIop)WDu|nEis?)P-F@CqjnSF zX_0nK>}NkJCupwN;2d~sE+3U%G&&7?EP0LC&q@_&z>F{GHSFlAAckDtw zYHi`9nVsux{M#|*QqP%dbReNGhwgGRjzL!X^sRVaZW<}OdPvG>1teP{*Ky7&^y3~! z6fOuo11Lr`T1e z5_uiouK@5agvjKs4k4Jv2><~^xBatv)_t#(xliTHHbgjL`9Xd;gI4T3^J{X6c+|k4 zj3yP5jw2u`E1fDG-G%lemOF`_t*IMHWq39_h#6T*S{Pc@t?F$Vfs&j`raC2hp4ood zc^GiCxk@VRh&oSMU%NK?u->1rOsftxoZR;1_~^Vvl|_+O|L^dCx?qwRBvD zowMI;=VBW;cHJfY8y`$EIbD2u99Vat29|vuqJ5d(eye_#8bJ*W#?mEyZ26g57oQ$f zpc|C$R!^bGb@BK+eN+6pSCxyvAk)`N`|sVYBcf+kP;3C09!!Ks-TdTVfY2RQ2B1A$ zii8vNHv}XrF^{2=gertVSLc@neN|B3ckx-DiVDEw+*Ylp1QXT(U_>r;MWHZb-`Ljj=t@)`__crfz<Blldk%Q46nQCil5- z$0bK(#9nLGoR%}OBPr9wqb8Gn-`P-QjVAP^NJQDv&d}A|2t#tIfQS;--l2)P;D>kJ z-G!(}^Eggd`LUdYcM_N*FQtR*K@j=+^=1ViVGTF*%R9I!ATG@!%@h!MFGb zhMoMQCYeJ3;2fB^cVf{Bvb0YhUh7sJ_ob<|iM2<-W6(0>MKUgvzbv;((@G`I2Xl`p zEC=`_p^BM5qm^s* zB=eoar*rde7n4RgmaI^dyIybldo;K71U+pGu4WSa*i89>u-{1atj>75`|)Kh&gmUJzLkXycFMrZg+ku%vv_zE+Op zq7oIaV1D_@9V~4uKLN+j8WPHHIxKJf??XX3fgnf#oKgM>yG24yVKv!Ta_ai9b$SR| za}6DDcpRxSum5ueCsfz8;`K)>W$ge)&t>m*OcyNEy&wQRX_hj*ilIs~DrnIg!!dc+ zm8~i}fC>upi`|>B`lm?2nu79?nlzys=Q^rN1(Q=3^|CG9tFF_**xKqPjQLB@HFW>{ zm85CS#i!~}l;%z7E?6GrJb{%*o(^+|z-YP+&cF3;p`>qe z4Twb!EuAmQ1D6_iAR2CkI9X^sK;}aF6|YSBF%jSi5ETPTPyVHzc;4dq5aVQdi!J^1aan;8?;|C1j>E>^J+(|q_j_C zj*H26DY39dL~ed*F6LUZ!Z%%OnXM$;XK8CWReAJ61a6}X6DvrO^Q}G3O*$^u-ZRj= z{&snc;)0|Ylo7&+$8O%q@vsjjPOo*Qbcjx=#4j16$A~f235N5XS1N56siSA%PQ5o= zQx@OWRMTQO_|+;|QwYAYHM zMPXp~1i)GWiF-vdm;Qzmj#klB2$w^)r_Ke3X1w<0Mb{_joqlV9$r{1VX7v@&} zy+4jhuwFtLmDwQXfoRYFkv5KmifEPl$j>2B)8Ba_~ei+v+j(#Rr{ zZCLX>F|iflojy3&&)>v42RU%uFqFH8xx;zta9%DVKGr{{o6spyNoK-_U($x{){8} z&=^Mxf^a7DwOq za9Og>Rq0VhcT_t)_K|~Ilz-=OQ-JeR1VzbA|7m*i0V6E$oYBtxz7QH< z`PyzkRZY{SXiBz?4+m|V38$1_7C1S-<{GoGm?pF`6NhMryZ|>Nk$(ZgsV|7JfnW^Q zjbLHisafS&-VfJo#XVTS?BM*-^NRkL<*ux7F++P=@Dbe(#PH!3zQ}-pHY+V;ES7f@ zGg^9_*Mq$fPopOG#>h+_1_ncyBrd-E8Fy~5x9cOFqaL?5uW~-+$?t>S$b5I?UoACJ z9^5CM^^uXVo09Fd$wK!JPL5O9h>V^FnI>I->zeI@YTbiOBL4z2H!X3MP}aI&VZ?UY z&=YFYf@=Co_*K=1Z)WRlgh>gtq^@9DoqmZPoXq%%O~XzNTM6!*%^I?LT2 zohDmCE;~^=Dm9!~MTPRL_51@n!YOYy%=qM>szsb>>&n?M`E`=+D`h%|jYGcGF#agE z%TzBhYX90G`H^=iW|bM~?uoTMS%1I>_`!@MCpd*gbT(7}CZtNJtmO{5r+*6!Q_778 z4V7TGB-q6V-wqrVEVK6kC>t8%|0Us+Ih2ifh2|D$mkj~`1$eOs2fg$*rM|6(+PBT0 z%IWW0Qb!mM|8Ywxb=(MKB*koj#95l7`$)38QBcNpd%+K=fwFL1zsefa8C6(E)b4x3 zQ*$JQiJ)4ZmO#qX3TDek3N$kHAaz-pG|6$a?CbE^xRwiz%H3@fp5n{N!MJ8Pt&b1) zU!aDMjCFBHw>q_VFmE3xx~QY8K3&?gyjW44KCc9^Qdz{_^=gXG(n=>4^FkwRrIQq~?kx4ls3K(qHRRs*z%K4{*mbbTl40|=^UE?@>8j4?B z%&k+K%3!jMp4NfsXnMLn&v2tg1gD2vT0HNK>4QledkQGYpes$%@yy5~a zl*P2Ra_{p5=5CV;3pfYXRx-bC;^-n4uFRKBxZ@fpt(^*uv}{d@DXci(URmWqcfNo= z`TZJr!UfzS5DKA+_7e?P!|gsl;eWzPSdMz$ zR3vXI{0XxYoRU3B>GYvn{tfqSb}3=hlh^lp8a~k) zDxHYOX&3K29}Wy_2&*nf7GvLL>Q3D#UayLd1{^c(Nm)dh!e!y&YUpa!A8sis&ex3V z7QFm*SFxWJG6j$|LpjHFSgP%^XYUf9mdE?tKl1MISh>zQ=m~rT<(SEsDk_<| zLX}``M{QG#G4*QGwH_g#I>P}e$|5Toz(tT;9Y3WLJp{qUYcGWZ^#sRd;2jYmCbN)`3`!{t~u zljA+>s>DVRqTxl%^JENrp# z4&AEyEoc`L)aT6TI~c80=)$w@)q+qnXSp6$^(xg7w#fRZpL)VA zYwhp|o|JYZ?4jm{OwlNonq2U0ihi@PukMj-IEC%+{$Qh9Ix_giK=FF+x$dLg!HM98_Uhcl4;CdZWaz2#4LR?U zH`0#IqCzR`J|Nshz8j4)pG{W(7YZUH}yXqb8F&>c4 zLQTaaWhWZIy^$h!u(E_EA1OgR@V8kAONa!xUOI=z^#oAeVxS@&sS%m+6d+>sa8~5m|6P~;RHCQEpHjzG_y!;EV zy12E#eyv8LOf?6(wkca5$k@*sTJep3tA}>IF5U`;ND%{P`lTijcmVi9H>WEWi^Z9x z@bQ+6^-^o&&Z)AcBXKv24$;z5OzrJe4>!SJv{?wQr@l+0=AvXYWQHBe#4 zioxcu#%i83WuAcs#%;`B;P^c?!-oX=s1MqNq<}t^ta2orJmg`^Oh9gtbVnuA*9~iJ zDzX2%NNBn&6nQ=jD)B`a%Df<6(JzXBuLW<$XG^+QZ*I_c0us%SnKp&RH!x*k23vOqNFPan%f(~i_sHPGrA*y^(t zZA8~du^bDapkGn5mN`E5un3=WX%W>GQvneb@fC0}qZ_!4K7Y`;b@6q*w~9-%ram!& zxnGeOI$6 zKa|3D3jP2P_871?z5g2^_zgh7$Mzo9SM+(q&n76_GE>n#HR6>Tw3~vljJ#InzP@$YS`>%u z>$P%sf831ultG20eSK1aHP=>s^kIHh(PIB7Tb=YweU=I)#w3^VbBpkq6KG0o&olRi z8ri0W(1g_i>)=-c=w|G400Qmy52WCZF?C!nMy#N&rHj_=&aiuGya8PGPAPyH;mlNf z@Q47#mf&d0mhkE)<^3mk+5nNfDgiV03HT^}0~k+3-u}8Ct&NymjCna<2O;s~V3hvs zHdw_aa2@y1ehK#6LIp95yD0TKlp!^Li$G43BgE6>c>RPa3x@AgL?jA{?V|M$`gOzxq zl%G$3R;n$;zgJ`=S1g^=&%O6 z_Lp5&*XtuSBYu@lz6OR&zw~CHMRDJgF7lI2BrCmUOphhqZ8K_W(M02cn)gAKhnJNO zF&}9`Lt}#p5LUB*G`0;2w0P%CdG|SUKIs zP*dvP=XhXGxsO>OV6j-Kv}hd^=uCmINw6tAtmapKLPAYQ#Ho<;M!xgC>U%0GnU{EF z?GwxHkdaH*+s%_7NkC8fz}t?}eP^m#xI`kSoq!Kq_~X1Dt(DNJLvghAot2&plb8OO zj(yBEttEO*{c?WfC+>XfAV?{AL}Y9$m}UHn?eQhmFNj>)zfbW5F0V-h0&9QSZgkbZ zp_{advgSNAi7bU2bEhd3u1E#F7|xR{4?D}Y2U)xO!bh^NS?i&12#F-g3Gg&tb8|=H z7vYC^O5sJ9y$B$4Fk+=uT(MGf5soy)Gf85T!inMu(-0|u%p}y^F2Q0&rcJ>=lns3B zhzNea0O1@Wo)@=?7+W`Fx>dI~-e1n;a@QZqZsoNv)0DGLc97lOar`hKk+5*}dD}lI z|5s3Ud`3>m)#JmC4UewJe&4!8JKYAT^gi?0?eL2G?(QGXUjqQl^^ z#!%KZNyfv+cV`kFu7qG>+L4u8Y&&OS>b-+}t$K%bmgG~;2BkZdP-*0g$I*6oI*%D% zZNSJw-x+{OEuz&-tW1P#V*d?|z+-E;>N%h+W{kEba ziHGo_kQdw}x1WH4_um}oKHb$Ou~u?067|2iHB=9o6WgekZ7B>bK9rGmRM?#G&fn8H zIXWk)VY12Zy8R$j=>15$@2GKD#RaW8Ns+~#1&Q_%pHf_v?lPH6%;JN0_5AFd4zeBk zQeI6!p0#(r+1u>`(6`h9ku{pq@ENKri|voFpC3sGXLhyZ7zH=*MHS#72 z%kYfc9y1xzIgVfvE-M4j;rlCk?rC+7wzrXO$t4y1FHoi0e4eJ{U{AAQqF&3zWUW3W4jGz+fR0(TCtz>~Fd&2_ z>r)wVT9v9;?tlGOuHU9(**f%)8!ihLJ z3Allrhq*aG4qTh$Vnt-kT1f=W1JKKgK4RS#6kE6+hEiKoG7Na8G1oji{(y-NuVH ziibUDI}|Yoq~;U(C80-glx@2g-?>Y*q`nCR6*?T1pw%P;*u5F^=7$c zm8Q>Itqyi}QFyAMtdie9hd-etqkB0~L8(h?2eA1uxGvbP-SB~?3FEaSK#&c1{e&|I ZFZ#A{NDf{ao+8a}D^B=_7kB( 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%0DjT-yIfru`v1{k@ac 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 diff --git a/build/main.o b/build/main.o index daec6310244316f28e933f13a310d407227b85ae..5b67c39a2e23ae29e7af8bd80d29dda19598f92b 100644 GIT binary patch delta 19676 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 R=#&UGFb+p8JsRQc|9|*DDf<8b delta 19775 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 PSIvmSQA@@U=b--sR{U2h diff --git a/config/local-nginx.conf b/config/local-nginx.conf index c0fd855..be43419 100644 --- a/config/local-nginx.conf +++ b/config/local-nginx.conf @@ -1,5 +1,5 @@ # Local Ginxsom Development Server Configuration -# This configuration serves files directly from the local repo directory +# Comprehensive Blossom Protocol Implementation # Main context - specify error log here to override system default error_log logs/error.log debug; @@ -41,47 +41,206 @@ http { # Maximum upload size (adjust as needed) client_max_body_size 100M; - # Security headers + # Security headers (applied to all responses) add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY; add_header X-XSS-Protection "1; mode=block"; - # Delete blob endpoint - DELETE / (must come first) - location ~ "^/([a-f0-9]{64}).*$" { - # Only handle DELETE method for this pattern - if ($request_method != DELETE) { - # Let other patterns handle non-DELETE requests for this path - return 404; + # 1. SPECIFIC ENDPOINTS (most specific first) + + # PUT /upload (BUD-02) - File uploads + location = /upload { + if ($request_method !~ ^(PUT|HEAD)$) { + return 405; } - - # Pass to FastCGI application for processing - include fastcgi_params; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; fastcgi_pass fastcgi_backend; } - # Old working regex pattern - testing rollback + # GET /list/ (BUD-02) - List user's blobs + location ~ "^/list/([a-f0-9]{64})$" { + if ($request_method !~ ^(GET)$) { + return 405; + } + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + + # PUT /mirror (BUD-04) - Mirror content + location = /mirror { + if ($request_method !~ ^(PUT)$) { + return 405; + } + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + + # HEAD/PUT /media (BUD-05) - Media operations + location = /media { + if ($request_method !~ ^(HEAD|PUT)$) { + return 405; + } + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + + # PUT /report (BUD-09) - Report content + location = /report { + if ($request_method !~ ^(PUT)$) { + return 405; + } + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + fastcgi_pass fastcgi_backend; + } + + # 2. BLOB OPERATIONS (SHA256 patterns) + + # GET/HEAD/DELETE / (BUD-01) - Blob operations with optional file extensions location ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" { - limit_except HEAD GET { - deny all; + # Handle DELETE method via rewrite to avoid fastcgi_param in if block + if ($request_method = DELETE) { + rewrite ^/(.*)$ /fcgi-delete/$1 last; } - # Route HEAD requests to FastCGI via rewrite + # Route HEAD requests to FastCGI for metadata if ($request_method = HEAD) { rewrite ^/(.*)$ /fcgi-head/$1 last; } - # GET requests served directly with explicit file extensions - # Potentially in the future look at a LUA extension - try_files /$1.jpg /$1.jpeg /$1.png /$1.webp /$1.gif /$1.pdf /$1.mp4 /$1.mp3 /$1.txt /$1.md=404; - - # Set appropriate headers for blobs + # Only allow GET for file serving at this point + if ($request_method != GET) { + return 405; + } + + # GET requests - serve files directly with extension fallback + try_files /$1.txt /$1.jpg /$1.jpeg /$1.png /$1.webp /$1.gif /$1.pdf /$1.mp4 /$1.mp3 /$1.md =404; + + # Cache headers for blob content add_header Cache-Control "public, max-age=31536000, immutable"; - add_header X-Content-Type-Options nosniff; - add_header X-Frame-Options DENY; - add_header X-XSS-Protection "1; mode=block"; } - + + # Internal handler for DELETE operations + location ~ "^/fcgi-delete/([a-f0-9]{64}).*$" { + internal; + fastcgi_pass fastcgi_backend; + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD DELETE; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param REQUEST_URI /$1; + fastcgi_param DOCUMENT_URI /$1; + fastcgi_param DOCUMENT_ROOT $document_root; + fastcgi_param SERVER_PROTOCOL $server_protocol; + fastcgi_param REQUEST_SCHEME $scheme; + fastcgi_param HTTPS $https if_not_empty; + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; + } + + # 3. INTERNAL HANDLERS # FastCGI handler for HEAD requests location ~ "^/fcgi-head/([a-f0-9]{64}).*$" { @@ -102,32 +261,7 @@ http { fastcgi_param SERVER_NAME $server_name; } - - # Upload endpoint - requires authentication - location /upload { - # Pass to FastCGI application for processing - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; - fastcgi_pass fastcgi_backend; - - # Only allow PUT method for uploads - if ($request_method !~ ^(PUT)$ ) { - return 405; - } - } - - # List blobs endpoint - GET /list/ - location ~ "^/list/([a-f0-9]{64}).*$" { - # Pass to FastCGI application for processing - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root/ginxsom.fcgi; - fastcgi_pass fastcgi_backend; - - # Only allow GET method for list requests - if ($request_method !~ ^(GET)$ ) { - return 405; - } - } + # 4. UTILITY ENDPOINTS # Health check endpoint location /health { @@ -144,7 +278,7 @@ http { # Root redirect location = / { - return 200 "Ginxsom Local Development Server\nTry: GET /\nHealth: GET /health\n"; + return 200 "Ginxsom Blossom Server\nEndpoints: GET /, PUT /upload, GET /list/\nHealth: GET /health\n"; add_header Content-Type text/plain; } } diff --git a/db/ginxsom.db b/db/ginxsom.db index 61d084ef4830f4544477ae0545d99fcbf19f0366..09f3247e76737f132856b0bef4fb645d328d3ab4 100644 GIT binary patch delta 858 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 diff --git a/db/ginxsom.db.backup.1755562070 b/db/ginxsom.db.backup.1755562070 deleted file mode 100644 index ce6cca22ac8d5991410c75c7f80c018fffd0cf32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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 aS`^`dN7bST3p}J2ML1x3>(QaKLGHh2Eesj} diff --git a/db/schema.sql b/db/schema.sql index 216264b..e34b52c 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -29,17 +29,13 @@ CREATE TABLE IF NOT EXISTS server_config ( CREATE INDEX IF NOT EXISTS idx_blobs_uploaded_at ON blobs(uploaded_at); CREATE INDEX IF NOT EXISTS idx_blobs_uploader_pubkey ON blobs(uploader_pubkey); CREATE INDEX IF NOT EXISTS idx_blobs_type ON blobs(type); -CREATE INDEX IF NOT EXISTS idx_blobs_size ON blobs(size); -- Insert default server configuration +-- Insert basic server configuration INSERT OR IGNORE INTO server_config (key, value, description) VALUES ('max_file_size', '104857600', 'Maximum file size in bytes (100MB)'), ('require_auth', 'false', 'Whether authentication is required for uploads'), - ('allowed_types', '*', 'Allowed MIME types (* for all)'), - ('server_name', 'ginxsom', 'Server name for responses'), - ('storage_quota', '10737418240', 'Total storage quota in bytes (10GB)'), - ('cleanup_interval', '86400', 'Cleanup interval in seconds (daily)'), - ('max_upload_rate', '1048576', 'Max upload rate per client in bytes/sec (1MB/s)'); + ('server_name', 'ginxsom', 'Server name for responses'); -- View for storage statistics CREATE VIEW IF NOT EXISTS storage_stats AS @@ -52,186 +48,4 @@ SELECT COUNT(DISTINCT uploader_pubkey) as unique_uploaders FROM blobs; --- View for recent uploads (last 24 hours) -CREATE VIEW IF NOT EXISTS recent_uploads AS -SELECT - sha256, - size, - type, - uploaded_at, - uploader_pubkey, - filename, - datetime(uploaded_at, 'unixepoch') as uploaded_datetime -FROM blobs -WHERE uploaded_at > (strftime('%s', 'now') - 86400) -ORDER BY uploaded_at DESC; --- ============================================================================ --- AUTHENTICATION RULES SYSTEM --- ============================================================================ - --- Authentication rules table for flexible access control -CREATE TABLE IF NOT EXISTS auth_rules ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - rule_type TEXT NOT NULL, -- 'whitelist', 'blacklist', 'hash_blacklist', 'rate_limit', etc. - rule_target TEXT NOT NULL, -- pubkey, hash, IP, MIME type, etc. - rule_value TEXT, -- JSON for complex rules (optional) - operation TEXT NOT NULL DEFAULT '*', -- 'upload', 'delete', 'list', '*' (all operations) - enabled INTEGER NOT NULL DEFAULT 1, -- 0 = disabled, 1 = enabled - priority INTEGER NOT NULL DEFAULT 100, -- Lower numbers = higher priority (for conflict resolution) - expires_at INTEGER, -- Optional expiration timestamp - created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - created_by TEXT, -- Admin pubkey who created this rule (optional) - description TEXT, -- Human-readable rule description - CHECK (enabled IN (0, 1)), -- Boolean constraint - CHECK (priority >= 0), -- Priority must be non-negative - CHECK (expires_at IS NULL OR expires_at > created_at) -- Expiration must be in future -); - --- Rule evaluation cache for performance optimization -CREATE TABLE IF NOT EXISTS auth_cache ( - cache_key TEXT PRIMARY KEY, -- SHA-256 hash of request parameters - allowed INTEGER NOT NULL, -- 0 = denied, 1 = allowed - rule_id INTEGER, -- Which rule made the decision (optional) - rule_reason TEXT, -- Human-readable reason for decision - expires_at INTEGER NOT NULL, -- Cache entry expiration - created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - CHECK (allowed IN (0, 1)), -- Boolean constraint - FOREIGN KEY (rule_id) REFERENCES auth_rules(id) ON DELETE SET NULL -); - --- Indexes for authentication system performance -CREATE INDEX IF NOT EXISTS idx_auth_rules_type_target ON auth_rules(rule_type, rule_target); -CREATE INDEX IF NOT EXISTS idx_auth_rules_operation ON auth_rules(operation); -CREATE INDEX IF NOT EXISTS idx_auth_rules_enabled ON auth_rules(enabled); -CREATE INDEX IF NOT EXISTS idx_auth_rules_priority ON auth_rules(priority); -CREATE INDEX IF NOT EXISTS idx_auth_rules_expires ON auth_rules(expires_at); -CREATE INDEX IF NOT EXISTS idx_auth_cache_expires ON auth_cache(expires_at); - --- ============================================================================ --- ADMINISTRATIVE SYSTEM --- ============================================================================ - --- Administrators table for nostr-based server administration -CREATE TABLE IF NOT EXISTS administrators ( - pubkey TEXT PRIMARY KEY NOT NULL, -- Nostr public key (64 hex chars) - permissions TEXT NOT NULL DEFAULT '[]', -- JSON array of permissions - added_by TEXT, -- Pubkey of admin who added this admin - added_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - expires_at INTEGER, -- Optional expiration timestamp - enabled INTEGER NOT NULL DEFAULT 1, -- 0 = disabled, 1 = enabled - description TEXT, -- Human-readable description - last_seen INTEGER, -- Last administrative action timestamp - CHECK (length(pubkey) = 64), -- Ensure valid pubkey length - CHECK (enabled IN (0, 1)), -- Boolean constraint - CHECK (expires_at IS NULL OR expires_at > added_at), -- Expiration must be in future - FOREIGN KEY (added_by) REFERENCES administrators(pubkey) ON DELETE SET NULL -); - --- Administrative actions audit log -CREATE TABLE IF NOT EXISTS admin_log ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - admin_pubkey TEXT NOT NULL, -- Which admin performed the action - command TEXT NOT NULL, -- Administrative command executed - parameters TEXT, -- JSON command parameters - result TEXT, -- Success/failure result and details - timestamp INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - event_id TEXT, -- Reference to nostr event (optional) - target_table TEXT, -- Which table was affected (optional) - target_id TEXT, -- Which record was affected (optional) - ip_address TEXT, -- Client IP address (optional) - user_agent TEXT, -- Client user agent (optional) - FOREIGN KEY (admin_pubkey) REFERENCES administrators(pubkey) ON DELETE CASCADE -); - --- Server identity and administrative configuration -INSERT OR IGNORE INTO server_config (key, value, description) VALUES - ('server_pubkey', '', 'Server nostr public key (generated on first run)'), - ('server_privkey_file', 'keys/server.key', 'Path to encrypted server private key file'), - ('admin_relays', '[]', 'JSON array of relay URLs for administrative events'), - ('admin_event_processing', 'true', 'Enable nostr-based administrative event processing'), - ('require_admin_auth', 'true', 'Require admin authorization for sensitive operations'), - ('auth_rules_enabled', 'true', 'Enable flexible authentication rules system'), - ('auth_cache_ttl', '300', 'Authentication cache TTL in seconds (5 minutes)'), - ('admin_session_timeout', '3600', 'Administrative session timeout in seconds (1 hour)'), - ('max_admin_log_entries', '10000', 'Maximum administrative log entries to retain'); - --- Indexes for administrative system performance -CREATE INDEX IF NOT EXISTS idx_administrators_enabled ON administrators(enabled); -CREATE INDEX IF NOT EXISTS idx_administrators_expires ON administrators(expires_at); -CREATE INDEX IF NOT EXISTS idx_admin_log_timestamp ON admin_log(timestamp); -CREATE INDEX IF NOT EXISTS idx_admin_log_admin_pubkey ON admin_log(admin_pubkey); -CREATE INDEX IF NOT EXISTS idx_admin_log_command ON admin_log(command); - --- ============================================================================ --- VIEWS FOR ADMINISTRATIVE QUERIES --- ============================================================================ - --- View for active authentication rules -CREATE VIEW IF NOT EXISTS active_auth_rules AS -SELECT - id, - rule_type, - rule_target, - rule_value, - operation, - priority, - expires_at, - created_at, - created_by, - description, - CASE - WHEN expires_at IS NULL THEN 'never' - WHEN expires_at > strftime('%s', 'now') THEN 'active' - ELSE 'expired' - END as status -FROM auth_rules -WHERE enabled = 1 -ORDER BY priority ASC, created_at ASC; - --- View for active administrators -CREATE VIEW IF NOT EXISTS active_administrators AS -SELECT - pubkey, - permissions, - added_by, - added_at, - expires_at, - description, - last_seen, - CASE - WHEN expires_at IS NULL THEN 'never' - WHEN expires_at > strftime('%s', 'now') THEN 'active' - ELSE 'expired' - END as status, - datetime(added_at, 'unixepoch') as added_datetime, - datetime(last_seen, 'unixepoch') as last_seen_datetime -FROM administrators -WHERE enabled = 1; - --- View for recent administrative actions (last 7 days) -CREATE VIEW IF NOT EXISTS recent_admin_actions AS -SELECT - id, - admin_pubkey, - command, - parameters, - result, - timestamp, - event_id, - target_table, - target_id, - datetime(timestamp, 'unixepoch') as action_datetime -FROM admin_log -WHERE timestamp > (strftime('%s', 'now') - 604800) -- 7 days -ORDER BY timestamp DESC; - --- View for authentication statistics -CREATE VIEW IF NOT EXISTS auth_stats AS -SELECT - (SELECT COUNT(*) FROM auth_rules WHERE enabled = 1) as active_rules, - (SELECT COUNT(*) FROM auth_rules WHERE enabled = 1 AND expires_at > strftime('%s', 'now')) as non_expired_rules, - (SELECT COUNT(*) FROM auth_cache WHERE expires_at > strftime('%s', 'now')) as cached_decisions, - (SELECT COUNT(*) FROM administrators WHERE enabled = 1) as active_admins, - (SELECT COUNT(*) FROM admin_log WHERE timestamp > (strftime('%s', 'now') - 86400)) as daily_admin_actions; diff --git a/debug_hash_data.log b/debug_hash_data.log new file mode 100644 index 0000000..482f769 --- /dev/null +++ b/debug_hash_data.log @@ -0,0 +1,42 @@ +=== HASH DEBUG SESSION === +Content length: 296 +File data to hash: 5465737420626c6f6220636f6e74656e7420666f722047696e78736f6d20426c6f73736f6d207365727665720a54696d657374616d703a20323032352d30392d30325431333a35393a31312d30343a30300a52616e646f6d20646174613a20373730353061633932653438633437373436653164393035343164393930373965383131633539666464313039343931313635623664333130656638646137360a54657374206d6573736167653a2048656c6c6f2066726f6d207075745f746573742e7368210a0a546869732066696c65206973207573656420746f2074657374207468652075706c6f61642066756e6374696f6e616c6974790a6f66207468652047696e78736f6d20426c6f73736f6d2073657276657220696d706c656d656e746174696f6e2e0a +File data as string: Test blob content for Ginxsom Blossom server +Timestamp: 2025-09-02T13:59:11-04:00 +Random data: 77050ac92e48c47746e1d90541d99079e811c59fdd109491165b6d310ef8da76 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. + +Calculated SHA-256: e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 +=== END DEBUG SESSION === + +=== HASH DEBUG SESSION === +Content length: 296 +File data to hash: 5465737420626c6f6220636f6e74656e7420666f722047696e78736f6d20426c6f73736f6d207365727665720a54696d657374616d703a20323032352d30392d30325431343a32323a35352d30343a30300a52616e646f6d20646174613a20393532613538346438663366633662356534396231646661626266363864373633383564366435313134326161303731373063373138393765613836316330330a54657374206d6573736167653a2048656c6c6f2066726f6d207075745f746573742e7368210a0a546869732066696c65206973207573656420746f2074657374207468652075706c6f61642066756e6374696f6e616c6974790a6f66207468652047696e78736f6d20426c6f73736f6d2073657276657220696d706c656d656e746174696f6e2e0a +File data as string: Test blob content for Ginxsom Blossom server +Timestamp: 2025-09-02T14:22:55-04:00 +Random data: 952a584d8f3fc6b5e49b1dfabbf68d76385d6d51142aa07170c71897ea861c03 +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. + +Calculated SHA-256: 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1 +=== END DEBUG SESSION === + +=== HASH DEBUG SESSION === +Content length: 296 +File data to hash: 5465737420626c6f6220636f6e74656e7420666f722047696e78736f6d20426c6f73736f6d207365727665720a54696d657374616d703a20323032352d30392d30325431353a31373a34372d30343a30300a52616e646f6d20646174613a20346538666566656333313034623838343038663063373161373365393762613137363834363734376535353737333334643432626533313438333961396262610a54657374206d6573736167653a2048656c6c6f2066726f6d207075745f746573742e7368210a0a546869732066696c65206973207573656420746f2074657374207468652075706c6f61642066756e6374696f6e616c6974790a6f66207468652047696e78736f6d20426c6f73736f6d2073657276657220696d706c656d656e746174696f6e2e0a +File data as string: Test blob content for Ginxsom Blossom server +Timestamp: 2025-09-02T15:17:47-04:00 +Random data: 4e8fefec3104b88408f0c71a73e97ba176846747e5577334d42be314839a9bba +Test message: Hello from put_test.sh! + +This file is used to test the upload functionality +of the Ginxsom Blossom server implementation. + +Calculated SHA-256: 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc +=== END DEBUG SESSION === + diff --git a/debug_validation.log b/debug_validation.log new file mode 100644 index 0000000..0701cb8 --- /dev/null +++ b/debug_validation.log @@ -0,0 +1,36 @@ +=== STRUCTURE VALIDATION DEBUG === +nostr_validate_event_structure result: 0 (Success) +=== END STRUCTURE DEBUG === + +=== CRYPTO VALIDATION DEBUG === +nostr_verify_event_signature result: 0 (Success) +=== END CRYPTO DEBUG === + +=== COMPLETE VALIDATION DEBUG === +nostr_validate_event result: 0 (Success) +=== END COMPLETE DEBUG === + +=== STRUCTURE VALIDATION DEBUG === +nostr_validate_event_structure result: 0 (Success) +=== END STRUCTURE DEBUG === + +=== CRYPTO VALIDATION DEBUG === +nostr_verify_event_signature result: 0 (Success) +=== END CRYPTO DEBUG === + +=== COMPLETE VALIDATION DEBUG === +nostr_validate_event result: 0 (Success) +=== END COMPLETE DEBUG === + +=== STRUCTURE VALIDATION DEBUG === +nostr_validate_event_structure result: 0 (Success) +=== END STRUCTURE DEBUG === + +=== CRYPTO VALIDATION DEBUG === +nostr_verify_event_signature result: 0 (Success) +=== END CRYPTO DEBUG === + +=== COMPLETE VALIDATION DEBUG === +nostr_validate_event result: 0 (Success) +=== END COMPLETE DEBUG === + diff --git a/logs/access.log b/logs/access.log index cc2d58d..d20e93e 100755 --- a/logs/access.log +++ b/logs/access.log @@ -12,3 +12,17 @@ 127.0.0.1 - - [02/Sep/2025:12:45:42 -0400] "PUT /upload HTTP/1.1" 200 262 "-" "curl/8.15.0" 127.0.0.1 - - [02/Sep/2025:12:46:50 -0400] "PUT /upload HTTP/1.1" 200 262 "-" "curl/8.15.0" 127.0.0.1 - - [02/Sep/2025:12:49:20 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 200 1520 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:13:59:11 -0400] "PUT /upload HTTP/1.1" 200 262 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:13:59:38 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:03:38 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:05:11 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:22:56 -0400] "PUT /upload HTTP/1.1" 200 262 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:23:24 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:24:38 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 200 635 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:25:06 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:14:25:10 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:15:17:32 -0400] "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" 200 635 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:15:17:47 -0400] "PUT /upload HTTP/1.1" 200 262 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:15:18:08 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 404 162 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:15:20:15 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" 200 296 "-" "curl/8.15.0" +127.0.0.1 - - [02/Sep/2025:15:20:49 -0400] "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 HTTP/1.1" 200 296 "-" "curl/8.15.0" diff --git a/logs/error.log b/logs/error.log index 86adcb5..4cf5e64 100755 --- a/logs/error.log +++ b/logs/error.log @@ -11459,3 +11459,4779 @@ X-XSS-Protection: 1; mode=block 2025/09/02 12:49:20 [debug] 176727#176727: timer delta: 1 2025/09/02 12:49:20 [debug] 176727#176727: worker cycle 2025/09/02 12:49:20 [debug] 176727#176727: epoll timer: -1 +2025/09/02 13:54:38 [notice] 176726#176726: signal 15 (SIGTERM) received from 185166, exiting +2025/09/02 13:54:38 [debug] 176726#176726: wake up, sigio 0 +2025/09/02 13:54:38 [debug] 176726#176726: child: 0 176727 e:0 t:0 d:0 r:1 j:0 +2025/09/02 13:54:38 [debug] 176726#176726: termination cycle: 50 +2025/09/02 13:54:38 [debug] 176726#176726: sigsuspend +2025/09/02 13:54:38 [debug] 176727#176727: epoll: fd:7 ev:0001 d:0000786ADF2DF0F8 +2025/09/02 13:54:38 [debug] 176727#176727: channel handler +2025/09/02 13:54:38 [debug] 176727#176727: channel: 32 +2025/09/02 13:54:38 [debug] 176727#176727: channel command: 4 +2025/09/02 13:54:38 [debug] 176727#176727: channel: -2 +2025/09/02 13:54:38 [debug] 176727#176727: timer delta: 3918486 +2025/09/02 13:54:38 [notice] 176727#176727: exiting +2025/09/02 13:54:38 [debug] 176727#176727: flush files +2025/09/02 13:54:38 [debug] 176727#176727: run cleanup: 00005B3FE0BEBAA0 +2025/09/02 13:54:38 [debug] 176727#176727: run cleanup: 00005B3FE0BDEA38 +2025/09/02 13:54:38 [debug] 176727#176727: cleanup resolver +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BECE00 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BDFC00 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BBEB70 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BBDA60 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BB7A30 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BB6970 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BB58B0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BB47F0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BAC190 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BA3160, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BAD5A0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BB8A40, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BBFB80, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BC3B90, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BC7BA0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BCBBB0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BCFBC0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BD3BD0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BD7BE0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BDBBF0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BE0DD0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BE4DE0, unused: 0 +2025/09/02 13:54:38 [debug] 176727#176727: free: 00005B3FE0BE8DF0, unused: 4920 +2025/09/02 13:54:38 [notice] 176727#176727: exit +2025/09/02 13:54:38 [notice] 176726#176726: signal 17 (SIGCHLD) received from 176727 +2025/09/02 13:54:38 [notice] 176726#176726: worker process 176727 exited with code 0 +2025/09/02 13:54:38 [debug] 176726#176726: shmtx forced unlock +2025/09/02 13:54:38 [debug] 176726#176726: wake up, sigio 3 +2025/09/02 13:54:38 [debug] 176726#176726: reap children +2025/09/02 13:54:38 [debug] 176726#176726: child: 0 176727 e:1 t:1 d:0 r:1 j:0 +2025/09/02 13:54:38 [notice] 176726#176726: exit +2025/09/02 13:54:38 [debug] 176726#176726: close listening 0.0.0.0:9001 #5 +2025/09/02 13:54:38 [debug] 176726#176726: run cleanup: 00005B3FE0BDEA38 +2025/09/02 13:54:38 [debug] 176726#176726: cleanup resolver +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BECE00 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BDFC00 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BBEB70 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BBDA60 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BB7A30 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BB6970 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BB58B0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BB47F0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BAC190 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BA3160, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BAD5A0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BB8A40, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BBFB80, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BC3B90, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BC7BA0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BCBBB0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BCFBC0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BD3BD0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BD7BE0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BDBBF0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BE0DD0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BE4DE0, unused: 0 +2025/09/02 13:54:38 [debug] 176726#176726: free: 00005B3FE0BE8DF0, unused: 4951 +2025/09/02 13:59:01 [debug] 185430#185430: bind() 0.0.0.0:9001 #5 +2025/09/02 13:59:01 [debug] 185430#185430: counter: 000070C1B3B95080, 1 +2025/09/02 13:59:01 [debug] 185431#185431: bind() 0.0.0.0:9001 #5 +2025/09/02 13:59:01 [notice] 185431#185431: using the "epoll" event method +2025/09/02 13:59:01 [debug] 185431#185431: counter: 0000763ACE5C5080, 1 +2025/09/02 13:59:01 [notice] 185431#185431: nginx/1.18.0 (Ubuntu) +2025/09/02 13:59:01 [notice] 185431#185431: OS: Linux 6.12.10-76061203-generic +2025/09/02 13:59:01 [notice] 185431#185431: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/09/02 13:59:01 [debug] 185432#185431: write: 6, 00007FFD3A843160, 7, 0 +2025/09/02 13:59:01 [debug] 185432#185432: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/09/02 13:59:01 [notice] 185432#185432: start worker processes +2025/09/02 13:59:01 [debug] 185432#185432: channel 6:7 +2025/09/02 13:59:01 [notice] 185432#185432: start worker process 185433 +2025/09/02 13:59:01 [debug] 185432#185432: sigsuspend +2025/09/02 13:59:01 [debug] 185433#185433: add cleanup: 0000645FFAA2EA90 +2025/09/02 13:59:01 [debug] 185433#185433: malloc: 0000645FFA9E1BD0:8 +2025/09/02 13:59:01 [debug] 185433#185433: notify eventfd: 9 +2025/09/02 13:59:01 [debug] 185433#185433: testing the EPOLLRDHUP flag: success +2025/09/02 13:59:01 [debug] 185433#185433: malloc: 0000645FFA9F45A0:6144 +2025/09/02 13:59:01 [debug] 185433#185433: malloc: 0000763ACE3BD010:237568 +2025/09/02 13:59:01 [debug] 185433#185433: malloc: 0000645FFAA316C0:98304 +2025/09/02 13:59:01 [debug] 185433#185433: malloc: 0000645FFAA496D0:98304 +2025/09/02 13:59:01 [debug] 185433#185433: epoll add event: fd:5 op:1 ev:00002001 +2025/09/02 13:59:01 [debug] 185433#185433: epoll add event: fd:7 op:1 ev:00002001 +2025/09/02 13:59:01 [debug] 185433#185433: setproctitle: "nginx: worker process" +2025/09/02 13:59:01 [debug] 185433#185433: worker cycle +2025/09/02 13:59:01 [debug] 185433#185433: epoll timer: -1 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:5 ev:0001 d:0000763ACE3BD010 +2025/09/02 13:59:11 [debug] 185433#185433: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 13:59:11 [debug] 185433#185433: posix_memalign: 0000645FFA9E0840:512 @16 +2025/09/02 13:59:11 [debug] 185433#185433: *1 accept: 127.0.0.1:42108 fd:6 +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer add: 6: 60000:89712167 +2025/09/02 13:59:11 [debug] 185433#185433: *1 reusable connection: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 10531 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:6 ev:0001 d:0000763ACE3BD1E0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http wait request handler +2025/09/02 13:59:11 [debug] 185433#185433: *1 malloc: 0000645FFA9E30A0:1024 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:6 1024 of 1024 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: avail:112 +2025/09/02 13:59:11 [debug] 185433#185433: *1 reusable connection: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 posix_memalign: 0000645FFA9FFA40:4096 @16 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http process request line +2025/09/02 13:59:11 [debug] 185433#185433: *1 http request line: "PUT /upload HTTP/1.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http uri: "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http args: "" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http exten: "" +2025/09/02 13:59:11 [debug] 185433#185433: *1 posix_memalign: 0000645FFA9F5DB0:4096 @16 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http process request header line +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Host: localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "User-Agent: curl/8.15.0" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Accept: */*" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJjYWNhMWJjMGExMTk1MmYwNzQ0Mjg0ZDc4MTQ4NTczZmY2OGQ5OWZkZGYxYTgyZTQ3YTUwMzM4NjlkZmIzYWQ3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4MzU5NTEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJlNmJkYzZiNTMzNjA3MmRjMDVlMWE2ZWVhNjhjNzUxMTBjYmQ2YzE5OTRmNWRiZmU3NWM1ODgwYThiNDNkY2Y0Il0sWyJleHBpcmF0aW9uIiwiMTc1NjgzOTU1MSJdXSwiY29udGVudCI6IiIsInNpZyI6IjQ3MTY4ZTk1ZGMzZTFmNGQ3NTg5NGQxYmFlNDdmNzUyODliNDNhMDU3Njk0YzJlMTYwZmI4ZTk3MDg1M2M1MDNkYjk0YjdmNzRlMDcxNDg1OThmODBhYWY2NjNiYzEzYzQ3NzllMTZiYzRhMWM2NTVlYjgxNmMyYWY3OWIyZDZkIn0=" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Content-Type: text/plain" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Content-Disposition: attachment; filename="test_blob_1756835951.txt"" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header: "Content-Length: 296" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http header done +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer del: 6: 89712167 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 rewrite phase: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: "/health" +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/09/02 13:59:11 [debug] 185433#185433: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/09/02 13:59:11 [debug] 185433#185433: *1 using configuration "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http cl:296 max:104857600 +2025/09/02 13:59:11 [debug] 185433#185433: *1 rewrite phase: 3 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "PUT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script regex: "^(PUT)$" +2025/09/02 13:59:11 [notice] 185433#185433: *1 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script if +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script if: false +2025/09/02 13:59:11 [debug] 185433#185433: *1 post rewrite phase: 4 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 5 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 6 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 7 +2025/09/02 13:59:11 [debug] 185433#185433: *1 access phase: 8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 access phase: 9 +2025/09/02 13:59:11 [debug] 185433#185433: *1 access phase: 10 +2025/09/02 13:59:11 [debug] 185433#185433: *1 post access phase: 11 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 12 +2025/09/02 13:59:11 [debug] 185433#185433: *1 generic phase: 13 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http client request body preread 184 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http request body content length filter +2025/09/02 13:59:11 [debug] 185433#185433: *1 http body new buf t:1 f:0 0000645FFA9E33E8, pos 0000645FFA9E33E8, size: 184 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http read client request body +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:112 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:6 112 of 112 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http client request body recv 112 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http body new buf t:1 f:0 0000645FFA9F6840, pos 0000645FFA9F6840, size: 112 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http client request body rest 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http init upstream, client timer: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/09/02 13:59:11 [debug] 185433#185433: *1 posix_memalign: 0000645FFA9EA160:4096 @16 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "QUERY_STRING" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "QUERY_STRING: " +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REQUEST_METHOD" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "PUT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REQUEST_METHOD: PUT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "CONTENT_TYPE" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "text/plain" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "CONTENT_TYPE: text/plain" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "CONTENT_LENGTH" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "296" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "CONTENT_LENGTH: 296" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SCRIPT_NAME" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SCRIPT_NAME: /upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REQUEST_URI" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REQUEST_URI: /upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "DOCUMENT_URI" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "DOCUMENT_URI: /upload" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "DOCUMENT_ROOT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "./blobs" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SERVER_PROTOCOL" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "HTTP/1.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REQUEST_SCHEME" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "http" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "GATEWAY_INTERFACE" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "CGI/1.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SERVER_SOFTWARE" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "nginx/" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "1.18.0" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REMOTE_ADDR" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "127.0.0.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REMOTE_PORT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "42108" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REMOTE_PORT: 42108" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SERVER_ADDR" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "127.0.0.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SERVER_PORT" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SERVER_PORT: 9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SERVER_NAME" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "localhost" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SERVER_NAME: localhost" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "REDIRECT_STATUS" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "200" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "SCRIPT_FILENAME" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script var: "./blobs" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http script copy: "/ginxsom.fcgi" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJjYWNhMWJjMGExMTk1MmYwNzQ0Mjg0ZDc4MTQ4NTczZmY2OGQ5OWZkZGYxYTgyZTQ3YTUwMzM4NjlkZmIzYWQ3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4MzU5NTEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJlNmJkYzZiNTMzNjA3MmRjMDVlMWE2ZWVhNjhjNzUxMTBjYmQ2YzE5OTRmNWRiZmU3NWM1ODgwYThiNDNkY2Y0Il0sWyJleHBpcmF0aW9uIiwiMTc1NjgzOTU1MSJdXSwiY29udGVudCI6IiIsInNpZyI6IjQ3MTY4ZTk1ZGMzZTFmNGQ3NTg5NGQxYmFlNDdmNzUyODliNDNhMDU3Njk0YzJlMTYwZmI4ZTk3MDg1M2M1MDNkYjk0YjdmNzRlMDcxNDg1OThmODBhYWY2NjNiYzEzYzQ3NzllMTZiYzRhMWM2NTVlYjgxNmMyYWY3OWIyZDZkIn0=" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1756835951.txt"" +2025/09/02 13:59:11 [debug] 185433#185433: *1 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http cleanup add: 0000645FFA9F6B90 +2025/09/02 13:59:11 [debug] 185433#185433: *1 get rr peer, try: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 stream socket 10 +2025/09/02 13:59:11 [debug] 185433#185433: *1 epoll add connection: fd:10 ev:80002005 +2025/09/02 13:59:11 [debug] 185433#185433: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/09/02 13:59:11 [debug] 185433#185433: *1 connected +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream connect: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 posix_memalign: 0000645FFA9C9F20:128 @16 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream send request +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream send request body +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer buf fl:0 s:1304 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer buf fl:0 s:184 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer buf fl:0 s:8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer buf fl:0 s:112 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer buf fl:0 s:8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer in: 0000645FFA9F6C20 +2025/09/02 13:59:11 [debug] 185433#185433: *1 writev: 1616 of 1616 +2025/09/02 13:59:11 [debug] 185433#185433: *1 chain writer out: 0000000000000000 +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer add: 10: 60000:89712168 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http finalize request: -4, "/upload?" a:1, c:2 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http request count:2 blk:0 +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 1 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:6 ev:0004 d:0000763ACE3BD1E0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http run request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream check client, write event:1, "/upload" +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0004 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 malloc: 0000645FFA9EB170:4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 48 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 21 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 33 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "DEBUG: FastCGI received request" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 512 of 4048 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "DEBUG: METHOD=PUT, URI=/upload +ENTRY: Entering handle_upload_request() function +DEBUG: handle_upload_request called +LOG: [2025-09-02 13:59:11] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJjYWNhMWJjMGExMTk1MmYwNzQ0Mjg0ZDc4MTQ4NTczZmY2OGQ5OWZkZGYxYTgyZTQ3YTUwMzM4NjlkZmIzYWQ3IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImN" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 1104 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "yZWF0ZWRfYXQiOjE3NTY4MzU5NTEsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCJlNmJkYzZiNTMzNjA3MmRjMDVlMWE2ZWVhNjhjNzUxMTBjYmQ2YzE5OTRmNWRiZmU3NWM1ODgwYThiNDNkY2Y0Il0sWyJleHBpcmF0aW9uIiwiMTc1NjgzOTU1MSJdXSwiY29udGVudCI6IiIsInNpZyI6IjQ3MTY4ZTk1ZGMzZTFmNGQ3NTg5NGQxYmFlNDdmNzUyODliNDNhMDU3Njk0YzJlMTYwZmI4ZTk3MDg1M2M1MDNkYjk0YjdmNzRlMDcxNDg1OThmODBhYWY2NjNiYzEzYzQ3NzllMTZiYzRhMWM2NTVlYjgxNmMyYWY3OWIyZDZkIn0= +LOG: [2025-09-02 13:59:11] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG-LAAN: Calculated SHA-256:" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 43 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 05 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 67 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "AUTH: About to perform authentication - auth_header present: YES +AUTH: Calling authenticate_request with hash: e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 +═══════════════════════════════════════════════════════════════════ +🔍 STEP SERVER-1: Starting server-style authentication (mirroring test_auth_debug.c) +ℹ️ INFO: Server-style auth calle" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 1 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 2560 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "d with method: upload, hash: e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 +🔍 STEP SERVER-2: Calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJjYWNhMWJjMGExMTk1... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=✅ SUCCESS: parse_authorization_header succeeded +🔍 STEP SERVER-3: Calling cJSON_Parse on JSON string +ℹ️ INFO: JSON to" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " parse: {"kind":24242,"id":"caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1756835951,"tags":[["t","upload"],["x","e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4"],["expiration","1756839551"]],"content":"","sig":"47168e95dc3e1f4d75894d1bae47f75289b43a057694c2e160fb8e970853c503db94b7f74e07148598f80aaf663bc13c4779e16bc4a1c655eb816c2af79b2d6d"} +✅ SUCCESS: cJSON_Parse succeeded" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: ", event parsed +ℹ️ INFO: Parsed JSON: { + "kind": 24242, + "id": "caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7", + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "created_at": 1756835951, + "tags": [["t", "upload"], ["x", "e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4"], ["expiration", "1756839551"]], + "content": "", + "sig": "47168e95dc3e1f4d75894d1bae47f75289b43a057694c2e160fb8e970853c503db94b7f74e07148598f80aaf663bc13c4779e16bc" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "4a1c655eb816c2af79b2d6d" +} +🔍 STEP SERVER-4: Event fields before validation +ℹ️ INFO: id: caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7 +ℹ️ INFO: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: sig: 47168e95dc3e1f4d75894d1bae47f75289b43a057694c2e160fb8e970853c503db94b7f74e07148598f80aaf663bc13c4779e16bc4a1c655eb816c2af79b2d6d +ℹ️ INFO: kind: 24242 +ℹ️ INFO: created_at: 1756835951 +🔍 STEP SERVER-5: Detailed pubkey" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(0x37) 9(0x39) b(0x62) e(0x65) 6(0x36) 6(0x36) 7(0x37) e(0x65) f(0x66) 9(0x39) +🔍 STEP SERVER-6: Pre-validation pubkey analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(55) 9(57) b(98) e(101) 6(54) 6(54) 7(5" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 512 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "5) e(101) f(102) 9(57) +ℹ️ INFO: Character validation test: +ALL VALID (lowercase hex) +🔍 STEP SERVER-7: Starting detailed validation analysis +ℹ️ INFO: Testing structure validation... +ℹ️ INFO: nostr_validate_event_structure returned: 0 (Success) +✅ SUCCESS: Structure validation PASSED +ℹ️ INFO: Testing cryptographic verification... +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Crypto verification PASSED +ℹ️ INFO: Testing complete validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 2048 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "... +ℹ️ INFO: nostr_validate_event returned: 0 (Success) +✅ SUCCESS: Complete validation PASSED +🔍 STEP SERVER-8: Running detailed structure validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP STRUCT-1: Starting detailed structure validation +✅ SUCCESS: Event is valid JSON object +🔍 STEP STRUCT-2: Checking required field" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "existence +✅ SUCCESS: Field 'id' exists +✅ SUCCESS: Field 'pubkey' exists +✅ SUCCESS: Field 'created_at' exists +✅ SUCCESS: Field 'kind' exists +✅ SUCCESS: Field 'tags' exists +✅ SUCCESS: Field 'content' exists +✅ SUCCESS: Field 'sig' exists +🔍 STEP STRUCT-3: Validating field types +✅ SUCCESS: Field 'id' is string +✅ SUCCESS: Field 'pubkey' is string +✅ SUCCESS: Field 'created_at' is number +✅ SUCCESS: Field 'kind' is number +✅ SUCCESS: Field 'tags' is array +✅ SUCCESS: Field 'content" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "' is string +✅ SUCCESS: Field 'sig' is string +🔍 STEP STRUCT-4: Validating hex string lengths +ℹ️ INFO: ID string: 'caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7' (length: ✅ SUCCESS: ID string length is correct (64 chars) +ℹ️ INFO: Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: ✅ SUCCESS: Pubkey string length is correct (64 chars) +ℹ️ INFO: Signature string: '47168e95dc3e1f4d75894d1bae47f75289b43a057694c2e160fb8e970853" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "c503db94b7f74e07148598f80aaf663bc13c4779e16bc4a1c655eb816c2af79b2d6d' (length: ✅ SUCCESS: Signature string length is correct (128 chars) +🔍 STEP STRUCT-5: Validating hex characters +ℹ️ INFO: Checking ID hex characters... +✅ SUCCESS: ID hex characters are valid (lowercase) +ℹ️ INFO: Checking pubkey hex characters... +✅ SUCCESS: Pubkey hex characters are valid (lowercase) +ℹ️ INFO: Checking signature hex characters... +✅ SUCCESS: Signature hex characters are valid (lowercase) +🔍 S" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 2560 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "TEP STRUCT-6: Validating timestamp +ℹ️ INFO: Created_at timestamp: 1756835951 +✅ SUCCESS: Timestamp is valid: 2025-09-02 17:59:11 UTC +🔍 STEP STRUCT-7: Validating kind +ℹ️ INFO: Event kind: 24242 +✅ SUCCESS: Kind is valid: 24242 +🔍 STEP STRUCT-8: Validating tags array structure +ℹ️ INFO: Tags array has 3 elements +ℹ️ INFO: Tag[0] has 2 elements +ℹ️ INFO: Tag[0][0]: 't' +ℹ️ INFO: Tag[0][1]: 'upload' +ℹ️ INFO: Tag[1] has 2 elements +ℹ️ INFO: Tag[1][0]: 'x' +ℹ️" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " INFO: Tag[1][1]: 'e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4' +ℹ️ INFO: Tag[2] has 2 elements +ℹ️ INFO: Tag[2][0]: 'expiration' +ℹ️ INFO: Tag[2][1]: '1756839551' +✅ SUCCESS: Tags array structure is valid +🔍 STEP STRUCT-9: Validating content +ℹ️ INFO: Content: '' (length: ✅ SUCCESS: Content is valid string +✅ SUCCESS: Structure validation completed successfully +✅ SUCCESS: Detailed structure validation PASSED +🔍 STEP SERVER-9: Running detailed signature" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP CRYPTO-1: Starting detailed signature validation +🔍 STEP CRYPTO-2: Creating serialization array +✅ SUCCESS: Serialization array created +🔍 STEP CRYPTO-3: Converting to JSON string +✅ SUCCESS: JSON serialization string created +ℹ️ INFO: Serialization string (length 🔍" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "STEP CRYPTO-4: Computing SHA256 hash +✅ SUCCESS: SHA256 hash computed +ℹ️ INFO: Event hash ( ca ca 1b c0 a1 19 52 f0 74 42 84 d7 81 48 57 3f |......R.tB...HW?| + f6 8d 99 fd df 1a 82 e4 7a 50 33 86 9d fb 3a d7 |........zP3...:.| +🔍 STEP CRYPTO-5: Verifying event ID +ℹ️ INFO: Calculated ID: caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7 +ℹ️ INFO: Provided ID: caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7 +✅ SUCCESS: Event ID verification passe" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "d +🔍 STEP CRYPTO-6: Preparing signature verification +🔍 STEP CRYPTO-7: Converting hex strings to bytes +✅ SUCCESS: Pubkey hex converted to bytes +ℹ️ INFO: Pubkey bytes ( 79 be 66 7e f9 dc bb ac 55 a0 62 95 ce 87 0b 07 |y.f~....U.b.....| + 02 9b fc db 2d ce 28 d9 59 f2 81 5b 16 f8 17 98 |....-.(.Y..[....| +✅ SUCCESS: Signature hex converted to bytes +ℹ️ INFO: Signature bytes ( 47 16 8e 95 dc 3e 1f 4d 75 89 4d 1b ae 47 f7 52 |G....>.Mu.M..G.R| + 89 b4 3a 05 76 94 c2 e1 60 fb 8e 97 0" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 3072 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "8 53 c5 03 |..:.v...`....S..| + db 94 b7 f7 4e 07 14 85 98 f8 0a af 66 3b c1 3c |....N.......f;.<| + 47 79 e1 6b c4 a1 c6 55 eb 81 6c 2a f7 9b 2d 6d |Gy.k...U..l*..-m| +🔍 STEP CRYPTO-8: Verifying signature using nostr_verify_event_signature() +ℹ️ INFO: Calling nostr_verify_event_signature() for detailed crypto validation +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Signature verification PASSED using nostr_core_lib! +✅ SUCCESS: Detailed signature validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " PASSED +═══════════════════════════════════════════════════════════════════ +🔍 STEP ANALYZE-1: Analyzing event field details +ℹ️ INFO: Field 'kind': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 24242 +ℹ️ INFO: Field 'id': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: 'caca1bc0a11952f0744284d78148573ff68d99fddf1a82e47a5033869dfb3ad7' +ℹ️ INFO" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: ": Length: ℹ️ INFO: Field 'pubkey': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +ℹ️ INFO: Length: ℹ️ INFO: Field 'created_at': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 1756835951 +ℹ️ INFO: Field 'tags': +ℹ️ INFO: Type: Array +ℹ️ INFO: Size: 3 +ℹ️ INFO: Field 'content': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '' +ℹ️ INFO: Length: ℹ️ INFO: Field 'sig': +ℹ" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " INFO: Type: String +ℹ️ INFO: Value: '47168e95dc3e1f4d75894d1bae47f75289b43a057694c2e160fb8e970853c503db94b7f74e07148598f80aaf663bc13c4779e16bc4a1c655eb816c2af79b2d6d' +ℹ️ INFO: Length: 🔍 STEP SERVER-10: Validating Blossom-specific requirements +DEBUG: Validating Blossom event +DEBUG: Found matching method tag: upload +DEBUG: Found matching hash tag: e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 +DEBUG: Found expiration tag: 1756839551 +DEBUG: Blossom event valid" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "ation passed +✅ SUCCESS: Blossom event validation PASSED +✅ SUCCESS: Server-style authentication successful, returning NOSTR_SUCCESS +AUTH: authenticate_request returned: 0 +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJjYWNhMWJjMGExMTk1... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: Authentication passed, uploader_pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "815b16f81798 +DEBUG: Saving file to: blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt +DEBUG: Successfully saved DEBUG: Content-Disposition header: attachment; filename="test_blob_1756835951.txt" +DEBUG: Looking for filename= in Content-Disposition header +DEBUG: Found filename= at position 12 +DEBUG: Filename value starts with: "test_blob_175683595 +DEBUG: Processing quoted filename +DEBUG: Quoted filename length: DEBUG: Extracted quoted filename: 'test_blob_1756835951.txt" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59999 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 1024 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "' +DEBUG: Final filename after extraction: test_blob_1756835951.txt +DEBUG: insert_blob_metadata() called for sha256='e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4' +DEBUG: Opening database at path: db/ginxsom.db +DEBUG: Database opened successfully for writing +DEBUG: Preparing SQL: INSERT INTO blobs (sha256, size, type, uploaded_at, uploader_pubkey, filename) VALUES (?, ?, ?, ?, ?, ?) +DEBUG: SQL prepared successfully, binding parameters +DEBUG: Parameter values to bind: +DEBUG:" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: F8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 504 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: " 1. sha256 = 'e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4' +DEBUG: 2. size = 296 +DEBUG: 3. type = 'text/plain' +DEBUG: 4. uploaded_at = 1756835951 +DEBUG: 5. uploader_pubkey = '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: 6. filename = 'test_blob_1756835951.txt' +DEBUG: Binding parameter 1 (sha256) +DEBUG: Binding parameter 2 (size) +DEBUG: Binding parameter 3 (type) +DEBUG: Binding parameter 4 (uploaded_at) +DEBUG: Binding parameter 5 (" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 1 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59998 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:0004 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream dummy handler +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 59998 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:10 ev:2005 d:0000763ACE3BD2C8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream request: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process header +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:1, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:10 800 of 4096 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: BE +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 02 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 446 +2025/09/02 13:59:11 [error] 185433#185433: *1 FastCGI sent in stderr: "uploader_pubkey) +DEBUG: Binding uploader_pubkey as text: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: Binding parameter 6 (filename) +DEBUG: Binding filename as text: 'test_blob_1756835951.txt' +DEBUG: Parameters bound, executing INSERT +DEBUG: INSERT successful +DEBUG: Database closed, returning 1 +DEBUG: Blob metadata successfully stored in database +DEBUG: Upload completed successfully with database storage" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 07 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 06 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 2D +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 03 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 301 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi parser: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi header: "Status: 200 OK" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi parser: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi header: "Content-Type: application/json" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi parser: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi header done +2025/09/02 13:59:11 [debug] 185433#185433: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 17:59:11 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block + +2025/09/02 13:59:11 [debug] 185433#185433: *1 write new buf t:1 f:0 0000645FFA9EA818, pos 0000645FFA9EA818, size: 260 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http write filter: l:0 f:0 s:260 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http cacheable: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream process upstream +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe read upstream: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe preread: 278 +2025/09/02 13:59:11 [debug] 185433#185433: *1 readv: eof:1, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 readv: 1, last:3296 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe recv chain: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe buf free s:0 t:1 f:0 0000645FFA9EB170, pos 0000645FFA9EB37A, size: 278 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe length: -1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 input buf #0 0000645FFA9EB37A +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 06 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi closed stdout +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 03 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 01 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 08 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record byte: 00 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi record length: 8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http fastcgi sent end request +2025/09/02 13:59:11 [debug] 185433#185433: *1 input buf 0000645FFA9EB37A 251 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe write downstream: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe write downstream flush in +2025/09/02 13:59:11 [debug] 185433#185433: *1 http output filter "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http copy filter: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http postpone filter "/upload?" 0000645FFA9F6BF0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http chunk: 251 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write old buf t:1 f:0 0000645FFA9EA818, pos 0000645FFA9EA818, size: 260 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write new buf t:1 f:0 0000645FFA9F6D80, pos 0000645FFA9F6D80, size: 4 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write new buf t:1 f:0 0000645FFA9EB170, pos 0000645FFA9EB37A, size: 251 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write new buf t:0 f:0 0000000000000000, pos 0000645FEB0562E8, size: 2 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http write filter: l:0 f:0 s:517 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http copy filter: 0 "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 pipe write downstream done +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer: 10, old: 89712168, new: 89712173 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream exit: 0000000000000000 +2025/09/02 13:59:11 [debug] 185433#185433: *1 finalize http upstream request: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 finalize http fastcgi request +2025/09/02 13:59:11 [debug] 185433#185433: *1 free rr peer 1 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 close http upstream connection: 10 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9C9F20, unused: 48 +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer del: 10: 89712168 +2025/09/02 13:59:11 [debug] 185433#185433: *1 reusable connection: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http upstream temp fd: -1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http output filter "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http copy filter: "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http postpone filter "/upload?" 00007FFD3A842DA0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http chunk: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write old buf t:1 f:0 0000645FFA9EA818, pos 0000645FFA9EA818, size: 260 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write old buf t:1 f:0 0000645FFA9F6D80, pos 0000645FFA9F6D80, size: 4 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write old buf t:1 f:0 0000645FFA9EB170, pos 0000645FFA9EB37A, size: 251 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write old buf t:0 f:0 0000000000000000, pos 0000645FEB0562E8, size: 2 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 write new buf t:0 f:0 0000000000000000, pos 0000645FEB0562E5, size: 5 file: 0, size: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http write filter: l:1 f:0 s:522 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http write filter limit 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 writev: 522 of 522 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http write filter 0000000000000000 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http copy filter: 0 "/upload?" +2025/09/02 13:59:11 [debug] 185433#185433: *1 http finalize request: 0, "/upload?" a:1, c:1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 set http keepalive handler +2025/09/02 13:59:11 [debug] 185433#185433: *1 http close request +2025/09/02 13:59:11 [debug] 185433#185433: *1 http log handler +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9EB170 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9FFA40, unused: 3 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9F5DB0, unused: 8 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9EA160, unused: 1170 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9E30A0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 hc free: 0000000000000000 +2025/09/02 13:59:11 [debug] 185433#185433: *1 hc busy: 0000000000000000 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 tcp_nodelay +2025/09/02 13:59:11 [debug] 185433#185433: *1 reusable connection: 1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer add: 6: 65000:89717173 +2025/09/02 13:59:11 [debug] 185433#185433: *1 post event 0000645FFAA31780 +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 3 +2025/09/02 13:59:11 [debug] 185433#185433: posted event 0000645FFAA31780 +2025/09/02 13:59:11 [debug] 185433#185433: *1 delete posted event 0000645FFAA31780 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http keepalive handler +2025/09/02 13:59:11 [debug] 185433#185433: *1 malloc: 0000645FFA9E30A0:1024 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:0, avail:0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9E30A0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: 65000 +2025/09/02 13:59:11 [debug] 185433#185433: epoll: fd:6 ev:2005 d:0000763ACE3BD1E0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 http keepalive handler +2025/09/02 13:59:11 [debug] 185433#185433: *1 malloc: 0000645FFA9E30A0:1024 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: eof:1, avail:-1 +2025/09/02 13:59:11 [debug] 185433#185433: *1 recv: fd:6 0 of 1024 +2025/09/02 13:59:11 [info] 185433#185433: *1 client 127.0.0.1 closed keepalive connection +2025/09/02 13:59:11 [debug] 185433#185433: *1 close http connection: 6 +2025/09/02 13:59:11 [debug] 185433#185433: *1 event timer del: 6: 89717173 +2025/09/02 13:59:11 [debug] 185433#185433: *1 reusable connection: 0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9E30A0 +2025/09/02 13:59:11 [debug] 185433#185433: *1 free: 0000645FFA9E0840, unused: 120 +2025/09/02 13:59:11 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:11 [debug] 185433#185433: worker cycle +2025/09/02 13:59:11 [debug] 185433#185433: epoll timer: -1 +2025/09/02 13:59:38 [debug] 185433#185433: epoll: fd:5 ev:0001 d:0000763ACE3BD010 +2025/09/02 13:59:38 [debug] 185433#185433: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 13:59:38 [debug] 185433#185433: posix_memalign: 0000645FFA9E0840:512 @16 +2025/09/02 13:59:38 [debug] 185433#185433: *3 accept: 127.0.0.1:47772 fd:6 +2025/09/02 13:59:38 [debug] 185433#185433: *3 event timer add: 6: 60000:89739271 +2025/09/02 13:59:38 [debug] 185433#185433: *3 reusable connection: 1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 13:59:38 [debug] 185433#185433: timer delta: 27098 +2025/09/02 13:59:38 [debug] 185433#185433: worker cycle +2025/09/02 13:59:38 [debug] 185433#185433: epoll timer: 60000 +2025/09/02 13:59:38 [debug] 185433#185433: epoll: fd:6 ev:0001 d:0000763ACE3BD1E1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http wait request handler +2025/09/02 13:59:38 [debug] 185433#185433: *3 malloc: 0000645FFA9E30A0:1024 +2025/09/02 13:59:38 [debug] 185433#185433: *3 recv: eof:0, avail:-1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 recv: fd:6 146 of 1024 +2025/09/02 13:59:38 [debug] 185433#185433: *3 reusable connection: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 posix_memalign: 0000645FFA9FFA40:4096 @16 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http process request line +2025/09/02 13:59:38 [debug] 185433#185433: *3 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http args: "" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http exten: "txt" +2025/09/02 13:59:38 [debug] 185433#185433: *3 posix_memalign: 0000645FFA9F5DB0:4096 @16 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http process request header line +2025/09/02 13:59:38 [debug] 185433#185433: *3 http header: "Host: localhost:9001" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http header: "User-Agent: curl/8.15.0" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http header: "Accept: */*" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http header done +2025/09/02 13:59:38 [debug] 185433#185433: *3 event timer del: 6: 89739271 +2025/09/02 13:59:38 [debug] 185433#185433: *3 generic phase: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 rewrite phase: 1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 test location: "/health" +2025/09/02 13:59:38 [debug] 185433#185433: *3 test location: "/debug/list" +2025/09/02 13:59:38 [debug] 185433#185433: *3 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 13:59:38 [debug] 185433#185433: *3 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http cl:-1 max:104857600 +2025/09/02 13:59:38 [debug] 185433#185433: *3 rewrite phase: 3 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http script var +2025/09/02 13:59:38 [debug] 185433#185433: *3 http script var: "GET" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http script value: "DELETE" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http script not equal +2025/09/02 13:59:38 [debug] 185433#185433: *3 http script if +2025/09/02 13:59:38 [debug] 185433#185433: *3 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http set discard body +2025/09/02 13:59:38 [debug] 185433#185433: *3 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 17:59:38 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 13:59:38 [debug] 185433#185433: *3 write new buf t:1 f:0 0000645FFA9F6190, pos 0000645FFA9F6190, size: 164 file: 0, size: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http write filter: l:0 f:0 s:164 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 0000645FFA9F6320 +2025/09/02 13:59:38 [debug] 185433#185433: *3 write old buf t:1 f:0 0000645FFA9F6190, pos 0000645FFA9F6190, size: 164 file: 0, size: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 write new buf t:0 f:0 0000000000000000, pos 0000645FEB095580, size: 100 file: 0, size: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 write new buf t:0 f:0 0000000000000000, pos 0000645FEB095C80, size: 62 file: 0, size: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http write filter: l:1 f:0 s:326 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http write filter limit 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 writev: 326 of 326 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http write filter 0000000000000000 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 13:59:38 [debug] 185433#185433: *3 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 set http keepalive handler +2025/09/02 13:59:38 [debug] 185433#185433: *3 http close request +2025/09/02 13:59:38 [debug] 185433#185433: *3 http log handler +2025/09/02 13:59:38 [debug] 185433#185433: *3 free: 0000645FFA9FFA40, unused: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 free: 0000645FFA9F5DB0, unused: 2452 +2025/09/02 13:59:38 [debug] 185433#185433: *3 free: 0000645FFA9E30A0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 hc free: 0000000000000000 +2025/09/02 13:59:38 [debug] 185433#185433: *3 hc busy: 0000000000000000 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 tcp_nodelay +2025/09/02 13:59:38 [debug] 185433#185433: *3 reusable connection: 1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 event timer add: 6: 65000:89744271 +2025/09/02 13:59:38 [debug] 185433#185433: timer delta: 0 +2025/09/02 13:59:38 [debug] 185433#185433: worker cycle +2025/09/02 13:59:38 [debug] 185433#185433: epoll timer: 65000 +2025/09/02 13:59:38 [debug] 185433#185433: epoll: fd:6 ev:2001 d:0000763ACE3BD1E1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 http keepalive handler +2025/09/02 13:59:38 [debug] 185433#185433: *3 malloc: 0000645FFA9E30A0:1024 +2025/09/02 13:59:38 [debug] 185433#185433: *3 recv: eof:1, avail:-1 +2025/09/02 13:59:38 [debug] 185433#185433: *3 recv: fd:6 0 of 1024 +2025/09/02 13:59:38 [info] 185433#185433: *3 client 127.0.0.1 closed keepalive connection +2025/09/02 13:59:38 [debug] 185433#185433: *3 close http connection: 6 +2025/09/02 13:59:38 [debug] 185433#185433: *3 event timer del: 6: 89744271 +2025/09/02 13:59:38 [debug] 185433#185433: *3 reusable connection: 0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 free: 0000645FFA9E30A0 +2025/09/02 13:59:38 [debug] 185433#185433: *3 free: 0000645FFA9E0840, unused: 136 +2025/09/02 13:59:38 [debug] 185433#185433: timer delta: 1 +2025/09/02 13:59:38 [debug] 185433#185433: worker cycle +2025/09/02 13:59:38 [debug] 185433#185433: epoll timer: -1 +2025/09/02 14:03:26 [notice] 185432#185432: signal 15 (SIGTERM) received from 185739, exiting +2025/09/02 14:03:26 [debug] 185432#185432: wake up, sigio 0 +2025/09/02 14:03:26 [debug] 185432#185432: child: 0 185433 e:0 t:0 d:0 r:1 j:0 +2025/09/02 14:03:26 [debug] 185432#185432: termination cycle: 50 +2025/09/02 14:03:26 [debug] 185432#185432: sigsuspend +2025/09/02 14:03:26 [debug] 185433#185433: epoll: fd:7 ev:0001 d:0000763ACE3BD0F8 +2025/09/02 14:03:26 [debug] 185433#185433: channel handler +2025/09/02 14:03:26 [debug] 185433#185433: channel: 32 +2025/09/02 14:03:26 [debug] 185433#185433: channel command: 4 +2025/09/02 14:03:26 [debug] 185433#185433: channel: -2 +2025/09/02 14:03:26 [debug] 185433#185433: timer delta: 227740 +2025/09/02 14:03:26 [notice] 185433#185433: exiting +2025/09/02 14:03:26 [debug] 185433#185433: flush files +2025/09/02 14:03:26 [debug] 185433#185433: run cleanup: 0000645FFAA2EA90 +2025/09/02 14:03:26 [debug] 185433#185433: run cleanup: 0000645FFAA21A28 +2025/09/02 14:03:26 [debug] 185433#185433: cleanup resolver +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA2FDF0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA22BF0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA01B60 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA00A50 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9FAA20 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9F9960 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9F88A0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9F77E0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9EF180 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9E6150, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9F0590, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFA9FBA30, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA02B70, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA06B80, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA0AB90, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA0EBA0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA12BB0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA16BC0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA1ABD0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA1EBE0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA23DC0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA27DD0, unused: 0 +2025/09/02 14:03:26 [debug] 185433#185433: free: 0000645FFAA2BDE0, unused: 4920 +2025/09/02 14:03:26 [notice] 185433#185433: exit +2025/09/02 14:03:26 [notice] 185432#185432: signal 17 (SIGCHLD) received from 185433 +2025/09/02 14:03:26 [notice] 185432#185432: worker process 185433 exited with code 0 +2025/09/02 14:03:26 [debug] 185432#185432: shmtx forced unlock +2025/09/02 14:03:26 [debug] 185432#185432: wake up, sigio 3 +2025/09/02 14:03:26 [debug] 185432#185432: reap children +2025/09/02 14:03:26 [debug] 185432#185432: child: 0 185433 e:1 t:1 d:0 r:1 j:0 +2025/09/02 14:03:26 [notice] 185432#185432: exit +2025/09/02 14:03:26 [debug] 185432#185432: close listening 0.0.0.0:9001 #5 +2025/09/02 14:03:26 [debug] 185432#185432: run cleanup: 0000645FFAA21A28 +2025/09/02 14:03:26 [debug] 185432#185432: cleanup resolver +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA2FDF0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA22BF0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA01B60 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA00A50 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9FAA20 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9F9960 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9F88A0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9F77E0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9EF180 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9E6150, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9F0590, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFA9FBA30, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA02B70, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA06B80, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA0AB90, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA0EBA0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA12BB0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA16BC0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA1ABD0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA1EBE0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA23DC0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA27DD0, unused: 0 +2025/09/02 14:03:26 [debug] 185432#185432: free: 0000645FFAA2BDE0, unused: 4951 +2025/09/02 14:03:29 [debug] 185787#185787: bind() 0.0.0.0:9001 #5 +2025/09/02 14:03:29 [debug] 185787#185787: counter: 00007CCBB20FE080, 1 +2025/09/02 14:03:29 [debug] 185788#185788: bind() 0.0.0.0:9001 #5 +2025/09/02 14:03:29 [notice] 185788#185788: using the "epoll" event method +2025/09/02 14:03:29 [debug] 185788#185788: counter: 000079E41017D080, 1 +2025/09/02 14:03:29 [notice] 185788#185788: nginx/1.18.0 (Ubuntu) +2025/09/02 14:03:29 [notice] 185788#185788: OS: Linux 6.12.10-76061203-generic +2025/09/02 14:03:29 [notice] 185788#185788: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/09/02 14:03:29 [debug] 185789#185788: write: 6, 00007FFD72429C10, 7, 0 +2025/09/02 14:03:29 [debug] 185789#185789: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/09/02 14:03:29 [notice] 185789#185789: start worker processes +2025/09/02 14:03:29 [debug] 185789#185789: channel 6:7 +2025/09/02 14:03:29 [notice] 185789#185789: start worker process 185790 +2025/09/02 14:03:29 [debug] 185789#185789: sigsuspend +2025/09/02 14:03:29 [debug] 185790#185790: add cleanup: 000058127A8EFB38 +2025/09/02 14:03:29 [debug] 185790#185790: malloc: 000058127A8A2BD0:8 +2025/09/02 14:03:29 [debug] 185790#185790: notify eventfd: 9 +2025/09/02 14:03:29 [debug] 185790#185790: testing the EPOLLRDHUP flag: success +2025/09/02 14:03:29 [debug] 185790#185790: malloc: 000058127A8B55A0:6144 +2025/09/02 14:03:29 [debug] 185790#185790: malloc: 000079E40FF75010:237568 +2025/09/02 14:03:29 [debug] 185790#185790: malloc: 000058127A8F26C0:98304 +2025/09/02 14:03:29 [debug] 185790#185790: malloc: 000058127A90A6D0:98304 +2025/09/02 14:03:29 [debug] 185790#185790: epoll add event: fd:5 op:1 ev:00002001 +2025/09/02 14:03:29 [debug] 185790#185790: epoll add event: fd:7 op:1 ev:00002001 +2025/09/02 14:03:29 [debug] 185790#185790: setproctitle: "nginx: worker process" +2025/09/02 14:03:29 [debug] 185790#185790: worker cycle +2025/09/02 14:03:29 [debug] 185790#185790: epoll timer: -1 +2025/09/02 14:03:38 [debug] 185790#185790: epoll: fd:5 ev:0001 d:000079E40FF75010 +2025/09/02 14:03:38 [debug] 185790#185790: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:03:38 [debug] 185790#185790: posix_memalign: 000058127A8A1840:512 @16 +2025/09/02 14:03:38 [debug] 185790#185790: *1 accept: 127.0.0.1:38908 fd:6 +2025/09/02 14:03:38 [debug] 185790#185790: *1 event timer add: 6: 60000:89978457 +2025/09/02 14:03:38 [debug] 185790#185790: *1 reusable connection: 1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:03:38 [debug] 185790#185790: timer delta: 8233 +2025/09/02 14:03:38 [debug] 185790#185790: worker cycle +2025/09/02 14:03:38 [debug] 185790#185790: epoll timer: 60000 +2025/09/02 14:03:38 [debug] 185790#185790: epoll: fd:6 ev:0001 d:000079E40FF751E0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http wait request handler +2025/09/02 14:03:38 [debug] 185790#185790: *1 malloc: 000058127A8A40A0:1024 +2025/09/02 14:03:38 [debug] 185790#185790: *1 recv: eof:0, avail:-1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 recv: fd:6 146 of 1024 +2025/09/02 14:03:38 [debug] 185790#185790: *1 reusable connection: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 posix_memalign: 000058127A8C0A40:4096 @16 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http process request line +2025/09/02 14:03:38 [debug] 185790#185790: *1 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http args: "" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http exten: "txt" +2025/09/02 14:03:38 [debug] 185790#185790: *1 posix_memalign: 000058127A8B6DB0:4096 @16 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http process request header line +2025/09/02 14:03:38 [debug] 185790#185790: *1 http header: "Host: localhost:9001" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http header: "Accept: */*" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http header done +2025/09/02 14:03:38 [debug] 185790#185790: *1 event timer del: 6: 89978457 +2025/09/02 14:03:38 [debug] 185790#185790: *1 generic phase: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 rewrite phase: 1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 test location: "/health" +2025/09/02 14:03:38 [debug] 185790#185790: *1 test location: "/debug/list" +2025/09/02 14:03:38 [debug] 185790#185790: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:03:38 [debug] 185790#185790: *1 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http cl:-1 max:104857600 +2025/09/02 14:03:38 [debug] 185790#185790: *1 rewrite phase: 3 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http script var +2025/09/02 14:03:38 [debug] 185790#185790: *1 http script var: "GET" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http script value: "DELETE" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http script not equal +2025/09/02 14:03:38 [debug] 185790#185790: *1 http script if +2025/09/02 14:03:38 [debug] 185790#185790: *1 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http set discard body +2025/09/02 14:03:38 [debug] 185790#185790: *1 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:03:38 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 14:03:38 [debug] 185790#185790: *1 write new buf t:1 f:0 000058127A8B7190, pos 000058127A8B7190, size: 164 file: 0, size: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http write filter: l:0 f:0 s:164 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 000058127A8B7320 +2025/09/02 14:03:38 [debug] 185790#185790: *1 write old buf t:1 f:0 000058127A8B7190, pos 000058127A8B7190, size: 164 file: 0, size: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 write new buf t:0 f:0 0000000000000000, pos 0000581245EEB580, size: 100 file: 0, size: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 write new buf t:0 f:0 0000000000000000, pos 0000581245EEBC80, size: 62 file: 0, size: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http write filter: l:1 f:0 s:326 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http write filter limit 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 writev: 326 of 326 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http write filter 0000000000000000 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:03:38 [debug] 185790#185790: *1 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 set http keepalive handler +2025/09/02 14:03:38 [debug] 185790#185790: *1 http close request +2025/09/02 14:03:38 [debug] 185790#185790: *1 http log handler +2025/09/02 14:03:38 [debug] 185790#185790: *1 free: 000058127A8C0A40, unused: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 free: 000058127A8B6DB0, unused: 2452 +2025/09/02 14:03:38 [debug] 185790#185790: *1 free: 000058127A8A40A0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 hc free: 0000000000000000 +2025/09/02 14:03:38 [debug] 185790#185790: *1 hc busy: 0000000000000000 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 tcp_nodelay +2025/09/02 14:03:38 [debug] 185790#185790: *1 reusable connection: 1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 event timer add: 6: 65000:89983457 +2025/09/02 14:03:38 [debug] 185790#185790: timer delta: 0 +2025/09/02 14:03:38 [debug] 185790#185790: worker cycle +2025/09/02 14:03:38 [debug] 185790#185790: epoll timer: 65000 +2025/09/02 14:03:38 [debug] 185790#185790: epoll: fd:6 ev:2001 d:000079E40FF751E0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 http keepalive handler +2025/09/02 14:03:38 [debug] 185790#185790: *1 malloc: 000058127A8A40A0:1024 +2025/09/02 14:03:38 [debug] 185790#185790: *1 recv: eof:1, avail:-1 +2025/09/02 14:03:38 [debug] 185790#185790: *1 recv: fd:6 0 of 1024 +2025/09/02 14:03:38 [info] 185790#185790: *1 client 127.0.0.1 closed keepalive connection +2025/09/02 14:03:38 [debug] 185790#185790: *1 close http connection: 6 +2025/09/02 14:03:38 [debug] 185790#185790: *1 event timer del: 6: 89983457 +2025/09/02 14:03:38 [debug] 185790#185790: *1 reusable connection: 0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 free: 000058127A8A40A0 +2025/09/02 14:03:38 [debug] 185790#185790: *1 free: 000058127A8A1840, unused: 136 +2025/09/02 14:03:38 [debug] 185790#185790: timer delta: 1 +2025/09/02 14:03:38 [debug] 185790#185790: worker cycle +2025/09/02 14:03:38 [debug] 185790#185790: epoll timer: -1 +2025/09/02 14:05:11 [debug] 185790#185790: epoll: fd:5 ev:0001 d:000079E40FF75010 +2025/09/02 14:05:11 [debug] 185790#185790: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:05:11 [debug] 185790#185790: posix_memalign: 000058127A8A1840:512 @16 +2025/09/02 14:05:11 [debug] 185790#185790: *2 accept: 127.0.0.1:58790 fd:6 +2025/09/02 14:05:11 [debug] 185790#185790: *2 event timer add: 6: 60000:90071933 +2025/09/02 14:05:11 [debug] 185790#185790: *2 reusable connection: 1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:05:11 [debug] 185790#185790: timer delta: 93475 +2025/09/02 14:05:11 [debug] 185790#185790: worker cycle +2025/09/02 14:05:11 [debug] 185790#185790: epoll timer: 60000 +2025/09/02 14:05:11 [debug] 185790#185790: epoll: fd:6 ev:0001 d:000079E40FF751E1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http wait request handler +2025/09/02 14:05:11 [debug] 185790#185790: *2 malloc: 000058127A8A40A0:1024 +2025/09/02 14:05:11 [debug] 185790#185790: *2 recv: eof:0, avail:-1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 recv: fd:6 146 of 1024 +2025/09/02 14:05:11 [debug] 185790#185790: *2 reusable connection: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 posix_memalign: 000058127A8C0A40:4096 @16 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http process request line +2025/09/02 14:05:11 [debug] 185790#185790: *2 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http args: "" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http exten: "txt" +2025/09/02 14:05:11 [debug] 185790#185790: *2 posix_memalign: 000058127A8B6DB0:4096 @16 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http process request header line +2025/09/02 14:05:11 [debug] 185790#185790: *2 http header: "Host: localhost:9001" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http header: "Accept: */*" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http header done +2025/09/02 14:05:11 [debug] 185790#185790: *2 event timer del: 6: 90071933 +2025/09/02 14:05:11 [debug] 185790#185790: *2 generic phase: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 rewrite phase: 1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 test location: "/health" +2025/09/02 14:05:11 [debug] 185790#185790: *2 test location: "/debug/list" +2025/09/02 14:05:11 [debug] 185790#185790: *2 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:05:11 [debug] 185790#185790: *2 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http cl:-1 max:104857600 +2025/09/02 14:05:11 [debug] 185790#185790: *2 rewrite phase: 3 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http script var +2025/09/02 14:05:11 [debug] 185790#185790: *2 http script var: "GET" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http script value: "DELETE" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http script not equal +2025/09/02 14:05:11 [debug] 185790#185790: *2 http script if +2025/09/02 14:05:11 [debug] 185790#185790: *2 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http set discard body +2025/09/02 14:05:11 [debug] 185790#185790: *2 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:05:11 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 14:05:11 [debug] 185790#185790: *2 write new buf t:1 f:0 000058127A8B7190, pos 000058127A8B7190, size: 164 file: 0, size: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http write filter: l:0 f:0 s:164 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 000058127A8B7320 +2025/09/02 14:05:11 [debug] 185790#185790: *2 write old buf t:1 f:0 000058127A8B7190, pos 000058127A8B7190, size: 164 file: 0, size: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 write new buf t:0 f:0 0000000000000000, pos 0000581245EEB580, size: 100 file: 0, size: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 write new buf t:0 f:0 0000000000000000, pos 0000581245EEBC80, size: 62 file: 0, size: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http write filter: l:1 f:0 s:326 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http write filter limit 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 writev: 326 of 326 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http write filter 0000000000000000 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:05:11 [debug] 185790#185790: *2 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 set http keepalive handler +2025/09/02 14:05:11 [debug] 185790#185790: *2 http close request +2025/09/02 14:05:11 [debug] 185790#185790: *2 http log handler +2025/09/02 14:05:11 [debug] 185790#185790: *2 free: 000058127A8C0A40, unused: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 free: 000058127A8B6DB0, unused: 2452 +2025/09/02 14:05:11 [debug] 185790#185790: *2 free: 000058127A8A40A0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 hc free: 0000000000000000 +2025/09/02 14:05:11 [debug] 185790#185790: *2 hc busy: 0000000000000000 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 tcp_nodelay +2025/09/02 14:05:11 [debug] 185790#185790: *2 reusable connection: 1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 event timer add: 6: 65000:90076933 +2025/09/02 14:05:11 [debug] 185790#185790: timer delta: 0 +2025/09/02 14:05:11 [debug] 185790#185790: worker cycle +2025/09/02 14:05:11 [debug] 185790#185790: epoll timer: 65000 +2025/09/02 14:05:11 [debug] 185790#185790: epoll: fd:6 ev:2001 d:000079E40FF751E1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 http keepalive handler +2025/09/02 14:05:11 [debug] 185790#185790: *2 malloc: 000058127A8A40A0:1024 +2025/09/02 14:05:11 [debug] 185790#185790: *2 recv: eof:1, avail:-1 +2025/09/02 14:05:11 [debug] 185790#185790: *2 recv: fd:6 0 of 1024 +2025/09/02 14:05:11 [info] 185790#185790: *2 client 127.0.0.1 closed keepalive connection +2025/09/02 14:05:11 [debug] 185790#185790: *2 close http connection: 6 +2025/09/02 14:05:11 [debug] 185790#185790: *2 event timer del: 6: 90076933 +2025/09/02 14:05:11 [debug] 185790#185790: *2 reusable connection: 0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 free: 000058127A8A40A0 +2025/09/02 14:05:11 [debug] 185790#185790: *2 free: 000058127A8A1840, unused: 136 +2025/09/02 14:05:11 [debug] 185790#185790: timer delta: 1 +2025/09/02 14:05:11 [debug] 185790#185790: worker cycle +2025/09/02 14:05:11 [debug] 185790#185790: epoll timer: -1 +2025/09/02 14:07:11 [debug] 185790#185790: epoll: fd:7 ev:2011 d:000079E40FF750F8 +2025/09/02 14:07:11 [debug] 185790#185790: epoll_wait() error on fd:7 ev:2011 +2025/09/02 14:07:11 [debug] 185790#185790: channel handler +2025/09/02 14:07:11 [debug] 185790#185790: recvmsg() returned zero +2025/09/02 14:07:11 [debug] 185790#185790: channel: -1 +2025/09/02 14:07:11 [debug] 185790#185790: epoll del connection: fd:7 +2025/09/02 14:07:11 [debug] 185790#185790: reusable connection: 0 +2025/09/02 14:07:11 [debug] 185790#185790: timer delta: 120080 +2025/09/02 14:07:11 [debug] 185790#185790: worker cycle +2025/09/02 14:07:11 [debug] 185790#185790: epoll timer: -1 +2025/09/02 14:21:19 [debug] 186560#186560: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [debug] 186560#186560: counter: 0000775E57EEC080, 1 +2025/09/02 14:21:19 [debug] 186561#186561: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [emerg] 186561#186561: bind() to 0.0.0.0:9001 failed (98: Unknown error) +2025/09/02 14:21:19 [notice] 186561#186561: try again to bind() after 500ms +2025/09/02 14:21:19 [debug] 186561#186561: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [emerg] 186561#186561: bind() to 0.0.0.0:9001 failed (98: Unknown error) +2025/09/02 14:21:19 [notice] 186561#186561: try again to bind() after 500ms +2025/09/02 14:21:19 [debug] 186561#186561: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [emerg] 186561#186561: bind() to 0.0.0.0:9001 failed (98: Unknown error) +2025/09/02 14:21:19 [notice] 186561#186561: try again to bind() after 500ms +2025/09/02 14:21:19 [debug] 186561#186561: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [emerg] 186561#186561: bind() to 0.0.0.0:9001 failed (98: Unknown error) +2025/09/02 14:21:19 [notice] 186561#186561: try again to bind() after 500ms +2025/09/02 14:21:19 [debug] 186561#186561: bind() 0.0.0.0:9001 #5 +2025/09/02 14:21:19 [emerg] 186561#186561: bind() to 0.0.0.0:9001 failed (98: Unknown error) +2025/09/02 14:21:19 [notice] 186561#186561: try again to bind() after 500ms +2025/09/02 14:21:19 [emerg] 186561#186561: still could not bind() +2025/09/02 14:22:30 [debug] 187083#187083: bind() 0.0.0.0:9001 #5 +2025/09/02 14:22:30 [debug] 187083#187083: counter: 000072F9596B0080, 1 +2025/09/02 14:22:30 [debug] 187084#187084: bind() 0.0.0.0:9001 #5 +2025/09/02 14:22:30 [notice] 187084#187084: using the "epoll" event method +2025/09/02 14:22:30 [debug] 187084#187084: counter: 0000727296A33080, 1 +2025/09/02 14:22:30 [notice] 187084#187084: nginx/1.18.0 (Ubuntu) +2025/09/02 14:22:30 [notice] 187084#187084: OS: Linux 6.12.10-76061203-generic +2025/09/02 14:22:30 [notice] 187084#187084: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/09/02 14:22:30 [debug] 187085#187084: write: 6, 00007FFC098C09D0, 7, 0 +2025/09/02 14:22:30 [debug] 187085#187085: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/09/02 14:22:30 [notice] 187085#187085: start worker processes +2025/09/02 14:22:30 [debug] 187085#187085: channel 6:7 +2025/09/02 14:22:30 [notice] 187085#187085: start worker process 187086 +2025/09/02 14:22:30 [debug] 187085#187085: sigsuspend +2025/09/02 14:22:30 [debug] 187086#187086: add cleanup: 00005C72D1EFFB38 +2025/09/02 14:22:30 [debug] 187086#187086: malloc: 00005C72D1EB2BD0:8 +2025/09/02 14:22:30 [debug] 187086#187086: notify eventfd: 9 +2025/09/02 14:22:30 [debug] 187086#187086: testing the EPOLLRDHUP flag: success +2025/09/02 14:22:30 [debug] 187086#187086: malloc: 00005C72D1EC55A0:6144 +2025/09/02 14:22:30 [debug] 187086#187086: malloc: 00007272963C5010:237568 +2025/09/02 14:22:30 [debug] 187086#187086: malloc: 00005C72D1F026C0:98304 +2025/09/02 14:22:30 [debug] 187086#187086: malloc: 00005C72D1F1A6D0:98304 +2025/09/02 14:22:30 [debug] 187086#187086: epoll add event: fd:5 op:1 ev:00002001 +2025/09/02 14:22:30 [debug] 187086#187086: epoll add event: fd:7 op:1 ev:00002001 +2025/09/02 14:22:30 [debug] 187086#187086: setproctitle: "nginx: worker process" +2025/09/02 14:22:30 [debug] 187086#187086: worker cycle +2025/09/02 14:22:30 [debug] 187086#187086: epoll timer: -1 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:5 ev:0001 d:00007272963C5010 +2025/09/02 14:22:56 [debug] 187086#187086: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:22:56 [debug] 187086#187086: posix_memalign: 00005C72D1EB1840:512 @16 +2025/09/02 14:22:56 [debug] 187086#187086: *1 accept: 127.0.0.1:51244 fd:6 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer add: 6: 60000:91136444 +2025/09/02 14:22:56 [debug] 187086#187086: *1 reusable connection: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 25341 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:6 ev:0001 d:00007272963C51E0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http wait request handler +2025/09/02 14:22:56 [debug] 187086#187086: *1 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:6 1024 of 1024 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: avail:112 +2025/09/02 14:22:56 [debug] 187086#187086: *1 reusable connection: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 posix_memalign: 00005C72D1ED0A40:4096 @16 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http process request line +2025/09/02 14:22:56 [debug] 187086#187086: *1 http request line: "PUT /upload HTTP/1.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http uri: "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http args: "" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http exten: "" +2025/09/02 14:22:56 [debug] 187086#187086: *1 posix_memalign: 00005C72D1EC6DB0:4096 @16 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http process request header line +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Host: localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Accept: */*" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlY2IwNjczMzFjMTdiODIwNjQwZTIwZGYyYjE5NmMxNzc3ODRiYjVkZGFiOGUwMGVlYzI3OTI0MGJjNGE5MTE2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4MzczNzYsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI1MmQ3OTIwNzI1YmJiZDg2ZDU0YTc4MDJhNDVjMGMzOWZhODE1ODcwNTQzNmZjNTdkN2M0ZmI0YmUxY2U3NWYxIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0MDk3NSJdXSwiY29udGVudCI6IiIsInNpZyI6IjcyNzgyOWYxM2I3OGQ1NWE3ZTY0NjNmYWUyOTBkNTZkYjhlZWIyZGE5ZjdmZGQxYWI0YmM5MWE4NjRiYjgwMDAxZDEwNWYzMzBhMWIxMGM5MGZhNGFiOTc5MmRhNjhiZmEyNDFhMTlhMDI3ZDUwMjcyMzk1YjBhZDk5MGFmYjMyIn0=" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Content-Type: text/plain" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Content-Disposition: attachment; filename="test_blob_1756837375.txt"" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header: "Content-Length: 296" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http header done +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer del: 6: 91136444 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 rewrite phase: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: "/health" +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/09/02 14:22:56 [debug] 187086#187086: *1 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/09/02 14:22:56 [debug] 187086#187086: *1 using configuration "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http cl:296 max:104857600 +2025/09/02 14:22:56 [debug] 187086#187086: *1 rewrite phase: 3 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "PUT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script regex: "^(PUT)$" +2025/09/02 14:22:56 [notice] 187086#187086: *1 "^(PUT)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script if +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script if: false +2025/09/02 14:22:56 [debug] 187086#187086: *1 post rewrite phase: 4 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 5 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 6 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 7 +2025/09/02 14:22:56 [debug] 187086#187086: *1 access phase: 8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 access phase: 9 +2025/09/02 14:22:56 [debug] 187086#187086: *1 access phase: 10 +2025/09/02 14:22:56 [debug] 187086#187086: *1 post access phase: 11 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 12 +2025/09/02 14:22:56 [debug] 187086#187086: *1 generic phase: 13 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http client request body preread 184 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http request body content length filter +2025/09/02 14:22:56 [debug] 187086#187086: *1 http body new buf t:1 f:0 00005C72D1EB43E8, pos 00005C72D1EB43E8, size: 184 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http read client request body +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:112 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:6 112 of 112 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http client request body recv 112 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http body new buf t:1 f:0 00005C72D1EC7840, pos 00005C72D1EC7840, size: 112 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http client request body rest 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http init upstream, client timer: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/09/02 14:22:56 [debug] 187086#187086: *1 posix_memalign: 00005C72D1EBB160:4096 @16 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "QUERY_STRING" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "QUERY_STRING: " +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REQUEST_METHOD" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "PUT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REQUEST_METHOD: PUT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "CONTENT_TYPE" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "text/plain" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "CONTENT_TYPE: text/plain" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "CONTENT_LENGTH" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "296" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "CONTENT_LENGTH: 296" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SCRIPT_NAME" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SCRIPT_NAME: /upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REQUEST_URI" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REQUEST_URI: /upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "DOCUMENT_URI" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "DOCUMENT_URI: /upload" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "DOCUMENT_ROOT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "./blobs" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SERVER_PROTOCOL" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "HTTP/1.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REQUEST_SCHEME" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "http" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "GATEWAY_INTERFACE" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "CGI/1.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SERVER_SOFTWARE" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "nginx/" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "1.18.0" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REMOTE_ADDR" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "127.0.0.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REMOTE_PORT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "51244" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REMOTE_PORT: 51244" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SERVER_ADDR" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "127.0.0.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SERVER_PORT" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SERVER_PORT: 9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SERVER_NAME" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "localhost" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SERVER_NAME: localhost" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "REDIRECT_STATUS" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "200" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "SCRIPT_FILENAME" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script var: "./blobs" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http script copy: "/ginxsom.fcgi" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlY2IwNjczMzFjMTdiODIwNjQwZTIwZGYyYjE5NmMxNzc3ODRiYjVkZGFiOGUwMGVlYzI3OTI0MGJjNGE5MTE2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4MzczNzYsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI1MmQ3OTIwNzI1YmJiZDg2ZDU0YTc4MDJhNDVjMGMzOWZhODE1ODcwNTQzNmZjNTdkN2M0ZmI0YmUxY2U3NWYxIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0MDk3NSJdXSwiY29udGVudCI6IiIsInNpZyI6IjcyNzgyOWYxM2I3OGQ1NWE3ZTY0NjNmYWUyOTBkNTZkYjhlZWIyZGE5ZjdmZGQxYWI0YmM5MWE4NjRiYjgwMDAxZDEwNWYzMzBhMWIxMGM5MGZhNGFiOTc5MmRhNjhiZmEyNDFhMTlhMDI3ZDUwMjcyMzk1YjBhZDk5MGFmYjMyIn0=" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1756837375.txt"" +2025/09/02 14:22:56 [debug] 187086#187086: *1 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http cleanup add: 00005C72D1EC7B90 +2025/09/02 14:22:56 [debug] 187086#187086: *1 get rr peer, try: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 stream socket 10 +2025/09/02 14:22:56 [debug] 187086#187086: *1 epoll add connection: fd:10 ev:80002005 +2025/09/02 14:22:56 [debug] 187086#187086: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/09/02 14:22:56 [debug] 187086#187086: *1 connected +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream connect: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 posix_memalign: 00005C72D1E9AF20:128 @16 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream send request +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream send request body +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer buf fl:0 s:1304 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer buf fl:0 s:184 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer buf fl:0 s:8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer buf fl:0 s:112 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer buf fl:0 s:8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer in: 00005C72D1EC7C20 +2025/09/02 14:22:56 [debug] 187086#187086: *1 writev: 1616 of 1616 +2025/09/02 14:22:56 [debug] 187086#187086: *1 chain writer out: 0000000000000000 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer add: 10: 60000:91136444 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http finalize request: -4, "/upload?" a:1, c:2 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http request count:2 blk:0 +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:6 ev:0004 d:00007272963C51E0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http run request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream check client, write event:1, "/upload" +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process header +2025/09/02 14:22:56 [debug] 187086#187086: *1 malloc: 00005C72D1EBC170:4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 560 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 21 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 33 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "DEBUG: FastCGI received request" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "DEBUG: METHOD=PUT, URI=/upload +ENTRY: Entering handle_upload_request() function +DEBUG: handle_upload_request called +LOG: [2025-09-02 14:22:56] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlY2IwNjczMzFjMTdiODIwNjQwZTIwZGYyYjE5NmMxNzc3ODRiYjVkZGFiOGUwMGVlYzI3OTI0MGJjNGE5MTE2IiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImN" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream dummy handler +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 2 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 59998 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process header +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 3664 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "yZWF0ZWRfYXQiOjE3NTY4MzczNzYsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCI1MmQ3OTIwNzI1YmJiZDg2ZDU0YTc4MDJhNDVjMGMzOWZhODE1ODcwNTQzNmZjNTdkN2M0ZmI0YmUxY2U3NWYxIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0MDk3NSJdXSwiY29udGVudCI6IiIsInNpZyI6IjcyNzgyOWYxM2I3OGQ1NWE3ZTY0NjNmYWUyOTBkNTZkYjhlZWIyZGE5ZjdmZGQxYWI0YmM5MWE4NjRiYjgwMDAxZDEwNWYzMzBhMWIxMGM5MGZhNGFiOTc5MmRhNjhiZmEyNDFhMTlhMDI3ZDUwMjcyMzk1YjBhZDk5MGFmYjMyIn0= +LOG: [2025-09-02 14:22:56] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG-LAAN: Calculated SHA-256:" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 43 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 05 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 67 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "AUTH: About to perform authentication - auth_header present: YES +AUTH: Calling authenticate_request with hash: 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1 +═══════════════════════════════════════════════════════════════════ +🔍 STEP SERVER-1: Starting server-style authentication (mirroring test_auth_debug.c) +ℹ️ INFO: Server-style auth calle" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "d with method: upload, hash: 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1 +🔍 STEP SERVER-2: Calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlY2IwNjczMzFjMTdi... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=✅ SUCCESS: parse_authorization_header succeeded +🔍 STEP SERVER-3: Calling cJSON_Parse on JSON string +ℹ️ INFO: JSON to" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " parse: {"kind":24242,"id":"ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1756837376,"tags":[["t","upload"],["x","52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1"],["expiration","1756840975"]],"content":"","sig":"727829f13b78d55a7e6463fae290d56db8eeb2da9f7fdd1ab4bc91a864bb80001d105f330a1b10c90fa4ab9792da68bfa241a19a027d50272395b0ad990afb32"} +✅ SUCCESS: cJSON_Parse succeeded" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: ", event parsed +ℹ️ INFO: Parsed JSON: { + "kind": 24242, + "id": "ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116", + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "created_at": 1756837376, + "tags": [["t", "upload"], ["x", "52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1"], ["expiration", "1756840975"]], + "content": "", + "sig": "727829f13b78d55a7e6463fae290d56db8eeb2da9f7fdd1ab4bc91a864bb80001d105f330a1b10c90fa4ab9792da68bfa241a19a0" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "27d50272395b0ad990afb32" +} +🔍 STEP SERVER-4: Event fields before validation +ℹ️ INFO: id: ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116 +ℹ️ INFO: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: sig: 727829f13b78d55a7e6463fae290d56db8eeb2da9f7fdd1ab4bc91a864bb80001d105f330a1b10c90fa4ab9792da68bfa241a19a027d50272395b0ad990afb32 +ℹ️ INFO: kind: 24242 +ℹ️ INFO: created_at: 1756837376 +🔍 STEP SERVER-5: Detailed pubkey" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(0x37) 9(0x39) b(0x62) e(0x65) 6(0x36) 6(0x36) 7(0x37) e(0x65) f(0x66) 9(0x39) +🔍 STEP SERVER-6: Pre-validation pubkey analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(55) 9(57) b(98) e(101) 6(54) 6(54) 7(5" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream dummy handler +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 59998 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process header +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 4096 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: avail:4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "5) e(101) f(102) 9(57) +ℹ️ INFO: Character validation test: +ALL VALID (lowercase hex) +🔍 STEP SERVER-7: Starting detailed validation analysis +ℹ️ INFO: Testing structure validation... +ℹ️ INFO: nostr_validate_event_structure returned: 0 (Success) +✅ SUCCESS: Structure validation PASSED +ℹ️ INFO: Testing cryptographic verification... +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Crypto verification PASSED +ℹ️ INFO: Testing complete validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "... +ℹ️ INFO: nostr_validate_event returned: 0 (Success) +✅ SUCCESS: Complete validation PASSED +🔍 STEP SERVER-8: Running detailed structure validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP STRUCT-1: Starting detailed structure validation +✅ SUCCESS: Event is valid JSON object +🔍 STEP STRUCT-2: Checking required field" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "existence +✅ SUCCESS: Field 'id' exists +✅ SUCCESS: Field 'pubkey' exists +✅ SUCCESS: Field 'created_at' exists +✅ SUCCESS: Field 'kind' exists +✅ SUCCESS: Field 'tags' exists +✅ SUCCESS: Field 'content' exists +✅ SUCCESS: Field 'sig' exists +🔍 STEP STRUCT-3: Validating field types +✅ SUCCESS: Field 'id' is string +✅ SUCCESS: Field 'pubkey' is string +✅ SUCCESS: Field 'created_at' is number +✅ SUCCESS: Field 'kind' is number +✅ SUCCESS: Field 'tags' is array +✅ SUCCESS: Field 'content" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "' is string +✅ SUCCESS: Field 'sig' is string +🔍 STEP STRUCT-4: Validating hex string lengths +ℹ️ INFO: ID string: 'ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116' (length: ✅ SUCCESS: ID string length is correct (64 chars) +ℹ️ INFO: Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: ✅ SUCCESS: Pubkey string length is correct (64 chars) +ℹ️ INFO: Signature string: '727829f13b78d55a7e6463fae290d56db8eeb2da9f7fdd1ab4bc91a864bb" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "80001d105f330a1b10c90fa4ab9792da68bfa241a19a027d50272395b0ad990afb32' (length: ✅ SUCCESS: Signature string length is correct (128 chars) +🔍 STEP STRUCT-5: Validating hex characters +ℹ️ INFO: Checking ID hex characters... +✅ SUCCESS: ID hex characters are valid (lowercase) +ℹ️ INFO: Checking pubkey hex characters... +✅ SUCCESS: Pubkey hex characters are valid (lowercase) +ℹ️ INFO: Checking signature hex characters... +✅ SUCCESS: Signature hex characters are valid (lowercase) +🔍 S" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "TEP STRUCT-6: Validating timestamp +ℹ️ INFO: Created_at timestamp: 1756837376 +✅ SUCCESS: Timestamp is valid: 2025-09-02 18:22:56 UTC +🔍 STEP STRUCT-7: Validating kind +ℹ️ INFO: Event kind: 24242 +✅ SUCCESS: Kind is valid: 24242 +🔍 STEP STRUCT-8: Validating tags array structure +ℹ️ INFO: Tags array has 3 elements +ℹ️ INFO: Tag[0] has 2 elements +ℹ️ INFO: Tag[0][0]: 't' +ℹ️ INFO: Tag[0][1]: 'upload' +ℹ️ INFO: Tag[1] has 2 elements +ℹ️ INFO: Tag[1][0]: 'x' +ℹ️" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " INFO: Tag[1][1]: '52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1' +ℹ️ INFO: Tag[2] has 2 elements +ℹ️ INFO: Tag[2][0]: 'expiration' +ℹ️ INFO: Tag[2][1]: '1756840975' +✅ SUCCESS: Tags array structure is valid +🔍 STEP STRUCT-9: Validating content +ℹ️ INFO: Content: '' (length: ✅ SUCCESS: Content is valid string +✅ SUCCESS: Structure validation completed successfully +✅ SUCCESS: Detailed structure validation PASSED +🔍 STEP SERVER-9: Running detailed signature" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP CRYPTO-1: Starting detailed signature validation +🔍 STEP CRYPTO-2: Creating serialization array +✅ SUCCESS: Serialization array created +🔍 STEP CRYPTO-3: Converting to JSON string +✅ SUCCESS: JSON serialization string created +ℹ️ INFO: Serialization string (length 🔍" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 4096 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "STEP CRYPTO-4: Computing SHA256 hash +✅ SUCCESS: SHA256 hash computed +ℹ️ INFO: Event hash ( ec b0 67 33 1c 17 b8 20 64 0e 20 df 2b 19 6c 17 |..g3... d. .+.l.| + 77 84 bb 5d da b8 e0 0e ec 27 92 40 bc 4a 91 16 |w..].....'.@.J..| +🔍 STEP CRYPTO-5: Verifying event ID +ℹ️ INFO: Calculated ID: ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116 +ℹ️ INFO: Provided ID: ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116 +✅ SUCCESS: Event ID verification passe" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "d +🔍 STEP CRYPTO-6: Preparing signature verification +🔍 STEP CRYPTO-7: Converting hex strings to bytes +✅ SUCCESS: Pubkey hex converted to bytes +ℹ️ INFO: Pubkey bytes ( 79 be 66 7e f9 dc bb ac 55 a0 62 95 ce 87 0b 07 |y.f~....U.b.....| + 02 9b fc db 2d ce 28 d9 59 f2 81 5b 16 f8 17 98 |....-.(.Y..[....| +✅ SUCCESS: Signature hex converted to bytes +ℹ️ INFO: Signature bytes ( 72 78 29 f1 3b 78 d5 5a 7e 64 63 fa e2 90 d5 6d |rx).;x.Z~dc....m| + b8 ee b2 da 9f 7f dd 1a b4 bc 91 a8 6" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "4 bb 80 00 |............d...| + 1d 10 5f 33 0a 1b 10 c9 0f a4 ab 97 92 da 68 bf |.._3..........h.| + a2 41 a1 9a 02 7d 50 27 23 95 b0 ad 99 0a fb 32 |.A...}P'#......2| +🔍 STEP CRYPTO-8: Verifying signature using nostr_verify_event_signature() +ℹ️ INFO: Calling nostr_verify_event_signature() for detailed crypto validation +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Signature verification PASSED using nostr_core_lib! +✅ SUCCESS: Detailed signature validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " PASSED +═══════════════════════════════════════════════════════════════════ +🔍 STEP ANALYZE-1: Analyzing event field details +ℹ️ INFO: Field 'kind': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 24242 +ℹ️ INFO: Field 'id': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: 'ecb067331c17b820640e20df2b196c177784bb5ddab8e00eec279240bc4a9116' +ℹ️ INFO" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: ": Length: ℹ️ INFO: Field 'pubkey': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +ℹ️ INFO: Length: ℹ️ INFO: Field 'created_at': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 1756837376 +ℹ️ INFO: Field 'tags': +ℹ️ INFO: Type: Array +ℹ️ INFO: Size: 3 +ℹ️ INFO: Field 'content': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '' +ℹ️ INFO: Length: ℹ️ INFO: Field 'sig': +ℹ" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " INFO: Type: String +ℹ️ INFO: Value: '727829f13b78d55a7e6463fae290d56db8eeb2da9f7fdd1ab4bc91a864bb80001d105f330a1b10c90fa4ab9792da68bfa241a19a027d50272395b0ad990afb32' +ℹ️ INFO: Length: 🔍 STEP SERVER-10: Validating Blossom-specific requirements +DEBUG: Validating Blossom event +DEBUG: Found matching method tag: upload +DEBUG: Found matching hash tag: 52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1 +DEBUG: Found expiration tag: 1756840975 +DEBUG: Blossom event valid" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "ation passed +✅ SUCCESS: Blossom event validation PASSED +✅ SUCCESS: Server-style authentication successful, returning NOSTR_SUCCESS +AUTH: authenticate_request returned: 0 +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlY2IwNjczMzFjMTdi... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: Authentication passed, uploader_pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "815b16f81798 +DEBUG: Saving file to: blobs/52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt +DEBUG: File permissions set to 644 for blobs/52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1.txt +DEBUG: Successfully saved DEBUG: Content-Disposition header: attachment; filename="test_blob_1756837375.txt" +DEBUG: Looking for filename= in Content-Disposition header +DEBUG: Found filename= at position 12 +DEBUG: Filename value starts with: "test_blob_175683737 +DEBUG: Pro" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream dummy handler +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 59997 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process header +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 1024 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "cessing quoted filename +DEBUG: Quoted filename length: DEBUG: Extracted quoted filename: 'test_blob_1756837375.txt' +DEBUG: Final filename after extraction: test_blob_1756837375.txt +DEBUG: insert_blob_metadata() called for sha256='52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1' +DEBUG: Opening database at path: db/ginxsom.db +DEBUG: Database opened successfully for writing +DEBUG: Preparing SQL: INSERT INTO blobs (sha256, size, type, uploaded_at, uploader_pubkey, filename) VALUES" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: " (?, ?, ?, ?, ?, ?) +DEBUG: SQL prepared successfully, binding parameters +DEBUG: Parameter values to bind: +DEBUG: 1. sha256 = '52d7920725bbbd86d54a7802a45c0c39fa8158705436fc57d7c4fb4be1ce75f1' +DEBUG: 2. size = 296 +DEBUG: 3. type = 'text/plain' +DEBUG: 4. uploaded_at = 1756837376 +DEBUG: 5. uploader_pubkey = '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: 6. filename = 'test_blob_1756837375.txt' +DEBUG: Binding parameter 1 (sha256) +DEBUG: Binding parameter" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream dummy handler +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 59996 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process header +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:10 928 of 4096 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: F8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 504 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "2 (size) +DEBUG: Binding parameter 3 (type) +DEBUG: Binding parameter 4 (uploaded_at) +DEBUG: Binding parameter 5 (uploader_pubkey) +DEBUG: Binding uploader_pubkey as text: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: Binding parameter 6 (filename) +DEBUG: Binding filename as text: 'test_blob_1756837375.txt' +DEBUG: Parameters bound, executing INSERT +DEBUG: INSERT successful +DEBUG: Database closed, returning 1 +DEBUG: Blob metadata successfully stored in database +DEB" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 39 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 57 +2025/09/02 14:22:56 [error] 187086#187086: *1 FastCGI sent in stderr: "UG: Upload completed successfully with database storage" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 07 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 06 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 2D +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 03 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 301 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi parser: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi header: "Status: 200 OK" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi parser: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi header: "Content-Type: application/json" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi parser: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi header done +2025/09/02 14:22:56 [debug] 187086#187086: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:22:56 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block + +2025/09/02 14:22:56 [debug] 187086#187086: *1 write new buf t:1 f:0 00005C72D1EBB818, pos 00005C72D1EBB818, size: 260 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http write filter: l:0 f:0 s:260 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http cacheable: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process upstream +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe read upstream: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe preread: 278 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe buf free s:0 t:1 f:0 00005C72D1EBC170, pos 00005C72D1EBC3FA, size: 278 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe length: -1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write downstream: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write busy: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write: out:0000000000000000, f:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe read upstream: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe buf free s:0 t:1 f:0 00005C72D1EBC170, pos 00005C72D1EBC3FA, size: 278 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe length: -1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer: 10, old: 91136444, new: 91136451 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream dummy handler +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 3 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 59993 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:10 ev:2005 d:00007272963C52C8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream request: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream process upstream +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe read upstream: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 readv: eof:1, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 readv: 1, last:3168 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe recv chain: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe buf free s:0 t:1 f:0 00005C72D1EBC170, pos 00005C72D1EBC3FA, size: 278 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe length: -1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 input buf #0 00005C72D1EBC3FA +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 06 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi closed stdout +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 03 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 01 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 08 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record byte: 00 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi record length: 8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http fastcgi sent end request +2025/09/02 14:22:56 [debug] 187086#187086: *1 input buf 00005C72D1EBC3FA 251 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write downstream: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write downstream flush in +2025/09/02 14:22:56 [debug] 187086#187086: *1 http output filter "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http copy filter: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http postpone filter "/upload?" 00005C72D1EC7BF0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http chunk: 251 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write old buf t:1 f:0 00005C72D1EBB818, pos 00005C72D1EBB818, size: 260 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write new buf t:1 f:0 00005C72D1EC7D80, pos 00005C72D1EC7D80, size: 4 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write new buf t:1 f:0 00005C72D1EBC170, pos 00005C72D1EBC3FA, size: 251 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write new buf t:0 f:0 0000000000000000, pos 00005C72B73A72E8, size: 2 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http write filter: l:0 f:0 s:517 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http copy filter: 0 "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 pipe write downstream done +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer: 10, old: 91136444, new: 91136452 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream exit: 0000000000000000 +2025/09/02 14:22:56 [debug] 187086#187086: *1 finalize http upstream request: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 finalize http fastcgi request +2025/09/02 14:22:56 [debug] 187086#187086: *1 free rr peer 1 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 close http upstream connection: 10 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1E9AF20, unused: 48 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer del: 10: 91136444 +2025/09/02 14:22:56 [debug] 187086#187086: *1 reusable connection: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http upstream temp fd: -1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http output filter "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http copy filter: "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http postpone filter "/upload?" 00007FFC098C0610 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http chunk: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write old buf t:1 f:0 00005C72D1EBB818, pos 00005C72D1EBB818, size: 260 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write old buf t:1 f:0 00005C72D1EC7D80, pos 00005C72D1EC7D80, size: 4 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write old buf t:1 f:0 00005C72D1EBC170, pos 00005C72D1EBC3FA, size: 251 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write old buf t:0 f:0 0000000000000000, pos 00005C72B73A72E8, size: 2 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 write new buf t:0 f:0 0000000000000000, pos 00005C72B73A72E5, size: 5 file: 0, size: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http write filter: l:1 f:0 s:522 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http write filter limit 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 writev: 522 of 522 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http write filter 0000000000000000 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http copy filter: 0 "/upload?" +2025/09/02 14:22:56 [debug] 187086#187086: *1 http finalize request: 0, "/upload?" a:1, c:1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 set http keepalive handler +2025/09/02 14:22:56 [debug] 187086#187086: *1 http close request +2025/09/02 14:22:56 [debug] 187086#187086: *1 http log handler +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EBC170 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1ED0A40, unused: 3 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EC6DB0, unused: 8 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EBB160, unused: 1170 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EB40A0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 hc free: 0000000000000000 +2025/09/02 14:22:56 [debug] 187086#187086: *1 hc busy: 0000000000000000 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 tcp_nodelay +2025/09/02 14:22:56 [debug] 187086#187086: *1 reusable connection: 1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer add: 6: 65000:91141452 +2025/09/02 14:22:56 [debug] 187086#187086: *1 post event 00005C72D1F02780 +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:22:56 [debug] 187086#187086: posted event 00005C72D1F02780 +2025/09/02 14:22:56 [debug] 187086#187086: *1 delete posted event 00005C72D1F02780 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http keepalive handler +2025/09/02 14:22:56 [debug] 187086#187086: *1 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:0, avail:0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EB40A0 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: 65000 +2025/09/02 14:22:56 [debug] 187086#187086: epoll: fd:6 ev:2005 d:00007272963C51E0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 http keepalive handler +2025/09/02 14:22:56 [debug] 187086#187086: *1 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: eof:1, avail:-1 +2025/09/02 14:22:56 [debug] 187086#187086: *1 recv: fd:6 0 of 1024 +2025/09/02 14:22:56 [info] 187086#187086: *1 client 127.0.0.1 closed keepalive connection +2025/09/02 14:22:56 [debug] 187086#187086: *1 close http connection: 6 +2025/09/02 14:22:56 [debug] 187086#187086: *1 event timer del: 6: 91141452 +2025/09/02 14:22:56 [debug] 187086#187086: *1 reusable connection: 0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EB40A0 +2025/09/02 14:22:56 [debug] 187086#187086: *1 free: 00005C72D1EB1840, unused: 120 +2025/09/02 14:22:56 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:22:56 [debug] 187086#187086: worker cycle +2025/09/02 14:22:56 [debug] 187086#187086: epoll timer: -1 +2025/09/02 14:23:24 [debug] 187086#187086: epoll: fd:5 ev:0001 d:00007272963C5010 +2025/09/02 14:23:24 [debug] 187086#187086: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:23:24 [debug] 187086#187086: posix_memalign: 00005C72D1EB1840:512 @16 +2025/09/02 14:23:24 [debug] 187086#187086: *3 accept: 127.0.0.1:45398 fd:6 +2025/09/02 14:23:24 [debug] 187086#187086: *3 event timer add: 6: 60000:91165226 +2025/09/02 14:23:24 [debug] 187086#187086: *3 reusable connection: 1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:23:24 [debug] 187086#187086: timer delta: 28773 +2025/09/02 14:23:24 [debug] 187086#187086: worker cycle +2025/09/02 14:23:24 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:23:24 [debug] 187086#187086: epoll: fd:6 ev:0001 d:00007272963C51E1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http wait request handler +2025/09/02 14:23:24 [debug] 187086#187086: *3 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:23:24 [debug] 187086#187086: *3 recv: eof:0, avail:-1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 recv: fd:6 146 of 1024 +2025/09/02 14:23:24 [debug] 187086#187086: *3 reusable connection: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 posix_memalign: 00005C72D1ED0A40:4096 @16 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http process request line +2025/09/02 14:23:24 [debug] 187086#187086: *3 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http args: "" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http exten: "txt" +2025/09/02 14:23:24 [debug] 187086#187086: *3 posix_memalign: 00005C72D1EC6DB0:4096 @16 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http process request header line +2025/09/02 14:23:24 [debug] 187086#187086: *3 http header: "Host: localhost:9001" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http header: "Accept: */*" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http header done +2025/09/02 14:23:24 [debug] 187086#187086: *3 event timer del: 6: 91165226 +2025/09/02 14:23:24 [debug] 187086#187086: *3 generic phase: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 rewrite phase: 1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 test location: "/health" +2025/09/02 14:23:24 [debug] 187086#187086: *3 test location: "/debug/list" +2025/09/02 14:23:24 [debug] 187086#187086: *3 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:23:24 [debug] 187086#187086: *3 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http cl:-1 max:104857600 +2025/09/02 14:23:24 [debug] 187086#187086: *3 rewrite phase: 3 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http script var +2025/09/02 14:23:24 [debug] 187086#187086: *3 http script var: "GET" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http script value: "DELETE" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http script not equal +2025/09/02 14:23:24 [debug] 187086#187086: *3 http script if +2025/09/02 14:23:24 [debug] 187086#187086: *3 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http set discard body +2025/09/02 14:23:24 [debug] 187086#187086: *3 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:23:24 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 14:23:24 [debug] 187086#187086: *3 write new buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http write filter: l:0 f:0 s:164 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 00005C72D1EC7320 +2025/09/02 14:23:24 [debug] 187086#187086: *3 write old buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6580, size: 100 file: 0, size: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6C80, size: 62 file: 0, size: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http write filter: l:1 f:0 s:326 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http write filter limit 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 writev: 326 of 326 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http write filter 0000000000000000 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:23:24 [debug] 187086#187086: *3 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 set http keepalive handler +2025/09/02 14:23:24 [debug] 187086#187086: *3 http close request +2025/09/02 14:23:24 [debug] 187086#187086: *3 http log handler +2025/09/02 14:23:24 [debug] 187086#187086: *3 free: 00005C72D1ED0A40, unused: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 free: 00005C72D1EC6DB0, unused: 2452 +2025/09/02 14:23:24 [debug] 187086#187086: *3 free: 00005C72D1EB40A0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 hc free: 0000000000000000 +2025/09/02 14:23:24 [debug] 187086#187086: *3 hc busy: 0000000000000000 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 tcp_nodelay +2025/09/02 14:23:24 [debug] 187086#187086: *3 reusable connection: 1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 event timer add: 6: 65000:91170226 +2025/09/02 14:23:24 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:23:24 [debug] 187086#187086: worker cycle +2025/09/02 14:23:24 [debug] 187086#187086: epoll timer: 65000 +2025/09/02 14:23:24 [debug] 187086#187086: epoll: fd:6 ev:2001 d:00007272963C51E1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 http keepalive handler +2025/09/02 14:23:24 [debug] 187086#187086: *3 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:23:24 [debug] 187086#187086: *3 recv: eof:1, avail:-1 +2025/09/02 14:23:24 [debug] 187086#187086: *3 recv: fd:6 0 of 1024 +2025/09/02 14:23:24 [info] 187086#187086: *3 client 127.0.0.1 closed keepalive connection +2025/09/02 14:23:24 [debug] 187086#187086: *3 close http connection: 6 +2025/09/02 14:23:24 [debug] 187086#187086: *3 event timer del: 6: 91170226 +2025/09/02 14:23:24 [debug] 187086#187086: *3 reusable connection: 0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 free: 00005C72D1EB40A0 +2025/09/02 14:23:24 [debug] 187086#187086: *3 free: 00005C72D1EB1840, unused: 136 +2025/09/02 14:23:24 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:23:24 [debug] 187086#187086: worker cycle +2025/09/02 14:23:24 [debug] 187086#187086: epoll timer: -1 +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:5 ev:0001 d:00007272963C5010 +2025/09/02 14:24:38 [debug] 187086#187086: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:24:38 [debug] 187086#187086: posix_memalign: 00005C72D1EB1840:512 @16 +2025/09/02 14:24:38 [debug] 187086#187086: *4 accept: 127.0.0.1:50002 fd:6 +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer add: 6: 60000:91239204 +2025/09/02 14:24:38 [debug] 187086#187086: *4 reusable connection: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:24:38 [debug] 187086#187086: timer delta: 73977 +2025/09/02 14:24:38 [debug] 187086#187086: worker cycle +2025/09/02 14:24:38 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:6 ev:0001 d:00007272963C51E0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http wait request handler +2025/09/02 14:24:38 [debug] 187086#187086: *4 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: eof:0, avail:-1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: fd:6 147 of 1024 +2025/09/02 14:24:38 [debug] 187086#187086: *4 reusable connection: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 posix_memalign: 00005C72D1ED0A40:4096 @16 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http process request line +2025/09/02 14:24:38 [debug] 187086#187086: *4 http request line: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http uri: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http args: "" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http exten: "" +2025/09/02 14:24:38 [debug] 187086#187086: *4 posix_memalign: 00005C72D1EC6DB0:4096 @16 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http process request header line +2025/09/02 14:24:38 [debug] 187086#187086: *4 http header: "Host: localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http header: "Accept: */*" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http header done +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer del: 6: 91239204 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 rewrite phase: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: "/health" +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: "/upload" +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: ~ "^/fcgi-head/([a-f0-9]{64}).*$" +2025/09/02 14:24:38 [debug] 187086#187086: *4 test location: ~ "^/list/([a-f0-9]{64}).*$" +2025/09/02 14:24:38 [debug] 187086#187086: *4 using configuration "^/list/([a-f0-9]{64}).*$" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http cl:-1 max:104857600 +2025/09/02 14:24:38 [debug] 187086#187086: *4 rewrite phase: 3 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "GET" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script regex: "^(GET)$" +2025/09/02 14:24:38 [notice] 187086#187086: *4 "^(GET)$" matches "GET", client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", host: "localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script if +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script if: false +2025/09/02 14:24:38 [debug] 187086#187086: *4 post rewrite phase: 4 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 5 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 6 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 7 +2025/09/02 14:24:38 [debug] 187086#187086: *4 access phase: 8 +2025/09/02 14:24:38 [debug] 187086#187086: *4 access phase: 9 +2025/09/02 14:24:38 [debug] 187086#187086: *4 access phase: 10 +2025/09/02 14:24:38 [debug] 187086#187086: *4 post access phase: 11 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 12 +2025/09/02 14:24:38 [debug] 187086#187086: *4 generic phase: 13 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http init upstream, client timer: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 epoll add event: fd:6 op:3 ev:80002005 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "QUERY_STRING" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "QUERY_STRING: " +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REQUEST_METHOD" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "GET" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REQUEST_METHOD: GET" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "CONTENT_TYPE" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "CONTENT_TYPE: " +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "CONTENT_LENGTH" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "CONTENT_LENGTH: " +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SCRIPT_NAME" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SCRIPT_NAME: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REQUEST_URI" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REQUEST_URI: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "DOCUMENT_URI" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "DOCUMENT_URI: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "DOCUMENT_ROOT" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "./blobs" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SERVER_PROTOCOL" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "HTTP/1.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REQUEST_SCHEME" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "http" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REQUEST_SCHEME: http" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "GATEWAY_INTERFACE" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "CGI/1.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SERVER_SOFTWARE" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "nginx/" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "1.18.0" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REMOTE_ADDR" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "127.0.0.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REMOTE_PORT" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "50002" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REMOTE_PORT: 50002" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SERVER_ADDR" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "127.0.0.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SERVER_PORT" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SERVER_PORT: 9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SERVER_NAME" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "localhost" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SERVER_NAME: localhost" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "REDIRECT_STATUS" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "200" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "REDIRECT_STATUS: 200" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "SCRIPT_FILENAME" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script var: "./blobs" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http script copy: "/ginxsom.fcgi" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "HTTP_HOST: localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/09/02 14:24:38 [debug] 187086#187086: *4 fastcgi param: "HTTP_ACCEPT: */*" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http cleanup add: 00005C72D1ED1A28 +2025/09/02 14:24:38 [debug] 187086#187086: *4 get rr peer, try: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 stream socket 10 +2025/09/02 14:24:38 [debug] 187086#187086: *4 epoll add connection: fd:10 ev:80002005 +2025/09/02 14:24:38 [debug] 187086#187086: *4 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #5 +2025/09/02 14:24:38 [debug] 187086#187086: *4 connected +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream connect: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 posix_memalign: 00005C72D1E9AF20:128 @16 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream send request +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream send request body +2025/09/02 14:24:38 [debug] 187086#187086: *4 chain writer buf fl:0 s:704 +2025/09/02 14:24:38 [debug] 187086#187086: *4 chain writer in: 00005C72D1EC7B28 +2025/09/02 14:24:38 [debug] 187086#187086: *4 writev: 704 of 704 +2025/09/02 14:24:38 [debug] 187086#187086: *4 chain writer out: 0000000000000000 +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer add: 10: 60000:91239204 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http finalize request: -4, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" a:1, c:2 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http request count:2 blk:0 +2025/09/02 14:24:38 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:24:38 [debug] 187086#187086: worker cycle +2025/09/02 14:24:38 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:6 ev:0004 d:00007272963C51E0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http run request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream check client, write event:1, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:10 ev:0005 d:00007272963C52C9 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream process header +2025/09/02 14:24:38 [debug] 187086#187086: *4 malloc: 00005C72D1EBB160:4096 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: eof:0, avail:-1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: fd:10 48 of 4096 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 21 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 33 +2025/09/02 14:24:38 [error] 187086#187086: *4 FastCGI sent in stderr: "DEBUG: FastCGI received request" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: eof:0, avail:0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream dummy handler +2025/09/02 14:24:38 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:24:38 [debug] 187086#187086: worker cycle +2025/09/02 14:24:38 [debug] 187086#187086: epoll timer: 59999 +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:10 ev:2005 d:00007272963C52C9 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream process header +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: eof:1, avail:-1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: fd:10 1272 of 4048 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: F8 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 504 +2025/09/02 14:24:38 [error] 187086#187086: *4 FastCGI sent in stderr: "DEBUG: METHOD=GET, URI=/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +DEBUG: handle_list_request called with pubkey=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +LOG: [2025-09-02 14:24:38] GET /list - Auth: pending - Status: 0 +DEBUG: Query string: +DEBUG: SQL query: SELECT sha256, size, type, uploaded_at, filename FROM blobs WHERE uploader_pubkey = ? ORDER BY uploaded_at DESC +DEBUG: List request completed successfully +LOG: [2025-09-02 14:24:38] GET /l" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 20 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 32 +2025/09/02 14:24:38 [error] 187086#187086: *4 FastCGI sent in stderr: "ist - Auth: none - Status: 200" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 06 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 02 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: A1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 07 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 673 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi parser: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi header: "Status: 200 OK" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi parser: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi header: "Content-Type: application/json" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi parser: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi header done +2025/09/02 14:24:38 [debug] 187086#187086: *4 posix_memalign: 00005C72D1EBC170:4096 @16 +2025/09/02 14:24:38 [debug] 187086#187086: *4 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:24:38 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block + +2025/09/02 14:24:38 [debug] 187086#187086: *4 write new buf t:1 f:0 00005C72D1EBC1E0, pos 00005C72D1EBC1E0, size: 260 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http write filter: l:0 f:0 s:260 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http cacheable: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream process upstream +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe read upstream: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe preread: 654 +2025/09/02 14:24:38 [debug] 187086#187086: *4 readv: eof:1, avail:0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 readv: 1, last:2776 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe recv chain: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe buf free s:0 t:1 f:0 00005C72D1EBB160, pos 00005C72D1EBB3FA, size: 654 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe length: -1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 input buf #0 00005C72D1EBB3FA +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 06 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi closed stdout +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 03 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 01 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 08 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record byte: 00 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi record length: 8 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http fastcgi sent end request +2025/09/02 14:24:38 [debug] 187086#187086: *4 input buf 00005C72D1EBB3FA 623 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe write downstream: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe write downstream flush in +2025/09/02 14:24:38 [debug] 187086#187086: *4 http output filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http copy filter: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http postpone filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" 00005C72D1EC7D88 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http chunk: 623 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write old buf t:1 f:0 00005C72D1EBC1E0, pos 00005C72D1EBC1E0, size: 260 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write new buf t:1 f:0 00005C72D1EBC538, pos 00005C72D1EBC538, size: 5 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write new buf t:1 f:0 00005C72D1EBB160, pos 00005C72D1EBB3FA, size: 623 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write new buf t:0 f:0 0000000000000000, pos 00005C72B73A72E8, size: 2 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http write filter: l:0 f:0 s:890 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http copy filter: 0 "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 pipe write downstream done +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer: 10, old: 91239204, new: 91239206 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream exit: 0000000000000000 +2025/09/02 14:24:38 [debug] 187086#187086: *4 finalize http upstream request: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 finalize http fastcgi request +2025/09/02 14:24:38 [debug] 187086#187086: *4 free rr peer 1 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 close http upstream connection: 10 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1E9AF20, unused: 48 +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer del: 10: 91239204 +2025/09/02 14:24:38 [debug] 187086#187086: *4 reusable connection: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http upstream temp fd: -1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http output filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http copy filter: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http postpone filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" 00007FFC098C0610 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http chunk: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write old buf t:1 f:0 00005C72D1EBC1E0, pos 00005C72D1EBC1E0, size: 260 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write old buf t:1 f:0 00005C72D1EBC538, pos 00005C72D1EBC538, size: 5 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write old buf t:1 f:0 00005C72D1EBB160, pos 00005C72D1EBB3FA, size: 623 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write old buf t:0 f:0 0000000000000000, pos 00005C72B73A72E8, size: 2 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 write new buf t:0 f:0 0000000000000000, pos 00005C72B73A72E5, size: 5 file: 0, size: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http write filter: l:1 f:0 s:895 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http write filter limit 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 writev: 895 of 895 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http write filter 0000000000000000 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http copy filter: 0 "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 14:24:38 [debug] 187086#187086: *4 http finalize request: 0, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" a:1, c:1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 set http keepalive handler +2025/09/02 14:24:38 [debug] 187086#187086: *4 http close request +2025/09/02 14:24:38 [debug] 187086#187086: *4 http log handler +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EBB160 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1ED0A40, unused: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EC6DB0, unused: 8 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EBC170, unused: 2579 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EB40A0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 hc free: 0000000000000000 +2025/09/02 14:24:38 [debug] 187086#187086: *4 hc busy: 0000000000000000 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 tcp_nodelay +2025/09/02 14:24:38 [debug] 187086#187086: *4 reusable connection: 1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer add: 6: 65000:91244206 +2025/09/02 14:24:38 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:24:38 [debug] 187086#187086: worker cycle +2025/09/02 14:24:38 [debug] 187086#187086: epoll timer: 65000 +2025/09/02 14:24:38 [debug] 187086#187086: epoll: fd:6 ev:2005 d:00007272963C51E0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 http keepalive handler +2025/09/02 14:24:38 [debug] 187086#187086: *4 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: eof:1, avail:-1 +2025/09/02 14:24:38 [debug] 187086#187086: *4 recv: fd:6 0 of 1024 +2025/09/02 14:24:38 [info] 187086#187086: *4 client 127.0.0.1 closed keepalive connection +2025/09/02 14:24:38 [debug] 187086#187086: *4 close http connection: 6 +2025/09/02 14:24:38 [debug] 187086#187086: *4 event timer del: 6: 91244206 +2025/09/02 14:24:38 [debug] 187086#187086: *4 reusable connection: 0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EB40A0 +2025/09/02 14:24:38 [debug] 187086#187086: *4 free: 00005C72D1EB1840, unused: 120 +2025/09/02 14:24:38 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:24:38 [debug] 187086#187086: worker cycle +2025/09/02 14:24:38 [debug] 187086#187086: epoll timer: -1 +2025/09/02 14:25:06 [debug] 187086#187086: epoll: fd:5 ev:0001 d:00007272963C5010 +2025/09/02 14:25:06 [debug] 187086#187086: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:25:06 [debug] 187086#187086: posix_memalign: 00005C72D1EB1840:512 @16 +2025/09/02 14:25:06 [debug] 187086#187086: *6 accept: 127.0.0.1:36670 fd:6 +2025/09/02 14:25:06 [debug] 187086#187086: *6 event timer add: 6: 60000:91266493 +2025/09/02 14:25:06 [debug] 187086#187086: *6 reusable connection: 1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:25:06 [debug] 187086#187086: timer delta: 27286 +2025/09/02 14:25:06 [debug] 187086#187086: worker cycle +2025/09/02 14:25:06 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:25:06 [debug] 187086#187086: epoll: fd:6 ev:0001 d:00007272963C51E1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http wait request handler +2025/09/02 14:25:06 [debug] 187086#187086: *6 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:25:06 [debug] 187086#187086: *6 recv: eof:0, avail:-1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 recv: fd:6 142 of 1024 +2025/09/02 14:25:06 [debug] 187086#187086: *6 reusable connection: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 posix_memalign: 00005C72D1ED0A40:4096 @16 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http process request line +2025/09/02 14:25:06 [debug] 187086#187086: *6 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 HTTP/1.1" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http args: "" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http exten: "" +2025/09/02 14:25:06 [debug] 187086#187086: *6 posix_memalign: 00005C72D1EC6DB0:4096 @16 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http process request header line +2025/09/02 14:25:06 [debug] 187086#187086: *6 http header: "Host: localhost:9001" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http header: "Accept: */*" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http header done +2025/09/02 14:25:06 [debug] 187086#187086: *6 event timer del: 6: 91266493 +2025/09/02 14:25:06 [debug] 187086#187086: *6 generic phase: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 rewrite phase: 1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 test location: "/health" +2025/09/02 14:25:06 [debug] 187086#187086: *6 test location: "/debug/list" +2025/09/02 14:25:06 [debug] 187086#187086: *6 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:25:06 [debug] 187086#187086: *6 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http cl:-1 max:104857600 +2025/09/02 14:25:06 [debug] 187086#187086: *6 rewrite phase: 3 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http script var +2025/09/02 14:25:06 [debug] 187086#187086: *6 http script var: "GET" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http script value: "DELETE" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http script not equal +2025/09/02 14:25:06 [debug] 187086#187086: *6 http script if +2025/09/02 14:25:06 [debug] 187086#187086: *6 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" a:1, c:1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http set discard body +2025/09/02 14:25:06 [debug] 187086#187086: *6 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:25:06 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 14:25:06 [debug] 187086#187086: *6 write new buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http write filter: l:0 f:0 s:164 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" 00005C72D1EC7320 +2025/09/02 14:25:06 [debug] 187086#187086: *6 write old buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6580, size: 100 file: 0, size: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6C80, size: 62 file: 0, size: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http write filter: l:1 f:0 s:326 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http write filter limit 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 writev: 326 of 326 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http write filter 0000000000000000 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" +2025/09/02 14:25:06 [debug] 187086#187086: *6 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4?" a:1, c:1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 set http keepalive handler +2025/09/02 14:25:06 [debug] 187086#187086: *6 http close request +2025/09/02 14:25:06 [debug] 187086#187086: *6 http log handler +2025/09/02 14:25:06 [debug] 187086#187086: *6 free: 00005C72D1ED0A40, unused: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 free: 00005C72D1EC6DB0, unused: 2456 +2025/09/02 14:25:06 [debug] 187086#187086: *6 free: 00005C72D1EB40A0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 hc free: 0000000000000000 +2025/09/02 14:25:06 [debug] 187086#187086: *6 hc busy: 0000000000000000 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 tcp_nodelay +2025/09/02 14:25:06 [debug] 187086#187086: *6 reusable connection: 1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 event timer add: 6: 65000:91271493 +2025/09/02 14:25:06 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:25:06 [debug] 187086#187086: worker cycle +2025/09/02 14:25:06 [debug] 187086#187086: epoll timer: 65000 +2025/09/02 14:25:06 [debug] 187086#187086: epoll: fd:6 ev:2001 d:00007272963C51E1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 http keepalive handler +2025/09/02 14:25:06 [debug] 187086#187086: *6 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:25:06 [debug] 187086#187086: *6 recv: eof:1, avail:-1 +2025/09/02 14:25:06 [debug] 187086#187086: *6 recv: fd:6 0 of 1024 +2025/09/02 14:25:06 [info] 187086#187086: *6 client 127.0.0.1 closed keepalive connection +2025/09/02 14:25:06 [debug] 187086#187086: *6 close http connection: 6 +2025/09/02 14:25:06 [debug] 187086#187086: *6 event timer del: 6: 91271493 +2025/09/02 14:25:06 [debug] 187086#187086: *6 reusable connection: 0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 free: 00005C72D1EB40A0 +2025/09/02 14:25:06 [debug] 187086#187086: *6 free: 00005C72D1EB1840, unused: 136 +2025/09/02 14:25:06 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:25:06 [debug] 187086#187086: worker cycle +2025/09/02 14:25:06 [debug] 187086#187086: epoll timer: -1 +2025/09/02 14:25:10 [debug] 187086#187086: epoll: fd:5 ev:0001 d:00007272963C5010 +2025/09/02 14:25:10 [debug] 187086#187086: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 14:25:10 [debug] 187086#187086: posix_memalign: 00005C72D1EB1840:512 @16 +2025/09/02 14:25:10 [debug] 187086#187086: *7 accept: 127.0.0.1:36684 fd:6 +2025/09/02 14:25:10 [debug] 187086#187086: *7 event timer add: 6: 60000:91270922 +2025/09/02 14:25:10 [debug] 187086#187086: *7 reusable connection: 1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 14:25:10 [debug] 187086#187086: timer delta: 4428 +2025/09/02 14:25:10 [debug] 187086#187086: worker cycle +2025/09/02 14:25:10 [debug] 187086#187086: epoll timer: 60000 +2025/09/02 14:25:10 [debug] 187086#187086: epoll: fd:6 ev:0001 d:00007272963C51E0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http wait request handler +2025/09/02 14:25:10 [debug] 187086#187086: *7 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:25:10 [debug] 187086#187086: *7 recv: eof:0, avail:-1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 recv: fd:6 146 of 1024 +2025/09/02 14:25:10 [debug] 187086#187086: *7 reusable connection: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 posix_memalign: 00005C72D1ED0A40:4096 @16 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http process request line +2025/09/02 14:25:10 [debug] 187086#187086: *7 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http args: "" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http exten: "txt" +2025/09/02 14:25:10 [debug] 187086#187086: *7 posix_memalign: 00005C72D1EC6DB0:4096 @16 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http process request header line +2025/09/02 14:25:10 [debug] 187086#187086: *7 http header: "Host: localhost:9001" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http header: "User-Agent: curl/8.15.0" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http header: "Accept: */*" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http header done +2025/09/02 14:25:10 [debug] 187086#187086: *7 event timer del: 6: 91270922 +2025/09/02 14:25:10 [debug] 187086#187086: *7 generic phase: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 rewrite phase: 1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 test location: "/health" +2025/09/02 14:25:10 [debug] 187086#187086: *7 test location: "/debug/list" +2025/09/02 14:25:10 [debug] 187086#187086: *7 test location: ~ "^/([a-f0-9]{64}).*$" +2025/09/02 14:25:10 [debug] 187086#187086: *7 using configuration "^/([a-f0-9]{64}).*$" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http cl:-1 max:104857600 +2025/09/02 14:25:10 [debug] 187086#187086: *7 rewrite phase: 3 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http script var +2025/09/02 14:25:10 [debug] 187086#187086: *7 http script var: "GET" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http script value: "DELETE" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http script not equal +2025/09/02 14:25:10 [debug] 187086#187086: *7 http script if +2025/09/02 14:25:10 [debug] 187086#187086: *7 http finalize request: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http special response: 404, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http set discard body +2025/09/02 14:25:10 [debug] 187086#187086: *7 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 18:25:10 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 14:25:10 [debug] 187086#187086: *7 write new buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http write filter: l:0 f:0 s:164 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 00005C72D1EC7320 +2025/09/02 14:25:10 [debug] 187086#187086: *7 write old buf t:1 f:0 00005C72D1EC7190, pos 00005C72D1EC7190, size: 164 file: 0, size: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6580, size: 100 file: 0, size: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 write new buf t:0 f:0 0000000000000000, pos 00005C72B73E6C80, size: 62 file: 0, size: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http write filter: l:1 f:0 s:326 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http write filter limit 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 writev: 326 of 326 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http write filter 0000000000000000 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 14:25:10 [debug] 187086#187086: *7 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 set http keepalive handler +2025/09/02 14:25:10 [debug] 187086#187086: *7 http close request +2025/09/02 14:25:10 [debug] 187086#187086: *7 http log handler +2025/09/02 14:25:10 [debug] 187086#187086: *7 free: 00005C72D1ED0A40, unused: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 free: 00005C72D1EC6DB0, unused: 2452 +2025/09/02 14:25:10 [debug] 187086#187086: *7 free: 00005C72D1EB40A0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 hc free: 0000000000000000 +2025/09/02 14:25:10 [debug] 187086#187086: *7 hc busy: 0000000000000000 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 tcp_nodelay +2025/09/02 14:25:10 [debug] 187086#187086: *7 reusable connection: 1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 event timer add: 6: 65000:91275923 +2025/09/02 14:25:10 [debug] 187086#187086: timer delta: 1 +2025/09/02 14:25:10 [debug] 187086#187086: worker cycle +2025/09/02 14:25:10 [debug] 187086#187086: epoll timer: 65000 +2025/09/02 14:25:10 [debug] 187086#187086: epoll: fd:6 ev:2001 d:00007272963C51E0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 http keepalive handler +2025/09/02 14:25:10 [debug] 187086#187086: *7 malloc: 00005C72D1EB40A0:1024 +2025/09/02 14:25:10 [debug] 187086#187086: *7 recv: eof:1, avail:-1 +2025/09/02 14:25:10 [debug] 187086#187086: *7 recv: fd:6 0 of 1024 +2025/09/02 14:25:10 [info] 187086#187086: *7 client 127.0.0.1 closed keepalive connection +2025/09/02 14:25:10 [debug] 187086#187086: *7 close http connection: 6 +2025/09/02 14:25:10 [debug] 187086#187086: *7 event timer del: 6: 91275923 +2025/09/02 14:25:10 [debug] 187086#187086: *7 reusable connection: 0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 free: 00005C72D1EB40A0 +2025/09/02 14:25:10 [debug] 187086#187086: *7 free: 00005C72D1EB1840, unused: 136 +2025/09/02 14:25:10 [debug] 187086#187086: timer delta: 0 +2025/09/02 14:25:10 [debug] 187086#187086: worker cycle +2025/09/02 14:25:10 [debug] 187086#187086: epoll timer: -1 +2025/09/02 15:05:23 [debug] 187086#187086: epoll: fd:7 ev:2011 d:00007272963C50F8 +2025/09/02 15:05:23 [debug] 187086#187086: epoll_wait() error on fd:7 ev:2011 +2025/09/02 15:05:23 [debug] 187086#187086: channel handler +2025/09/02 15:05:23 [debug] 187086#187086: recvmsg() returned zero +2025/09/02 15:05:23 [debug] 187086#187086: channel: -1 +2025/09/02 15:05:23 [debug] 187086#187086: epoll del connection: fd:7 +2025/09/02 15:05:23 [debug] 187086#187086: reusable connection: 0 +2025/09/02 15:05:23 [debug] 187086#187086: timer delta: 2412837 +2025/09/02 15:05:23 [debug] 187086#187086: worker cycle +2025/09/02 15:05:23 [debug] 187086#187086: epoll timer: -1 +2025/09/02 15:17:09 [debug] 188755#188755: bind() 0.0.0.0:9001 #5 +2025/09/02 15:17:09 [debug] 188755#188755: counter: 000074B0DF3B5080, 1 +2025/09/02 15:17:09 [debug] 188756#188756: bind() 0.0.0.0:9001 #5 +2025/09/02 15:17:09 [notice] 188756#188756: using the "epoll" event method +2025/09/02 15:17:09 [debug] 188756#188756: counter: 000071E17D26B080, 1 +2025/09/02 15:17:09 [notice] 188756#188756: nginx/1.18.0 (Ubuntu) +2025/09/02 15:17:09 [notice] 188756#188756: OS: Linux 6.12.10-76061203-generic +2025/09/02 15:17:09 [notice] 188756#188756: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/09/02 15:17:09 [debug] 188757#188756: write: 6, 00007FFE362F2B10, 7, 0 +2025/09/02 15:17:09 [debug] 188757#188757: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/09/02 15:17:09 [notice] 188757#188757: start worker processes +2025/09/02 15:17:09 [debug] 188757#188757: channel 6:7 +2025/09/02 15:17:09 [notice] 188757#188757: start worker process 188758 +2025/09/02 15:17:09 [debug] 188757#188757: sigsuspend +2025/09/02 15:17:09 [debug] 188758#188758: add cleanup: 000055CAAF754200 +2025/09/02 15:17:09 [debug] 188758#188758: malloc: 000055CAAF6F2BD0:8 +2025/09/02 15:17:09 [debug] 188758#188758: notify eventfd: 9 +2025/09/02 15:17:09 [debug] 188758#188758: testing the EPOLLRDHUP flag: success +2025/09/02 15:17:09 [debug] 188758#188758: malloc: 000055CAAF707000:6144 +2025/09/02 15:17:09 [debug] 188758#188758: malloc: 000071E17D063010:237568 +2025/09/02 15:17:09 [debug] 188758#188758: malloc: 000055CAAF758170:98304 +2025/09/02 15:17:09 [debug] 188758#188758: malloc: 000055CAAF770180:98304 +2025/09/02 15:17:09 [debug] 188758#188758: epoll add event: fd:5 op:1 ev:00002001 +2025/09/02 15:17:09 [debug] 188758#188758: epoll add event: fd:7 op:1 ev:00002001 +2025/09/02 15:17:09 [debug] 188758#188758: setproctitle: "nginx: worker process" +2025/09/02 15:17:09 [debug] 188758#188758: worker cycle +2025/09/02 15:17:09 [debug] 188758#188758: epoll timer: -1 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:5 ev:0001 d:000071E17D063010 +2025/09/02 15:17:32 [debug] 188758#188758: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 15:17:32 [debug] 188758#188758: posix_memalign: 000055CAAF6F1840:512 @16 +2025/09/02 15:17:32 [debug] 188758#188758: *1 accept: 127.0.0.1:49930 fd:6 +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer add: 6: 60000:94413286 +2025/09/02 15:17:32 [debug] 188758#188758: *1 reusable connection: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 23000 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: 60000 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:6 ev:0001 d:000071E17D0631E0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http wait request handler +2025/09/02 15:17:32 [debug] 188758#188758: *1 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: eof:0, avail:-1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: fd:6 147 of 1024 +2025/09/02 15:17:32 [debug] 188758#188758: *1 reusable connection: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 posix_memalign: 000055CAAF7124A0:4096 @16 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http process request line +2025/09/02 15:17:32 [debug] 188758#188758: *1 http request line: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http uri: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http args: "" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http exten: "" +2025/09/02 15:17:32 [debug] 188758#188758: *1 posix_memalign: 000055CAAF708810:4096 @16 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http process request header line +2025/09/02 15:17:32 [debug] 188758#188758: *1 http header: "Host: localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http header: "User-Agent: curl/8.15.0" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http header: "Accept: */*" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http header done +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer del: 6: 94413286 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 rewrite phase: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 test location: "/media" +2025/09/02 15:17:32 [debug] 188758#188758: *1 test location: "/debug/list" +2025/09/02 15:17:32 [debug] 188758#188758: *1 test location: "/health" +2025/09/02 15:17:32 [debug] 188758#188758: *1 test location: ~ "^/list/([a-f0-9]{64})$" +2025/09/02 15:17:32 [debug] 188758#188758: *1 using configuration "^/list/([a-f0-9]{64})$" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http cl:-1 max:104857600 +2025/09/02 15:17:32 [debug] 188758#188758: *1 rewrite phase: 3 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "GET" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script regex: "^(GET)$" +2025/09/02 15:17:32 [notice] 188758#188758: *1 "^(GET)$" matches "GET", client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", host: "localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script if +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script if: false +2025/09/02 15:17:32 [debug] 188758#188758: *1 post rewrite phase: 4 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 5 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 6 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 7 +2025/09/02 15:17:32 [debug] 188758#188758: *1 access phase: 8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 access phase: 9 +2025/09/02 15:17:32 [debug] 188758#188758: *1 access phase: 10 +2025/09/02 15:17:32 [debug] 188758#188758: *1 post access phase: 11 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 12 +2025/09/02 15:17:32 [debug] 188758#188758: *1 generic phase: 13 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http init upstream, client timer: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 epoll add event: fd:6 op:3 ev:80002005 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "QUERY_STRING" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "QUERY_STRING: " +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REQUEST_METHOD" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "GET" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REQUEST_METHOD: GET" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "CONTENT_TYPE" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "CONTENT_TYPE: " +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "CONTENT_LENGTH" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "CONTENT_LENGTH: " +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SCRIPT_NAME" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SCRIPT_NAME: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REQUEST_URI" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REQUEST_URI: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "DOCUMENT_URI" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "DOCUMENT_URI: /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "DOCUMENT_ROOT" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "./blobs" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SERVER_PROTOCOL" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "HTTP/1.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REQUEST_SCHEME" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "http" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REQUEST_SCHEME: http" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "GATEWAY_INTERFACE" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "CGI/1.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SERVER_SOFTWARE" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "nginx/" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "1.18.0" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REMOTE_ADDR" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "127.0.0.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REMOTE_PORT" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "49930" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REMOTE_PORT: 49930" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SERVER_ADDR" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "127.0.0.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SERVER_PORT" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SERVER_PORT: 9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SERVER_NAME" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "localhost" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SERVER_NAME: localhost" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "REDIRECT_STATUS" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "200" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "REDIRECT_STATUS: 200" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "SCRIPT_FILENAME" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script var: "./blobs" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http script copy: "/ginxsom.fcgi" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "HTTP_HOST: localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/09/02 15:17:32 [debug] 188758#188758: *1 fastcgi param: "HTTP_ACCEPT: */*" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http cleanup add: 000055CAAF713488 +2025/09/02 15:17:32 [debug] 188758#188758: *1 get rr peer, try: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 stream socket 10 +2025/09/02 15:17:32 [debug] 188758#188758: *1 epoll add connection: fd:10 ev:80002005 +2025/09/02 15:17:32 [debug] 188758#188758: *1 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #2 +2025/09/02 15:17:32 [debug] 188758#188758: *1 connected +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream connect: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 posix_memalign: 000055CAAF6DAF20:128 @16 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream send request +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream send request body +2025/09/02 15:17:32 [debug] 188758#188758: *1 chain writer buf fl:0 s:704 +2025/09/02 15:17:32 [debug] 188758#188758: *1 chain writer in: 000055CAAF709588 +2025/09/02 15:17:32 [debug] 188758#188758: *1 writev: 704 of 704 +2025/09/02 15:17:32 [debug] 188758#188758: *1 chain writer out: 0000000000000000 +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer add: 10: 60000:94413286 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http finalize request: -4, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" a:1, c:2 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http request count:2 blk:0 +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: 60000 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:6 ev:0004 d:000071E17D0631E0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http run request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream check client, write event:1, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:10 ev:0004 d:000071E17D0632C8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream dummy handler +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 1 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: 59999 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream process header +2025/09/02 15:17:32 [debug] 188758#188758: *1 malloc: 000055CAAF6FB160:4096 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: eof:0, avail:-1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: fd:10 48 of 4096 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 21 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 33 +2025/09/02 15:17:32 [error] 188758#188758: *1 FastCGI sent in stderr: "DEBUG: FastCGI received request" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: eof:0, avail:0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream dummy handler +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: 59999 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:10 ev:2005 d:000071E17D0632C8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream request: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream process header +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: eof:1, avail:-1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: fd:10 1272 of 4048 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: F8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 504 +2025/09/02 15:17:32 [error] 188758#188758: *1 FastCGI sent in stderr: "DEBUG: METHOD=GET, URI=/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +DEBUG: handle_list_request called with pubkey=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +LOG: [2025-09-02 15:17:32] GET /list - Auth: pending - Status: 0 +DEBUG: Query string: +DEBUG: SQL query: SELECT sha256, size, type, uploaded_at, filename FROM blobs WHERE uploader_pubkey = ? ORDER BY uploaded_at DESC +DEBUG: List request completed successfully +LOG: [2025-09-02 15:17:32] GET /l" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 20 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 32 +2025/09/02 15:17:32 [error] 188758#188758: *1 FastCGI sent in stderr: "ist - Auth: none - Status: 200" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 06 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 02 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: A1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 07 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 673 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi parser: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi header: "Status: 200 OK" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi parser: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi header: "Content-Type: application/json" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi parser: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi header done +2025/09/02 15:17:32 [debug] 188758#188758: *1 posix_memalign: 000055CAAF6FC170:4096 @16 +2025/09/02 15:17:32 [debug] 188758#188758: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 19:17:32 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block + +2025/09/02 15:17:32 [debug] 188758#188758: *1 write new buf t:1 f:0 000055CAAF6FC1E0, pos 000055CAAF6FC1E0, size: 260 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http write filter: l:0 f:0 s:260 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http cacheable: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream process upstream +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe read upstream: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe preread: 654 +2025/09/02 15:17:32 [debug] 188758#188758: *1 readv: eof:1, avail:0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 readv: 1, last:2776 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe recv chain: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe buf free s:0 t:1 f:0 000055CAAF6FB160, pos 000055CAAF6FB3FA, size: 654 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe length: -1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 input buf #0 000055CAAF6FB3FA +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 06 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi closed stdout +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 03 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 01 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 08 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record byte: 00 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi record length: 8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http fastcgi sent end request +2025/09/02 15:17:32 [debug] 188758#188758: *1 input buf 000055CAAF6FB3FA 623 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe write downstream: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe write downstream flush in +2025/09/02 15:17:32 [debug] 188758#188758: *1 http output filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http copy filter: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http postpone filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" 000055CAAF7097E8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http chunk: 623 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write old buf t:1 f:0 000055CAAF6FC1E0, pos 000055CAAF6FC1E0, size: 260 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write new buf t:1 f:0 000055CAAF6FC538, pos 000055CAAF6FC538, size: 5 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write new buf t:1 f:0 000055CAAF6FB160, pos 000055CAAF6FB3FA, size: 623 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write new buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E8, size: 2 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http write filter: l:0 f:0 s:890 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http copy filter: 0 "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 pipe write downstream done +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer: 10, old: 94413286, new: 94413288 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream exit: 0000000000000000 +2025/09/02 15:17:32 [debug] 188758#188758: *1 finalize http upstream request: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 finalize http fastcgi request +2025/09/02 15:17:32 [debug] 188758#188758: *1 free rr peer 1 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 close http upstream connection: 10 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6DAF20, unused: 48 +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer del: 10: 94413286 +2025/09/02 15:17:32 [debug] 188758#188758: *1 reusable connection: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http upstream temp fd: -1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http output filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http copy filter: "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http postpone filter "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" 00007FFE362F2750 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http chunk: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write old buf t:1 f:0 000055CAAF6FC1E0, pos 000055CAAF6FC1E0, size: 260 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write old buf t:1 f:0 000055CAAF6FC538, pos 000055CAAF6FC538, size: 5 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write old buf t:1 f:0 000055CAAF6FB160, pos 000055CAAF6FB3FA, size: 623 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write old buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E8, size: 2 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 write new buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E5, size: 5 file: 0, size: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http write filter: l:1 f:0 s:895 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http write filter limit 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 writev: 895 of 895 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http write filter 0000000000000000 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http copy filter: 0 "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" +2025/09/02 15:17:32 [debug] 188758#188758: *1 http finalize request: 0, "/list/79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798?" a:1, c:1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 set http keepalive handler +2025/09/02 15:17:32 [debug] 188758#188758: *1 http close request +2025/09/02 15:17:32 [debug] 188758#188758: *1 http log handler +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6FB160 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF7124A0, unused: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF708810, unused: 8 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6FC170, unused: 2579 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6F40A0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 hc free: 0000000000000000 +2025/09/02 15:17:32 [debug] 188758#188758: *1 hc busy: 0000000000000000 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 tcp_nodelay +2025/09/02 15:17:32 [debug] 188758#188758: *1 reusable connection: 1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer add: 6: 65000:94418288 +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 1 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: 65000 +2025/09/02 15:17:32 [debug] 188758#188758: epoll: fd:6 ev:2005 d:000071E17D0631E0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 http keepalive handler +2025/09/02 15:17:32 [debug] 188758#188758: *1 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: eof:1, avail:-1 +2025/09/02 15:17:32 [debug] 188758#188758: *1 recv: fd:6 0 of 1024 +2025/09/02 15:17:32 [info] 188758#188758: *1 client 127.0.0.1 closed keepalive connection +2025/09/02 15:17:32 [debug] 188758#188758: *1 close http connection: 6 +2025/09/02 15:17:32 [debug] 188758#188758: *1 event timer del: 6: 94418288 +2025/09/02 15:17:32 [debug] 188758#188758: *1 reusable connection: 0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6F40A0 +2025/09/02 15:17:32 [debug] 188758#188758: *1 free: 000055CAAF6F1840, unused: 120 +2025/09/02 15:17:32 [debug] 188758#188758: timer delta: 2 +2025/09/02 15:17:32 [debug] 188758#188758: worker cycle +2025/09/02 15:17:32 [debug] 188758#188758: epoll timer: -1 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:5 ev:0001 d:000071E17D063010 +2025/09/02 15:17:47 [debug] 188758#188758: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 15:17:47 [debug] 188758#188758: posix_memalign: 000055CAAF6F1840:512 @16 +2025/09/02 15:17:47 [debug] 188758#188758: *3 accept: 127.0.0.1:54846 fd:6 +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer add: 6: 60000:94427845 +2025/09/02 15:17:47 [debug] 188758#188758: *3 reusable connection: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 14555 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 60000 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:6 ev:0001 d:000071E17D0631E1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http wait request handler +2025/09/02 15:17:47 [debug] 188758#188758: *3 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:6 1024 of 1024 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: avail:112 +2025/09/02 15:17:47 [debug] 188758#188758: *3 reusable connection: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 posix_memalign: 000055CAAF7124A0:4096 @16 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http process request line +2025/09/02 15:17:47 [debug] 188758#188758: *3 http request line: "PUT /upload HTTP/1.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http uri: "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http args: "" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http exten: "" +2025/09/02 15:17:47 [debug] 188758#188758: *3 posix_memalign: 000055CAAF708810:4096 @16 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http process request header line +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Host: localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "User-Agent: curl/8.15.0" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Accept: */*" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Authorization: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlNDg1NjI1NTEyNzk5OTE3YTY3ODVhZWM1NmU5NGQ2NjQ0MDBkZjNkMDE0NTZmYjE0MzlmMDRhNTkzYWVjNTJkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4NDA2NjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIxMTVjNDQwYmY1YjY5MDE1ZjhiODQ0ZDMyNWFlMzM0NThhNTU1YjQ2M2Q1ZDUzZTRkZmUyZDI0Y2Q3NDBjNWJjIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0NDI2NyJdXSwiY29udGVudCI6IiIsInNpZyI6IjFjYWFkMzJjZTk4ODZiZWM4YmFjN2I5NmEzMjE4ZWE0MmViYjgzNmMyZmRkMTA5OThjZjNhYTEwM2ZiMjBmZTI0NWNkNDMyODJmY2IzOWQxZWE4NDZhMjU4NTRlZWEwMzM3N2VkNjdlNDQ2MjUzZmQzNWZjNzhiZGFhMjljNTA2In0=" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Content-Type: text/plain" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Content-Disposition: attachment; filename="test_blob_1756840667.txt"" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header: "Content-Length: 296" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http header done +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer del: 6: 94427845 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 rewrite phase: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 test location: "/media" +2025/09/02 15:17:47 [debug] 188758#188758: *3 test location: "/report" +2025/09/02 15:17:47 [debug] 188758#188758: *3 test location: "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 using configuration "=/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http cl:296 max:104857600 +2025/09/02 15:17:47 [debug] 188758#188758: *3 rewrite phase: 3 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "PUT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script regex: "^(PUT|HEAD)$" +2025/09/02 15:17:47 [notice] 188758#188758: *3 "^(PUT|HEAD)$" matches "PUT", client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script if +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script if: false +2025/09/02 15:17:47 [debug] 188758#188758: *3 post rewrite phase: 4 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 5 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 6 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 7 +2025/09/02 15:17:47 [debug] 188758#188758: *3 access phase: 8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 access phase: 9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 access phase: 10 +2025/09/02 15:17:47 [debug] 188758#188758: *3 post access phase: 11 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 12 +2025/09/02 15:17:47 [debug] 188758#188758: *3 generic phase: 13 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http client request body preread 184 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http request body content length filter +2025/09/02 15:17:47 [debug] 188758#188758: *3 http body new buf t:1 f:0 000055CAAF6F43E8, pos 000055CAAF6F43E8, size: 184 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http read client request body +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:112 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:6 112 of 112 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http client request body recv 112 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http body new buf t:1 f:0 000055CAAF7092A0, pos 000055CAAF7092A0, size: 112 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http client request body rest 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http init upstream, client timer: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 epoll add event: fd:6 op:3 ev:80002005 +2025/09/02 15:17:47 [debug] 188758#188758: *3 posix_memalign: 000055CAAF6FB160:4096 @16 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "QUERY_STRING" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "QUERY_STRING: " +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REQUEST_METHOD" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "PUT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REQUEST_METHOD: PUT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "CONTENT_TYPE" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "text/plain" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "CONTENT_TYPE: text/plain" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "CONTENT_LENGTH" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "296" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "CONTENT_LENGTH: 296" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SCRIPT_NAME" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SCRIPT_NAME: /upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REQUEST_URI" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REQUEST_URI: /upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "DOCUMENT_URI" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "DOCUMENT_URI: /upload" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "DOCUMENT_ROOT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "./blobs" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "DOCUMENT_ROOT: ./blobs" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SERVER_PROTOCOL" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "HTTP/1.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SERVER_PROTOCOL: HTTP/1.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REQUEST_SCHEME" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "http" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REQUEST_SCHEME: http" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "GATEWAY_INTERFACE" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "CGI/1.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "GATEWAY_INTERFACE: CGI/1.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SERVER_SOFTWARE" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "nginx/" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "1.18.0" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SERVER_SOFTWARE: nginx/1.18.0" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REMOTE_ADDR" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "127.0.0.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REMOTE_ADDR: 127.0.0.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REMOTE_PORT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "54846" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REMOTE_PORT: 54846" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SERVER_ADDR" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "127.0.0.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SERVER_ADDR: 127.0.0.1" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SERVER_PORT" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SERVER_PORT: 9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SERVER_NAME" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "localhost" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SERVER_NAME: localhost" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "REDIRECT_STATUS" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "200" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "REDIRECT_STATUS: 200" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "SCRIPT_FILENAME" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script var: "./blobs" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http script copy: "/ginxsom.fcgi" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "SCRIPT_FILENAME: ./blobs/ginxsom.fcgi" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_HOST: localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_USER_AGENT: curl/8.15.0" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_ACCEPT: */*" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_AUTHORIZATION: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlNDg1NjI1NTEyNzk5OTE3YTY3ODVhZWM1NmU5NGQ2NjQ0MDBkZjNkMDE0NTZmYjE0MzlmMDRhNTkzYWVjNTJkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImNyZWF0ZWRfYXQiOjE3NTY4NDA2NjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIxMTVjNDQwYmY1YjY5MDE1ZjhiODQ0ZDMyNWFlMzM0NThhNTU1YjQ2M2Q1ZDUzZTRkZmUyZDI0Y2Q3NDBjNWJjIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0NDI2NyJdXSwiY29udGVudCI6IiIsInNpZyI6IjFjYWFkMzJjZTk4ODZiZWM4YmFjN2I5NmEzMjE4ZWE0MmViYjgzNmMyZmRkMTA5OThjZjNhYTEwM2ZiMjBmZTI0NWNkNDMyODJmY2IzOWQxZWE4NDZhMjU4NTRlZWEwMzM3N2VkNjdlNDQ2MjUzZmQzNWZjNzhiZGFhMjljNTA2In0=" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_CONTENT_TYPE: text/plain" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_CONTENT_DISPOSITION: attachment; filename="test_blob_1756840667.txt"" +2025/09/02 15:17:47 [debug] 188758#188758: *3 fastcgi param: "HTTP_CONTENT_LENGTH: 296" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http cleanup add: 000055CAAF7095F0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 get rr peer, try: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 stream socket 10 +2025/09/02 15:17:47 [debug] 188758#188758: *3 epoll add connection: fd:10 ev:80002005 +2025/09/02 15:17:47 [debug] 188758#188758: *3 connect to unix:/tmp/ginxsom-fcgi.sock, fd:10 #4 +2025/09/02 15:17:47 [debug] 188758#188758: *3 connected +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream connect: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 posix_memalign: 000055CAAF6DAF20:128 @16 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream send request +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream send request body +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer buf fl:0 s:1304 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer buf fl:0 s:184 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer buf fl:0 s:8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer buf fl:0 s:112 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer buf fl:0 s:8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer in: 000055CAAF709680 +2025/09/02 15:17:47 [debug] 188758#188758: *3 writev: 1616 of 1616 +2025/09/02 15:17:47 [debug] 188758#188758: *3 chain writer out: 0000000000000000 +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer add: 10: 60000:94427845 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http finalize request: -4, "/upload?" a:1, c:2 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http request count:2 blk:0 +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 60000 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:6 ev:0004 d:000071E17D0631E1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http run request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream check client, write event:1, "/upload" +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 malloc: 000055CAAF6FC170:4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 560 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 21 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 33 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "DEBUG: FastCGI received request" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "DEBUG: METHOD=PUT, URI=/upload +ENTRY: Entering handle_upload_request() function +DEBUG: handle_upload_request called +LOG: [2025-09-02 15:17:47] PUT /upload - Auth: pending - Status: 0 +DEBUG: content_type=text/plain +DEBUG: content_length=296 +DEBUG: Raw Authorization header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlNDg1NjI1NTEyNzk5OTE3YTY3ODVhZWM1NmU5NGQ2NjQ0MDBkZjNkMDE0NTZmYjE0MzlmMDRhNTkzYWVjNTJkIiwicHVia2V5IjoiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsImN" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 2 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59998 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 1616 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "yZWF0ZWRfYXQiOjE3NTY4NDA2NjcsInRhZ3MiOltbInQiLCJ1cGxvYWQiXSxbIngiLCIxMTVjNDQwYmY1YjY5MDE1ZjhiODQ0ZDMyNWFlMzM0NThhNTU1YjQ2M2Q1ZDUzZTRkZmUyZDI0Y2Q3NDBjNWJjIl0sWyJleHBpcmF0aW9uIiwiMTc1Njg0NDI2NyJdXSwiY29udGVudCI6IiIsInNpZyI6IjFjYWFkMzJjZTk4ODZiZWM4YmFjN2I5NmEzMjE4ZWE0MmViYjgzNmMyZmRkMTA5OThjZjNhYTEwM2ZiMjBmZTI0NWNkNDMyODJmY2IzOWQxZWE4NDZhMjU4NTRlZWEwMzM3N2VkNjdlNDQ2MjUzZmQzNWZjNzhiZGFhMjljNTA2In0= +LOG: [2025-09-02 15:17:47] PUT /upload - Auth: auth_provided - Status: 0 +DEBUG-LAAN: Calculated SHA-256:" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 43 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 05 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 67 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "AUTH: About to perform authentication - auth_header present: YES +AUTH: Calling authenticate_request with hash: 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc +═══════════════════════════════════════════════════════════════════ +🔍 STEP SERVER-1: Starting server-style authentication (mirroring test_auth_debug.c) +ℹ️ INFO: Server-style auth calle" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "d with method: upload, hash: 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc +🔍 STEP SERVER-2: Calling parse_authorization_header +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlNDg1NjI1NTEyNzk5... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=✅ SUCCESS: parse_authorization_header succeeded +🔍 STEP SERVER-3: Calling cJSON_Parse on JSON string +ℹ️ INFO: JSON to" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59998 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 2048 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " parse: {"kind":24242,"id":"e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d","pubkey":"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","created_at":1756840667,"tags":[["t","upload"],["x","115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc"],["expiration","1756844267"]],"content":"","sig":"1caad32ce9886bec8bac7b96a3218ea42ebb836c2fdd10998cf3aa103fb20fe245cd43282fcb39d1ea846a25854eea03377ed67e446253fd35fc78bdaa29c506"} +✅ SUCCESS: cJSON_Parse succeeded" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: ", event parsed +ℹ️ INFO: Parsed JSON: { + "kind": 24242, + "id": "e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d", + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "created_at": 1756840667, + "tags": [["t", "upload"], ["x", "115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc"], ["expiration", "1756844267"]], + "content": "", + "sig": "1caad32ce9886bec8bac7b96a3218ea42ebb836c2fdd10998cf3aa103fb20fe245cd43282fcb39d1ea846a25854eea03377ed67e4" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "46253fd35fc78bdaa29c506" +} +🔍 STEP SERVER-4: Event fields before validation +ℹ️ INFO: id: e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d +ℹ️ INFO: pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: sig: 1caad32ce9886bec8bac7b96a3218ea42ebb836c2fdd10998cf3aa103fb20fe245cd43282fcb39d1ea846a25854eea03377ed67e446253fd35fc78bdaa29c506 +ℹ️ INFO: kind: 24242 +ℹ️ INFO: created_at: 1756840667 +🔍 STEP SERVER-5: Detailed pubkey" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(0x37) 9(0x39) b(0x62) e(0x65) 6(0x36) 6(0x36) 7(0x37) e(0x65) f(0x66) 9(0x39) +🔍 STEP SERVER-6: Pre-validation pubkey analysis +ℹ️ INFO: Pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 +ℹ️ INFO: Length: ℹ️ INFO: Character analysis (first 10): +7(55) 9(57) b(98) e(101) 6(54) 6(54) 7(5" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59998 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 3584 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "5) e(101) f(102) 9(57) +ℹ️ INFO: Character validation test: +ALL VALID (lowercase hex) +🔍 STEP SERVER-7: Starting detailed validation analysis +ℹ️ INFO: Testing structure validation... +ℹ️ INFO: nostr_validate_event_structure returned: 0 (Success) +✅ SUCCESS: Structure validation PASSED +ℹ️ INFO: Testing cryptographic verification... +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Crypto verification PASSED +ℹ️ INFO: Testing complete validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "... +ℹ️ INFO: nostr_validate_event returned: 0 (Success) +✅ SUCCESS: Complete validation PASSED +🔍 STEP SERVER-8: Running detailed structure validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP STRUCT-1: Starting detailed structure validation +✅ SUCCESS: Event is valid JSON object +🔍 STEP STRUCT-2: Checking required field" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "existence +✅ SUCCESS: Field 'id' exists +✅ SUCCESS: Field 'pubkey' exists +✅ SUCCESS: Field 'created_at' exists +✅ SUCCESS: Field 'kind' exists +✅ SUCCESS: Field 'tags' exists +✅ SUCCESS: Field 'content' exists +✅ SUCCESS: Field 'sig' exists +🔍 STEP STRUCT-3: Validating field types +✅ SUCCESS: Field 'id' is string +✅ SUCCESS: Field 'pubkey' is string +✅ SUCCESS: Field 'created_at' is number +✅ SUCCESS: Field 'kind' is number +✅ SUCCESS: Field 'tags' is array +✅ SUCCESS: Field 'content" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "' is string +✅ SUCCESS: Field 'sig' is string +🔍 STEP STRUCT-4: Validating hex string lengths +ℹ️ INFO: ID string: 'e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d' (length: ✅ SUCCESS: ID string length is correct (64 chars) +ℹ️ INFO: Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: ✅ SUCCESS: Pubkey string length is correct (64 chars) +ℹ️ INFO: Signature string: '1caad32ce9886bec8bac7b96a3218ea42ebb836c2fdd10998cf3aa103fb2" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "0fe245cd43282fcb39d1ea846a25854eea03377ed67e446253fd35fc78bdaa29c506' (length: ✅ SUCCESS: Signature string length is correct (128 chars) +🔍 STEP STRUCT-5: Validating hex characters +ℹ️ INFO: Checking ID hex characters... +✅ SUCCESS: ID hex characters are valid (lowercase) +ℹ️ INFO: Checking pubkey hex characters... +✅ SUCCESS: Pubkey hex characters are valid (lowercase) +ℹ️ INFO: Checking signature hex characters... +✅ SUCCESS: Signature hex characters are valid (lowercase) +🔍 S" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "TEP STRUCT-6: Validating timestamp +ℹ️ INFO: Created_at timestamp: 1756840667 +✅ SUCCESS: Timestamp is valid: 2025-09-02 19:17:47 UTC +🔍 STEP STRUCT-7: Validating kind +ℹ️ INFO: Event kind: 24242 +✅ SUCCESS: Kind is valid: 24242 +🔍 STEP STRUCT-8: Validating tags array structure +ℹ️ INFO: Tags array has 3 elements +ℹ️ INFO: Tag[0] has 2 elements +ℹ️ INFO: Tag[0][0]: 't' +ℹ️ INFO: Tag[0][1]: 'upload' +ℹ️ INFO: Tag[1] has 2 elements +ℹ️ INFO: Tag[1][0]: 'x' +ℹ️" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " INFO: Tag[1][1]: '115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc' +ℹ️ INFO: Tag[2] has 2 elements +ℹ️ INFO: Tag[2][0]: 'expiration' +ℹ️ INFO: Tag[2][1]: '1756844267' +✅ SUCCESS: Tags array structure is valid +🔍 STEP STRUCT-9: Validating content +ℹ️ INFO: Content: '' (length: ✅ SUCCESS: Content is valid string +✅ SUCCESS: Structure validation completed successfully +✅ SUCCESS: Detailed structure validation PASSED +🔍 STEP SERVER-9: Running detailed signature" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 1 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59997 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 4096 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " validation +═══════════════════════════════════════════════════════════════════ +🔍 STEP CRYPTO-1: Starting detailed signature validation +🔍 STEP CRYPTO-2: Creating serialization array +✅ SUCCESS: Serialization array created +🔍 STEP CRYPTO-3: Converting to JSON string +✅ SUCCESS: JSON serialization string created +ℹ️ INFO: Serialization string (length 🔍" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "STEP CRYPTO-4: Computing SHA256 hash +✅ SUCCESS: SHA256 hash computed +ℹ️ INFO: Event hash ( e4 85 62 55 12 79 99 17 a6 78 5a ec 56 e9 4d 66 |..bU.y...xZ.V.Mf| + 44 00 df 3d 01 45 6f b1 43 9f 04 a5 93 ae c5 2d |D..=.Eo.C......-| +🔍 STEP CRYPTO-5: Verifying event ID +ℹ️ INFO: Calculated ID: e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d +ℹ️ INFO: Provided ID: e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d +✅ SUCCESS: Event ID verification passe" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "d +🔍 STEP CRYPTO-6: Preparing signature verification +🔍 STEP CRYPTO-7: Converting hex strings to bytes +✅ SUCCESS: Pubkey hex converted to bytes +ℹ️ INFO: Pubkey bytes ( 79 be 66 7e f9 dc bb ac 55 a0 62 95 ce 87 0b 07 |y.f~....U.b.....| + 02 9b fc db 2d ce 28 d9 59 f2 81 5b 16 f8 17 98 |....-.(.Y..[....| +✅ SUCCESS: Signature hex converted to bytes +ℹ️ INFO: Signature bytes ( 1c aa d3 2c e9 88 6b ec 8b ac 7b 96 a3 21 8e a4 |...,..k...{..!..| + 2e bb 83 6c 2f dd 10 99 8c f3 aa 10 3" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "f b2 0f e2 |...l/.......?...| + 45 cd 43 28 2f cb 39 d1 ea 84 6a 25 85 4e ea 03 |E.C(/.9...j%.N..| + 37 7e d6 7e 44 62 53 fd 35 fc 78 bd aa 29 c5 06 |7~.~DbS.5.x..)..| +🔍 STEP CRYPTO-8: Verifying signature using nostr_verify_event_signature() +ℹ️ INFO: Calling nostr_verify_event_signature() for detailed crypto validation +ℹ️ INFO: nostr_verify_event_signature returned: 0 (Success) +✅ SUCCESS: Signature verification PASSED using nostr_core_lib! +✅ SUCCESS: Detailed signature validation" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " PASSED +═══════════════════════════════════════════════════════════════════ +🔍 STEP ANALYZE-1: Analyzing event field details +ℹ️ INFO: Field 'kind': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 24242 +ℹ️ INFO: Field 'id': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: 'e485625512799917a6785aec56e94d664400df3d01456fb1439f04a593aec52d' +ℹ️ INFO" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: ": Length: ℹ️ INFO: Field 'pubkey': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +ℹ️ INFO: Length: ℹ️ INFO: Field 'created_at': +ℹ️ INFO: Type: Number +ℹ️ INFO: Value: 1756840667 +ℹ️ INFO: Field 'tags': +ℹ️ INFO: Type: Array +ℹ️ INFO: Size: 3 +ℹ️ INFO: Field 'content': +ℹ️ INFO: Type: String +ℹ️ INFO: Value: '' +ℹ️ INFO: Length: ℹ️ INFO: Field 'sig': +ℹ" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " INFO: Type: String +ℹ️ INFO: Value: '1caad32ce9886bec8bac7b96a3218ea42ebb836c2fdd10998cf3aa103fb20fe245cd43282fcb39d1ea846a25854eea03377ed67e446253fd35fc78bdaa29c506' +ℹ️ INFO: Length: 🔍 STEP SERVER-10: Validating Blossom-specific requirements +DEBUG: Validating Blossom event +DEBUG: Found matching method tag: upload +DEBUG: Found matching hash tag: 115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc +DEBUG: Found expiration tag: 1756844267 +DEBUG: Blossom event valid" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "ation passed +✅ SUCCESS: Blossom event validation PASSED +✅ SUCCESS: Server-style authentication successful, returning NOSTR_SUCCESS +AUTH: authenticate_request returned: 0 +DEBUG: parse_authorization_header called with header: Nostr eyJraW5kIjoyNDI0MiwiaWQiOiJlNDg1NjI1NTEyNzk5... +DEBUG: Extracted base64 event (length=DEBUG: Base64 decode result - decoded_len=DEBUG: Successfully decoded JSON (length=DEBUG: Authentication passed, uploader_pubkey: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59997 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:0005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 1536 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "815b16f81798 +DEBUG: Saving file to: blobs/115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt +DEBUG: File permissions set to 644 for blobs/115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc.txt +DEBUG: Successfully saved DEBUG: Content-Disposition header: attachment; filename="test_blob_1756840667.txt" +DEBUG: Looking for filename= in Content-Disposition header +DEBUG: Found filename= at position 12 +DEBUG: Filename value starts with: "test_blob_175684066 +DEBUG: Pro" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "cessing quoted filename +DEBUG: Quoted filename length: DEBUG: Extracted quoted filename: 'test_blob_1756840667.txt' +DEBUG: Final filename after extraction: test_blob_1756840667.txt +DEBUG: insert_blob_metadata() called for sha256='115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc' +DEBUG: Opening database at path: db/ginxsom.db +DEBUG: Database opened successfully for writing +DEBUG: Preparing SQL: INSERT INTO blobs (sha256, size, type, uploaded_at, uploader_pubkey, filename) VALUES" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: " (?, ?, ?, ?, ?, ?) +DEBUG: SQL prepared successfully, binding parameters +DEBUG: Parameter values to bind: +DEBUG: 1. sha256 = '115c440bf5b69015f8b844d325ae33458a555b463d5d53e4dfe2d24cd740c5bc' +DEBUG: 2. size = 296 +DEBUG: 3. type = 'text/plain' +DEBUG: 4. uploaded_at = 1756840667 +DEBUG: 5. uploader_pubkey = '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: 6. filename = 'test_blob_1756840667.txt' +DEBUG: Binding parameter 1 (sha256) +DEBUG: Binding parameter" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream dummy handler +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 1 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 59996 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:10 ev:2005 d:000071E17D0632C9 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream request: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process header +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:1, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:10 928 of 4096 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: F8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 504 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "2 (size) +DEBUG: Binding parameter 3 (type) +DEBUG: Binding parameter 4 (uploaded_at) +DEBUG: Binding parameter 5 (uploader_pubkey) +DEBUG: Binding uploader_pubkey as text: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' +DEBUG: Binding parameter 6 (filename) +DEBUG: Binding filename as text: 'test_blob_1756840667.txt' +DEBUG: Parameters bound, executing INSERT +DEBUG: INSERT successful +DEBUG: Database closed, returning 1 +DEBUG: Blob metadata successfully stored in database +DEB" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 39 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 57 +2025/09/02 15:17:47 [error] 188758#188758: *3 FastCGI sent in stderr: "UG: Upload completed successfully with database storage" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "PUT /upload HTTP/1.1", upstream: "fastcgi://unix:/tmp/ginxsom-fcgi.sock:", host: "localhost:9001" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 07 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 06 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 2D +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 03 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 301 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi parser: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi header: "Status: 200 OK" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi parser: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi header: "Content-Type: application/json" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi parser: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi header done +2025/09/02 15:17:47 [debug] 188758#188758: *3 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 19:17:47 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block + +2025/09/02 15:17:47 [debug] 188758#188758: *3 write new buf t:1 f:0 000055CAAF6FB818, pos 000055CAAF6FB818, size: 260 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http write filter: l:0 f:0 s:260 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http cacheable: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream process upstream +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe read upstream: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe preread: 278 +2025/09/02 15:17:47 [debug] 188758#188758: *3 readv: eof:1, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 readv: 1, last:3168 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe recv chain: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe buf free s:0 t:1 f:0 000055CAAF6FC170, pos 000055CAAF6FC3FA, size: 278 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe length: -1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 input buf #0 000055CAAF6FC3FA +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 06 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi closed stdout +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 03 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 01 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 08 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record byte: 00 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi record length: 8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http fastcgi sent end request +2025/09/02 15:17:47 [debug] 188758#188758: *3 input buf 000055CAAF6FC3FA 251 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe write downstream: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe write downstream flush in +2025/09/02 15:17:47 [debug] 188758#188758: *3 http output filter "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http copy filter: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http postpone filter "/upload?" 000055CAAF709650 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http chunk: 251 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write old buf t:1 f:0 000055CAAF6FB818, pos 000055CAAF6FB818, size: 260 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write new buf t:1 f:0 000055CAAF7097E0, pos 000055CAAF7097E0, size: 4 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write new buf t:1 f:0 000055CAAF6FC170, pos 000055CAAF6FC3FA, size: 251 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write new buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E8, size: 2 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http write filter: l:0 f:0 s:517 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http copy filter: 0 "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 pipe write downstream done +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer: 10, old: 94427845, new: 94427851 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream exit: 0000000000000000 +2025/09/02 15:17:47 [debug] 188758#188758: *3 finalize http upstream request: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 finalize http fastcgi request +2025/09/02 15:17:47 [debug] 188758#188758: *3 free rr peer 1 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 close http upstream connection: 10 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6DAF20, unused: 48 +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer del: 10: 94427845 +2025/09/02 15:17:47 [debug] 188758#188758: *3 reusable connection: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http upstream temp fd: -1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http output filter "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http copy filter: "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http postpone filter "/upload?" 00007FFE362F2750 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http chunk: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write old buf t:1 f:0 000055CAAF6FB818, pos 000055CAAF6FB818, size: 260 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write old buf t:1 f:0 000055CAAF7097E0, pos 000055CAAF7097E0, size: 4 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write old buf t:1 f:0 000055CAAF6FC170, pos 000055CAAF6FC3FA, size: 251 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write old buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E8, size: 2 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 write new buf t:0 f:0 0000000000000000, pos 000055CA9F6DC2E5, size: 5 file: 0, size: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http write filter: l:1 f:0 s:522 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http write filter limit 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 writev: 522 of 522 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http write filter 0000000000000000 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http copy filter: 0 "/upload?" +2025/09/02 15:17:47 [debug] 188758#188758: *3 http finalize request: 0, "/upload?" a:1, c:1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 set http keepalive handler +2025/09/02 15:17:47 [debug] 188758#188758: *3 http close request +2025/09/02 15:17:47 [debug] 188758#188758: *3 http log handler +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6FC170 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF7124A0, unused: 3 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF708810, unused: 8 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6FB160, unused: 1170 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6F40A0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 hc free: 0000000000000000 +2025/09/02 15:17:47 [debug] 188758#188758: *3 hc busy: 0000000000000000 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 tcp_nodelay +2025/09/02 15:17:47 [debug] 188758#188758: *3 reusable connection: 1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer add: 6: 65000:94432851 +2025/09/02 15:17:47 [debug] 188758#188758: *3 post event 000055CAAF758230 +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 2 +2025/09/02 15:17:47 [debug] 188758#188758: posted event 000055CAAF758230 +2025/09/02 15:17:47 [debug] 188758#188758: *3 delete posted event 000055CAAF758230 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http keepalive handler +2025/09/02 15:17:47 [debug] 188758#188758: *3 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:0, avail:0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6F40A0 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: 65000 +2025/09/02 15:17:47 [debug] 188758#188758: epoll: fd:6 ev:2005 d:000071E17D0631E1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 http keepalive handler +2025/09/02 15:17:47 [debug] 188758#188758: *3 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: eof:1, avail:-1 +2025/09/02 15:17:47 [debug] 188758#188758: *3 recv: fd:6 0 of 1024 +2025/09/02 15:17:47 [info] 188758#188758: *3 client 127.0.0.1 closed keepalive connection +2025/09/02 15:17:47 [debug] 188758#188758: *3 close http connection: 6 +2025/09/02 15:17:47 [debug] 188758#188758: *3 event timer del: 6: 94432851 +2025/09/02 15:17:47 [debug] 188758#188758: *3 reusable connection: 0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6F40A0 +2025/09/02 15:17:47 [debug] 188758#188758: *3 free: 000055CAAF6F1840, unused: 120 +2025/09/02 15:17:47 [debug] 188758#188758: timer delta: 2 +2025/09/02 15:17:47 [debug] 188758#188758: worker cycle +2025/09/02 15:17:47 [debug] 188758#188758: epoll timer: -1 +2025/09/02 15:18:08 [debug] 188758#188758: epoll: fd:5 ev:0001 d:000071E17D063010 +2025/09/02 15:18:08 [debug] 188758#188758: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 15:18:08 [debug] 188758#188758: posix_memalign: 000055CAAF6F1840:512 @16 +2025/09/02 15:18:08 [debug] 188758#188758: *5 accept: 127.0.0.1:51764 fd:6 +2025/09/02 15:18:08 [debug] 188758#188758: *5 event timer add: 6: 60000:94449230 +2025/09/02 15:18:08 [debug] 188758#188758: *5 reusable connection: 1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 15:18:08 [debug] 188758#188758: timer delta: 21377 +2025/09/02 15:18:08 [debug] 188758#188758: worker cycle +2025/09/02 15:18:08 [debug] 188758#188758: epoll timer: 60000 +2025/09/02 15:18:08 [debug] 188758#188758: epoll: fd:6 ev:0001 d:000071E17D0631E0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http wait request handler +2025/09/02 15:18:08 [debug] 188758#188758: *5 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:18:08 [debug] 188758#188758: *5 recv: eof:0, avail:-1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 recv: fd:6 146 of 1024 +2025/09/02 15:18:08 [debug] 188758#188758: *5 reusable connection: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 posix_memalign: 000055CAAF7124A0:4096 @16 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http process request line +2025/09/02 15:18:08 [debug] 188758#188758: *5 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http args: "" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http exten: "txt" +2025/09/02 15:18:08 [debug] 188758#188758: *5 posix_memalign: 000055CAAF708810:4096 @16 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http process request header line +2025/09/02 15:18:08 [debug] 188758#188758: *5 http header: "Host: localhost:9001" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http header: "User-Agent: curl/8.15.0" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http header: "Accept: */*" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http header done +2025/09/02 15:18:08 [debug] 188758#188758: *5 event timer del: 6: 94449230 +2025/09/02 15:18:08 [debug] 188758#188758: *5 generic phase: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 rewrite phase: 1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/media" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/debug/list" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/health" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: ~ "^/list/([a-f0-9]{64})$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http cl:-1 max:104857600 +2025/09/02 15:18:08 [debug] 188758#188758: *5 rewrite phase: 3 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script value: "DELETE" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script not equal +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script if +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script regex: "^/(.*)$" +2025/09/02 15:18:08 [notice] 188758#188758: *5 "^/(.*)$" matches "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt", client: 127.0.0.1, server: localhost, request: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1", host: "localhost:9001" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/blob/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script regex end +2025/09/02 15:18:08 [notice] 188758#188758: *5 rewritten data: "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt", args: "", client: 127.0.0.1, server: localhost, request: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1", host: "localhost:9001" +2025/09/02 15:18:08 [debug] 188758#188758: *5 post rewrite phase: 4 +2025/09/02 15:18:08 [debug] 188758#188758: *5 uri changes: 11 +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/media" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/debug/list" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: ~ "^/list/([a-f0-9]{64})$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 test location: ~ "^/blob/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 using configuration "^/blob/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http cl:-1 max:104857600 +2025/09/02 15:18:08 [debug] 188758#188758: *5 rewrite phase: 3 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script regex: "^(GET|HEAD)$" +2025/09/02 15:18:08 [notice] 188758#188758: *5 "^(GET|HEAD)$" matches "GET", client: 127.0.0.1, server: localhost, request: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1", host: "localhost:9001" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script if +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script if: false +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script var: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script value: "HEAD" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script equal +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script equal: no +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script if +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script if: false +2025/09/02 15:18:08 [debug] 188758#188758: *5 post rewrite phase: 4 +2025/09/02 15:18:08 [debug] 188758#188758: *5 generic phase: 5 +2025/09/02 15:18:08 [debug] 188758#188758: *5 generic phase: 6 +2025/09/02 15:18:08 [debug] 188758#188758: *5 generic phase: 7 +2025/09/02 15:18:08 [debug] 188758#188758: *5 access phase: 8 +2025/09/02 15:18:08 [debug] 188758#188758: *5 access phase: 9 +2025/09/02 15:18:08 [debug] 188758#188758: *5 access phase: 10 +2025/09/02 15:18:08 [debug] 188758#188758: *5 post access phase: 11 +2025/09/02 15:18:08 [debug] 188758#188758: *5 generic phase: 12 +2025/09/02 15:18:08 [debug] 188758#188758: *5 try files handler +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".jpg" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.jpg" "./blobs/GET.jpg" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".jpeg" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.jpeg" "./blobs/GET.jpeg" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".png" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.png" "./blobs/GET.png" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".webp" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.webp" "./blobs/GET.webp" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".gif" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.gif" "./blobs/GET.gif" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".pdf" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.pdf" "./blobs/GET.pdf" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".mp4" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.mp4" "./blobs/GET.mp4" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".mp3" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.mp3" "./blobs/GET.mp3" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".txt" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.txt" "./blobs/GET.txt" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: "/" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script capture: "GET" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http script copy: ".md" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "/GET.md" "./blobs/GET.md" +2025/09/02 15:18:08 [debug] 188758#188758: *5 trying to use file: "=404" "./blobs=404" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http finalize request: 404, "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http special response: 404, "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http set discard body +2025/09/02 15:18:08 [debug] 188758#188758: *5 HTTP/1.1 404 Not Found +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 19:18:08 GMT +Content-Type: text/html +Content-Length: 162 +Connection: keep-alive + +2025/09/02 15:18:08 [debug] 188758#188758: *5 write new buf t:1 f:0 000055CAAF708D48, pos 000055CAAF708D48, size: 164 file: 0, size: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http write filter: l:0 f:0 s:164 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http output filter "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http copy filter: "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http postpone filter "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 000055CAAF708F38 +2025/09/02 15:18:08 [debug] 188758#188758: *5 write old buf t:1 f:0 000055CAAF708D48, pos 000055CAAF708D48, size: 164 file: 0, size: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 write new buf t:0 f:0 0000000000000000, pos 000055CA9F71B580, size: 100 file: 0, size: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 write new buf t:0 f:0 0000000000000000, pos 000055CA9F71BC80, size: 62 file: 0, size: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http write filter: l:1 f:0 s:326 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http write filter limit 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 writev: 326 of 326 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http write filter 0000000000000000 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http copy filter: 0 "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:18:08 [debug] 188758#188758: *5 http finalize request: 0, "/blob/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 set http keepalive handler +2025/09/02 15:18:08 [debug] 188758#188758: *5 http close request +2025/09/02 15:18:08 [debug] 188758#188758: *5 http log handler +2025/09/02 15:18:08 [debug] 188758#188758: *5 free: 000055CAAF7124A0, unused: 8 +2025/09/02 15:18:08 [debug] 188758#188758: *5 free: 000055CAAF708810, unused: 2012 +2025/09/02 15:18:08 [debug] 188758#188758: *5 free: 000055CAAF6F40A0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 hc free: 0000000000000000 +2025/09/02 15:18:08 [debug] 188758#188758: *5 hc busy: 0000000000000000 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 tcp_nodelay +2025/09/02 15:18:08 [debug] 188758#188758: *5 reusable connection: 1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 event timer add: 6: 65000:94454230 +2025/09/02 15:18:08 [debug] 188758#188758: timer delta: 0 +2025/09/02 15:18:08 [debug] 188758#188758: worker cycle +2025/09/02 15:18:08 [debug] 188758#188758: epoll timer: 65000 +2025/09/02 15:18:08 [debug] 188758#188758: epoll: fd:6 ev:2001 d:000071E17D0631E0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 http keepalive handler +2025/09/02 15:18:08 [debug] 188758#188758: *5 malloc: 000055CAAF6F40A0:1024 +2025/09/02 15:18:08 [debug] 188758#188758: *5 recv: eof:1, avail:-1 +2025/09/02 15:18:08 [debug] 188758#188758: *5 recv: fd:6 0 of 1024 +2025/09/02 15:18:08 [info] 188758#188758: *5 client 127.0.0.1 closed keepalive connection +2025/09/02 15:18:08 [debug] 188758#188758: *5 close http connection: 6 +2025/09/02 15:18:08 [debug] 188758#188758: *5 event timer del: 6: 94454230 +2025/09/02 15:18:08 [debug] 188758#188758: *5 reusable connection: 0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 free: 000055CAAF6F40A0 +2025/09/02 15:18:08 [debug] 188758#188758: *5 free: 000055CAAF6F1840, unused: 136 +2025/09/02 15:18:08 [debug] 188758#188758: timer delta: 1 +2025/09/02 15:18:08 [debug] 188758#188758: worker cycle +2025/09/02 15:18:08 [debug] 188758#188758: epoll timer: -1 +2025/09/02 15:20:06 [notice] 188757#188757: signal 15 (SIGTERM) received from 189095, exiting +2025/09/02 15:20:06 [debug] 188757#188757: wake up, sigio 0 +2025/09/02 15:20:06 [debug] 188757#188757: child: 0 188758 e:0 t:0 d:0 r:1 j:0 +2025/09/02 15:20:06 [debug] 188757#188757: termination cycle: 50 +2025/09/02 15:20:06 [debug] 188757#188757: sigsuspend +2025/09/02 15:20:06 [debug] 188758#188758: epoll: fd:7 ev:0001 d:000071E17D0630F8 +2025/09/02 15:20:06 [debug] 188758#188758: channel handler +2025/09/02 15:20:06 [debug] 188758#188758: channel: 32 +2025/09/02 15:20:06 [debug] 188758#188758: channel command: 4 +2025/09/02 15:20:06 [debug] 188758#188758: channel: -2 +2025/09/02 15:20:06 [debug] 188758#188758: timer delta: 117993 +2025/09/02 15:20:06 [notice] 188758#188758: exiting +2025/09/02 15:20:06 [debug] 188758#188758: flush files +2025/09/02 15:20:06 [debug] 188758#188758: run cleanup: 000055CAAF754200 +2025/09/02 15:20:06 [debug] 188758#188758: run cleanup: 000055CAAF740CF8 +2025/09/02 15:20:06 [debug] 188758#188758: cleanup resolver +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF7568A0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF741680 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF7145C0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF7134B0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF70D480 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF70C3C0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF70B300 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF70A240 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF700180 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF6F7150, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF702FF0, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF70E490, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF7155D0, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF7195E0, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF71D5F0, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF721600, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF725610, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF729620, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF72D630, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF731640, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF735650, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF739660, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF73D670, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF742850, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF746860, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF74A870, unused: 0 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF74E880, unused: 1 +2025/09/02 15:20:06 [debug] 188758#188758: free: 000055CAAF752890, unused: 9848 +2025/09/02 15:20:06 [notice] 188758#188758: exit +2025/09/02 15:20:06 [notice] 188757#188757: signal 17 (SIGCHLD) received from 188758 +2025/09/02 15:20:06 [notice] 188757#188757: worker process 188758 exited with code 0 +2025/09/02 15:20:06 [debug] 188757#188757: shmtx forced unlock +2025/09/02 15:20:06 [debug] 188757#188757: wake up, sigio 3 +2025/09/02 15:20:06 [debug] 188757#188757: reap children +2025/09/02 15:20:06 [debug] 188757#188757: child: 0 188758 e:1 t:1 d:0 r:1 j:0 +2025/09/02 15:20:06 [notice] 188757#188757: exit +2025/09/02 15:20:06 [debug] 188757#188757: close listening 0.0.0.0:9001 #5 +2025/09/02 15:20:06 [debug] 188757#188757: run cleanup: 000055CAAF740CF8 +2025/09/02 15:20:06 [debug] 188757#188757: cleanup resolver +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF7568A0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF741680 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF7145C0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF7134B0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF70D480 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF70C3C0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF70B300 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF70A240 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF700180 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF6F7150, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF702FF0, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF70E490, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF7155D0, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF7195E0, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF71D5F0, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF721600, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF725610, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF729620, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF72D630, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF731640, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF735650, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF739660, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF73D670, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF742850, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF746860, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF74A870, unused: 0 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF74E880, unused: 1 +2025/09/02 15:20:06 [debug] 188757#188757: free: 000055CAAF752890, unused: 9879 +2025/09/02 15:20:10 [debug] 189130#189130: bind() 0.0.0.0:9001 #5 +2025/09/02 15:20:10 [debug] 189130#189130: counter: 000073685E622080, 1 +2025/09/02 15:20:10 [debug] 189131#189131: bind() 0.0.0.0:9001 #5 +2025/09/02 15:20:10 [notice] 189131#189131: using the "epoll" event method +2025/09/02 15:20:10 [debug] 189131#189131: counter: 000075ADDD54D080, 1 +2025/09/02 15:20:10 [notice] 189131#189131: nginx/1.18.0 (Ubuntu) +2025/09/02 15:20:10 [notice] 189131#189131: OS: Linux 6.12.10-76061203-generic +2025/09/02 15:20:10 [notice] 189131#189131: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +2025/09/02 15:20:10 [debug] 189132#189131: write: 6, 00007FFDB872F480, 7, 0 +2025/09/02 15:20:10 [debug] 189132#189132: setproctitle: "nginx: master process nginx -p . -c config/local-nginx.conf" +2025/09/02 15:20:10 [notice] 189132#189132: start worker processes +2025/09/02 15:20:10 [debug] 189132#189132: channel 6:7 +2025/09/02 15:20:10 [notice] 189132#189132: start worker process 189133 +2025/09/02 15:20:10 [debug] 189132#189132: sigsuspend +2025/09/02 15:20:10 [debug] 189133#189133: add cleanup: 00005766C87D1280 +2025/09/02 15:20:10 [debug] 189133#189133: malloc: 00005766C876FBD0:8 +2025/09/02 15:20:10 [debug] 189133#189133: notify eventfd: 9 +2025/09/02 15:20:10 [debug] 189133#189133: testing the EPOLLRDHUP flag: success +2025/09/02 15:20:10 [debug] 189133#189133: malloc: 00005766C8784010:6144 +2025/09/02 15:20:10 [debug] 189133#189133: malloc: 000075ADDD345010:237568 +2025/09/02 15:20:10 [debug] 189133#189133: malloc: 00005766C87D5180:98304 +2025/09/02 15:20:10 [debug] 189133#189133: malloc: 00005766C87ED190:98304 +2025/09/02 15:20:10 [debug] 189133#189133: epoll add event: fd:5 op:1 ev:00002001 +2025/09/02 15:20:10 [debug] 189133#189133: epoll add event: fd:7 op:1 ev:00002001 +2025/09/02 15:20:10 [debug] 189133#189133: setproctitle: "nginx: worker process" +2025/09/02 15:20:10 [debug] 189133#189133: worker cycle +2025/09/02 15:20:10 [debug] 189133#189133: epoll timer: -1 +2025/09/02 15:20:15 [debug] 189133#189133: epoll: fd:5 ev:0001 d:000075ADDD345010 +2025/09/02 15:20:15 [debug] 189133#189133: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 15:20:15 [debug] 189133#189133: posix_memalign: 00005766C876E840:512 @16 +2025/09/02 15:20:15 [debug] 189133#189133: *1 accept: 127.0.0.1:37186 fd:6 +2025/09/02 15:20:15 [debug] 189133#189133: *1 event timer add: 6: 60000:94576207 +2025/09/02 15:20:15 [debug] 189133#189133: *1 reusable connection: 1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 15:20:15 [debug] 189133#189133: timer delta: 5769 +2025/09/02 15:20:15 [debug] 189133#189133: worker cycle +2025/09/02 15:20:15 [debug] 189133#189133: epoll timer: 60000 +2025/09/02 15:20:15 [debug] 189133#189133: epoll: fd:6 ev:0001 d:000075ADDD3451E0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http wait request handler +2025/09/02 15:20:15 [debug] 189133#189133: *1 malloc: 00005766C87710A0:1024 +2025/09/02 15:20:15 [debug] 189133#189133: *1 recv: eof:0, avail:-1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 recv: fd:6 146 of 1024 +2025/09/02 15:20:15 [debug] 189133#189133: *1 reusable connection: 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 posix_memalign: 00005766C878F4B0:4096 @16 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http process request line +2025/09/02 15:20:15 [debug] 189133#189133: *1 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt HTTP/1.1" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http args: "" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http exten: "txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 posix_memalign: 00005766C8785820:4096 @16 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http process request header line +2025/09/02 15:20:15 [debug] 189133#189133: *1 http header: "Host: localhost:9001" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http header: "User-Agent: curl/8.15.0" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http header: "Accept: */*" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http header done +2025/09/02 15:20:15 [debug] 189133#189133: *1 event timer del: 6: 94576207 +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 rewrite phase: 1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 test location: "/media" +2025/09/02 15:20:15 [debug] 189133#189133: *1 test location: "/debug/list" +2025/09/02 15:20:15 [debug] 189133#189133: *1 test location: "/health" +2025/09/02 15:20:15 [debug] 189133#189133: *1 test location: ~ "^/list/([a-f0-9]{64})$" +2025/09/02 15:20:15 [debug] 189133#189133: *1 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:20:15 [debug] 189133#189133: *1 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http cl:-1 max:104857600 +2025/09/02 15:20:15 [debug] 189133#189133: *1 rewrite phase: 3 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var: "GET" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script value: "DELETE" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script equal +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script equal: no +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if: false +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var: "GET" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script value: "HEAD" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script equal +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script equal: no +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if: false +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script var: "GET" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script value: "GET" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script not equal +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script not equal: no +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script if: false +2025/09/02 15:20:15 [debug] 189133#189133: *1 post rewrite phase: 4 +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 5 +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 6 +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 7 +2025/09/02 15:20:15 [debug] 189133#189133: *1 access phase: 8 +2025/09/02 15:20:15 [debug] 189133#189133: *1 access phase: 9 +2025/09/02 15:20:15 [debug] 189133#189133: *1 access phase: 10 +2025/09/02 15:20:15 [debug] 189133#189133: *1 post access phase: 11 +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 12 +2025/09/02 15:20:15 [debug] 189133#189133: *1 try files handler +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script copy: "/" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script capture: "e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http script copy: ".txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 trying to use file: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" "./blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 try file uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 generic phase: 13 +2025/09/02 15:20:15 [debug] 189133#189133: *1 content phase: 14 +2025/09/02 15:20:15 [debug] 189133#189133: *1 content phase: 15 +2025/09/02 15:20:15 [debug] 189133#189133: *1 content phase: 16 +2025/09/02 15:20:15 [debug] 189133#189133: *1 content phase: 17 +2025/09/02 15:20:15 [debug] 189133#189133: *1 content phase: 18 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http filename: "./blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:15 [debug] 189133#189133: *1 add cleanup: 00005766C8785C00 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http static fd: 10 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http set discard body +2025/09/02 15:20:15 [debug] 189133#189133: *1 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 19:20:15 GMT +Content-Type: text/plain +Content-Length: 296 +Last-Modified: Tue, 02 Sep 2025 17:59:11 GMT +Connection: keep-alive +ETag: "68b7306f-128" +Cache-Control: public, max-age=31536000, immutable +Accept-Ranges: bytes + +2025/09/02 15:20:15 [debug] 189133#189133: *1 write new buf t:1 f:0 00005766C8785DF0, pos 00005766C8785DF0, size: 300 file: 0, size: 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http write filter: l:0 f:0 s:300 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 00007FFDB872EFB0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 write old buf t:1 f:0 00005766C8785DF0, pos 00005766C8785DF0, size: 300 file: 0, size: 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 write new buf t:0 f:1 0000000000000000, pos 0000000000000000, size: 0 file: 0, size: 296 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http write filter: l:1 f:0 s:596 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http write filter limit 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 tcp_nopush +2025/09/02 15:20:15 [debug] 189133#189133: *1 writev: 300 of 300 +2025/09/02 15:20:15 [debug] 189133#189133: *1 sendfile: @0 296 +2025/09/02 15:20:15 [debug] 189133#189133: *1 sendfile: 296 of 296 @0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http write filter 0000000000000000 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:15 [debug] 189133#189133: *1 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 set http keepalive handler +2025/09/02 15:20:15 [debug] 189133#189133: *1 http close request +2025/09/02 15:20:15 [debug] 189133#189133: *1 http log handler +2025/09/02 15:20:15 [debug] 189133#189133: *1 run cleanup: 00005766C8785C00 +2025/09/02 15:20:15 [debug] 189133#189133: *1 file cleanup: fd:10 +2025/09/02 15:20:15 [debug] 189133#189133: *1 free: 00005766C878F4B0, unused: 5 +2025/09/02 15:20:15 [debug] 189133#189133: *1 free: 00005766C8785820, unused: 1932 +2025/09/02 15:20:15 [debug] 189133#189133: *1 free: 00005766C87710A0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 hc free: 0000000000000000 +2025/09/02 15:20:15 [debug] 189133#189133: *1 hc busy: 0000000000000000 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 reusable connection: 1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 event timer add: 6: 65000:94581208 +2025/09/02 15:20:15 [debug] 189133#189133: timer delta: 1 +2025/09/02 15:20:15 [debug] 189133#189133: worker cycle +2025/09/02 15:20:15 [debug] 189133#189133: epoll timer: 65000 +2025/09/02 15:20:15 [debug] 189133#189133: epoll: fd:6 ev:2001 d:000075ADDD3451E0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 http keepalive handler +2025/09/02 15:20:15 [debug] 189133#189133: *1 malloc: 00005766C87710A0:1024 +2025/09/02 15:20:15 [debug] 189133#189133: *1 recv: eof:1, avail:-1 +2025/09/02 15:20:15 [debug] 189133#189133: *1 recv: fd:6 0 of 1024 +2025/09/02 15:20:15 [info] 189133#189133: *1 client 127.0.0.1 closed keepalive connection +2025/09/02 15:20:15 [debug] 189133#189133: *1 close http connection: 6 +2025/09/02 15:20:15 [debug] 189133#189133: *1 event timer del: 6: 94581208 +2025/09/02 15:20:15 [debug] 189133#189133: *1 reusable connection: 0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 free: 00005766C87710A0 +2025/09/02 15:20:15 [debug] 189133#189133: *1 free: 00005766C876E840, unused: 136 +2025/09/02 15:20:15 [debug] 189133#189133: timer delta: 1 +2025/09/02 15:20:15 [debug] 189133#189133: worker cycle +2025/09/02 15:20:15 [debug] 189133#189133: epoll timer: -1 +2025/09/02 15:20:49 [debug] 189133#189133: epoll: fd:5 ev:0001 d:000075ADDD345010 +2025/09/02 15:20:49 [debug] 189133#189133: accept on 0.0.0.0:9001, ready: 0 +2025/09/02 15:20:49 [debug] 189133#189133: posix_memalign: 00005766C876E840:512 @16 +2025/09/02 15:20:49 [debug] 189133#189133: *2 accept: 127.0.0.1:55678 fd:6 +2025/09/02 15:20:49 [debug] 189133#189133: *2 event timer add: 6: 60000:94609499 +2025/09/02 15:20:49 [debug] 189133#189133: *2 reusable connection: 1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 epoll add event: fd:6 op:1 ev:80002001 +2025/09/02 15:20:49 [debug] 189133#189133: timer delta: 33290 +2025/09/02 15:20:49 [debug] 189133#189133: worker cycle +2025/09/02 15:20:49 [debug] 189133#189133: epoll timer: 60000 +2025/09/02 15:20:49 [debug] 189133#189133: epoll: fd:6 ev:0001 d:000075ADDD3451E1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http wait request handler +2025/09/02 15:20:49 [debug] 189133#189133: *2 malloc: 00005766C87710A0:1024 +2025/09/02 15:20:49 [debug] 189133#189133: *2 recv: eof:0, avail:-1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 recv: fd:6 142 of 1024 +2025/09/02 15:20:49 [debug] 189133#189133: *2 reusable connection: 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 posix_memalign: 00005766C878F4B0:4096 @16 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http process request line +2025/09/02 15:20:49 [debug] 189133#189133: *2 http request line: "GET /e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4 HTTP/1.1" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http args: "" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http exten: "" +2025/09/02 15:20:49 [debug] 189133#189133: *2 posix_memalign: 00005766C8785820:4096 @16 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http process request header line +2025/09/02 15:20:49 [debug] 189133#189133: *2 http header: "Host: localhost:9001" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http header: "User-Agent: curl/8.15.0" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http header: "Accept: */*" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http header done +2025/09/02 15:20:49 [debug] 189133#189133: *2 event timer del: 6: 94609499 +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 rewrite phase: 1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 test location: "/media" +2025/09/02 15:20:49 [debug] 189133#189133: *2 test location: "/debug/list" +2025/09/02 15:20:49 [debug] 189133#189133: *2 test location: "/health" +2025/09/02 15:20:49 [debug] 189133#189133: *2 test location: ~ "^/list/([a-f0-9]{64})$" +2025/09/02 15:20:49 [debug] 189133#189133: *2 test location: ~ "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:20:49 [debug] 189133#189133: *2 using configuration "^/([a-f0-9]{64})(\.[a-zA-Z0-9]+)?$" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http cl:-1 max:104857600 +2025/09/02 15:20:49 [debug] 189133#189133: *2 rewrite phase: 3 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var: "GET" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script value: "DELETE" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script equal +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script equal: no +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if: false +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var: "GET" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script value: "HEAD" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script equal +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script equal: no +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if: false +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script var: "GET" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script value: "GET" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script not equal +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script not equal: no +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script if: false +2025/09/02 15:20:49 [debug] 189133#189133: *2 post rewrite phase: 4 +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 5 +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 6 +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 7 +2025/09/02 15:20:49 [debug] 189133#189133: *2 access phase: 8 +2025/09/02 15:20:49 [debug] 189133#189133: *2 access phase: 9 +2025/09/02 15:20:49 [debug] 189133#189133: *2 access phase: 10 +2025/09/02 15:20:49 [debug] 189133#189133: *2 post access phase: 11 +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 12 +2025/09/02 15:20:49 [debug] 189133#189133: *2 try files handler +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script copy: "/" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script capture: "e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http script copy: ".txt" +2025/09/02 15:20:49 [debug] 189133#189133: *2 trying to use file: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" "./blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:49 [debug] 189133#189133: *2 try file uri: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:49 [debug] 189133#189133: *2 generic phase: 13 +2025/09/02 15:20:49 [debug] 189133#189133: *2 content phase: 14 +2025/09/02 15:20:49 [debug] 189133#189133: *2 content phase: 15 +2025/09/02 15:20:49 [debug] 189133#189133: *2 content phase: 16 +2025/09/02 15:20:49 [debug] 189133#189133: *2 content phase: 17 +2025/09/02 15:20:49 [debug] 189133#189133: *2 content phase: 18 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http filename: "./blobs/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt" +2025/09/02 15:20:49 [debug] 189133#189133: *2 add cleanup: 00005766C8785C00 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http static fd: 10 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http set discard body +2025/09/02 15:20:49 [debug] 189133#189133: *2 HTTP/1.1 200 OK +Server: nginx/1.18.0 (Ubuntu) +Date: Tue, 02 Sep 2025 19:20:49 GMT +Content-Type: text/plain +Content-Length: 296 +Last-Modified: Tue, 02 Sep 2025 17:59:11 GMT +Connection: keep-alive +ETag: "68b7306f-128" +Cache-Control: public, max-age=31536000, immutable +Accept-Ranges: bytes + +2025/09/02 15:20:49 [debug] 189133#189133: *2 write new buf t:1 f:0 00005766C8785DF0, pos 00005766C8785DF0, size: 300 file: 0, size: 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http write filter: l:0 f:0 s:300 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http output filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http copy filter: "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http postpone filter "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" 00007FFDB872EFB0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 write old buf t:1 f:0 00005766C8785DF0, pos 00005766C8785DF0, size: 300 file: 0, size: 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 write new buf t:0 f:1 0000000000000000, pos 0000000000000000, size: 0 file: 0, size: 296 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http write filter: l:1 f:0 s:596 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http write filter limit 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 tcp_nopush +2025/09/02 15:20:49 [debug] 189133#189133: *2 writev: 300 of 300 +2025/09/02 15:20:49 [debug] 189133#189133: *2 sendfile: @0 296 +2025/09/02 15:20:49 [debug] 189133#189133: *2 sendfile: 296 of 296 @0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http write filter 0000000000000000 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http copy filter: 0 "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" +2025/09/02 15:20:49 [debug] 189133#189133: *2 http finalize request: 0, "/e6bdc6b5336072dc05e1a6eea68c75110cbd6c1994f5dbfe75c5880a8b43dcf4.txt?" a:1, c:1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 set http keepalive handler +2025/09/02 15:20:49 [debug] 189133#189133: *2 http close request +2025/09/02 15:20:49 [debug] 189133#189133: *2 http log handler +2025/09/02 15:20:49 [debug] 189133#189133: *2 run cleanup: 00005766C8785C00 +2025/09/02 15:20:49 [debug] 189133#189133: *2 file cleanup: fd:10 +2025/09/02 15:20:49 [debug] 189133#189133: *2 free: 00005766C878F4B0, unused: 5 +2025/09/02 15:20:49 [debug] 189133#189133: *2 free: 00005766C8785820, unused: 1936 +2025/09/02 15:20:49 [debug] 189133#189133: *2 free: 00005766C87710A0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 hc free: 0000000000000000 +2025/09/02 15:20:49 [debug] 189133#189133: *2 hc busy: 0000000000000000 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 reusable connection: 1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 event timer add: 6: 65000:94614499 +2025/09/02 15:20:49 [debug] 189133#189133: timer delta: 0 +2025/09/02 15:20:49 [debug] 189133#189133: worker cycle +2025/09/02 15:20:49 [debug] 189133#189133: epoll timer: 65000 +2025/09/02 15:20:49 [debug] 189133#189133: epoll: fd:6 ev:2001 d:000075ADDD3451E1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 http keepalive handler +2025/09/02 15:20:49 [debug] 189133#189133: *2 malloc: 00005766C87710A0:1024 +2025/09/02 15:20:49 [debug] 189133#189133: *2 recv: eof:1, avail:-1 +2025/09/02 15:20:49 [debug] 189133#189133: *2 recv: fd:6 0 of 1024 +2025/09/02 15:20:49 [info] 189133#189133: *2 client 127.0.0.1 closed keepalive connection +2025/09/02 15:20:49 [debug] 189133#189133: *2 close http connection: 6 +2025/09/02 15:20:49 [debug] 189133#189133: *2 event timer del: 6: 94614499 +2025/09/02 15:20:49 [debug] 189133#189133: *2 reusable connection: 0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 free: 00005766C87710A0 +2025/09/02 15:20:49 [debug] 189133#189133: *2 free: 00005766C876E840, unused: 136 +2025/09/02 15:20:49 [debug] 189133#189133: timer delta: 1 +2025/09/02 15:20:49 [debug] 189133#189133: worker cycle +2025/09/02 15:20:49 [debug] 189133#189133: epoll timer: -1 diff --git a/logs/fcgi-stderr.log b/logs/fcgi-stderr.log index 2bb8049..16c7682 100755 --- a/logs/fcgi-stderr.log +++ b/logs/fcgi-stderr.log @@ -1,1001 +1 @@ -FastCGI wrapper starting at Tue Sep 2 11:09:54 AM EDT 2025 -FastCGI wrapper starting at Tue Sep 2 11:10:41 AM EDT 2025 -FastCGI wrapper starting at Tue Sep 2 11:19:31 AM EDT 2025 -FastCGI wrapper starting at Tue Sep 2 11:20:41 AM EDT 2025 - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756826533 -Event pointer: 0x56c0e3db3490 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x56c0e3db3550 - pubkey_item: 0x56c0e3db35f0 - created_at_item: 0x56c0e3db36b0 - kind_item: 0x56c0e3db34e0 - tags_item: 0x56c0e3db3740 - content_item: 0x56c0e3db3b50 - sig_item: 0x56c0e3db3bf0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -FastCGI wrapper starting at Tue Sep 2 11:29:29 AM EDT 2025 - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756826978 -Event pointer: 0x5cd63df4a490 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5cd63df4a550 - pubkey_item: 0x5cd63df4a5f0 - created_at_item: 0x5cd63df4a6b0 - kind_item: 0x5cd63df4a4e0 - tags_item: 0x5cd63df4a740 - content_item: 0x5cd63df4ab50 - sig_item: 0x5cd63df4abf0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -❌ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() FAILED! - This is the exact error we've been tracking (returns -32) -FastCGI wrapper starting at Tue Sep 2 11:32:06 AM EDT 2025 - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827135 -Event pointer: 0x5719b833c570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833c630 - pubkey_item: 0x5719b833c6d0 - created_at_item: 0x5719b833c790 - kind_item: 0x5719b833c5c0 - tags_item: 0x5719b833c820 - content_item: 0x5719b833cc30 - sig_item: 0x5719b833ccd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827135 -Event pointer: 0x5719b833c570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833c630 - pubkey_item: 0x5719b833c6d0 - created_at_item: 0x5719b833c790 - kind_item: 0x5719b833c5c0 - tags_item: 0x5719b833c820 - content_item: 0x5719b833cc30 - sig_item: 0x5719b833ccd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827135 -Event pointer: 0x5719b833dd10 -📄 Input event JSON: -{ - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833e200 - pubkey_item: 0x5719b833dab0 - created_at_item: 0x5719b833d9a0 - kind_item: 0x5719b833d260 - tags_item: 0x5719b833dcc0 - content_item: 0x5719b833e360 - sig_item: 0x5719b833e3b0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827333 -Event pointer: 0x5719b833e710 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833e360 - pubkey_item: 0x5719b833ea80 - created_at_item: 0x5719b833ecf0 - kind_item: 0x5719b833cfe0 - tags_item: 0x5719b833e8e0 - content_item: 0x5719b833ec20 - sig_item: 0x5719b833bec0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827333 -Event pointer: 0x5719b833e710 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833e360 - pubkey_item: 0x5719b833ea80 - created_at_item: 0x5719b833ecf0 - kind_item: 0x5719b833cfe0 - tags_item: 0x5719b833e8e0 - content_item: 0x5719b833ec20 - sig_item: 0x5719b833bec0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827333 -Event pointer: 0x5719b833ca40 -📄 Input event JSON: -{ - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833cb20 - pubkey_item: 0x5719b833c8c0 - created_at_item: 0x5719b833c7b0 - kind_item: 0x5719b833c760 - tags_item: 0x5719b833cad0 - content_item: 0x5719b8339ac0 - sig_item: 0x5719b8339b30 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827611 -Event pointer: 0x5719b833dca0 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833e380 - pubkey_item: 0x5719b833f120 - created_at_item: 0x5719b83398b0 - kind_item: 0x5719b833dbd0 - tags_item: 0x5719b83396c0 - content_item: 0x5719b8339a50 - sig_item: 0x5719b8339af0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827611 -Event pointer: 0x5719b833dca0 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833e380 - pubkey_item: 0x5719b833f120 - created_at_item: 0x5719b83398b0 - kind_item: 0x5719b833dbd0 - tags_item: 0x5719b83396c0 - content_item: 0x5719b8339a50 - sig_item: 0x5719b8339af0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827611 -Event pointer: 0x5719b833df30 -📄 Input event JSON: -{ - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5719b833f4f0 - pubkey_item: 0x5719b833dec0 - created_at_item: 0x5719b833c9c0 - kind_item: 0x5719b833c970 - tags_item: 0x5719b833c900 - content_item: 0x5719b833cab0 - sig_item: 0x5719b833cb20 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! -FastCGI wrapper starting at Tue Sep 2 11:43:41 AM EDT 2025 - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827831 -Event pointer: 0x5e2b0b679570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5e2b0b679630 - pubkey_item: 0x5e2b0b6796d0 - created_at_item: 0x5e2b0b679790 - kind_item: 0x5e2b0b6795c0 - tags_item: 0x5e2b0b679820 - content_item: 0x5e2b0b679c30 - sig_item: 0x5e2b0b679cd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827831 -Event pointer: 0x5e2b0b679570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5e2b0b679630 - pubkey_item: 0x5e2b0b6796d0 - created_at_item: 0x5e2b0b679790 - kind_item: 0x5e2b0b6795c0 - tags_item: 0x5e2b0b679820 - content_item: 0x5e2b0b679c30 - sig_item: 0x5e2b0b679cd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756827831 -Event pointer: 0x5e2b0b67ad10 -📄 Input event JSON: -{ - "id": "4d03d62ff1da5afc18a7e7a79f5a3bb467cf4a34ecc2d862edee0c4afec06efb", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756822481, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1756826080"]], - "content": "Upload standard test file", - "sig": "595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679" -} -🔍 Field extraction results: - id_item: 0x5e2b0b67b200 - pubkey_item: 0x5e2b0b67aab0 - created_at_item: 0x5e2b0b67a9a0 - kind_item: 0x5e2b0b67a260 - tags_item: 0x5e2b0b67acc0 - content_item: 0x5e2b0b67b360 - sig_item: 0x5e2b0b67b3b0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '595f7260c4c58dac8c3ad77e7cdf116cc9d2def8a8aeb1e7e584c94d3d01c79e98e44192da0f7b859f3b77a6e70d03509edf64f54f05e72bde9ea74056440679' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 4d03d62ff1da5afc... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 595f7260c4c58dac... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 59 5f 72 60 c4 c5 8d ac -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828112 -Event pointer: 0x5e2b0b67b710 -📄 Input event JSON: -{ - "kind": 24242, - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x5e2b0b67b360 - pubkey_item: 0x5e2b0b67ba80 - created_at_item: 0x5e2b0b67bcf0 - kind_item: 0x5e2b0b679fe0 - tags_item: 0x5e2b0b67b8e0 - content_item: 0x5e2b0b67bc20 - sig_item: 0x5e2b0b678ec0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828112 -Event pointer: 0x5e2b0b67b710 -📄 Input event JSON: -{ - "kind": 24242, - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x5e2b0b67b360 - pubkey_item: 0x5e2b0b67ba80 - created_at_item: 0x5e2b0b67bcf0 - kind_item: 0x5e2b0b679fe0 - tags_item: 0x5e2b0b67b8e0 - content_item: 0x5e2b0b67bc20 - sig_item: 0x5e2b0b678ec0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828112 -Event pointer: 0x5e2b0b679a40 -📄 Input event JSON: -{ - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x5e2b0b679b20 - pubkey_item: 0x5e2b0b6798c0 - created_at_item: 0x5e2b0b6797b0 - kind_item: 0x5e2b0b679760 - tags_item: 0x5e2b0b679ad0 - content_item: 0x5e2b0b676ac0 - sig_item: 0x5e2b0b676b30 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! -FastCGI wrapper starting at Tue Sep 2 12:01:32 PM EDT 2025 - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828900 -Event pointer: 0x6176f258a570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x6176f258a630 - pubkey_item: 0x6176f258a6d0 - created_at_item: 0x6176f258a790 - kind_item: 0x6176f258a5c0 - tags_item: 0x6176f258a820 - content_item: 0x6176f258ac30 - sig_item: 0x6176f258acd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828900 -Event pointer: 0x6176f258a570 -📄 Input event JSON: -{ - "kind": 24242, - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x6176f258a630 - pubkey_item: 0x6176f258a6d0 - created_at_item: 0x6176f258a790 - kind_item: 0x6176f258a5c0 - tags_item: 0x6176f258a820 - content_item: 0x6176f258ac30 - sig_item: 0x6176f258acd0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! - -🔍 DEBUG: nostr_verify_event_signature() CALLED -Timestamp: 1756828900 -Event pointer: 0x6176f258bd10 -📄 Input event JSON: -{ - "id": "6f1e2ff851bde47ab2445aab8c8cbfae5c54f3d62c1892f13149fc5941ffc601", - "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "created_at": 1756828081, - "kind": 24242, - "tags": [["t", "upload"], ["x", "3f49f934e838893bdc516e680ade3cee2a848bbf42c3e7aba0108cf7cedb8540"], ["expiration", "1788364069"]], - "content": "Upload standard test file", - "sig": "99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f" -} -🔍 Field extraction results: - id_item: 0x6176f258c200 - pubkey_item: 0x6176f258bab0 - created_at_item: 0x6176f258b9a0 - kind_item: 0x6176f258b260 - tags_item: 0x6176f258bcc0 - content_item: 0x6176f258c360 - sig_item: 0x6176f258c3b0 -📝 Pubkey string: '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' (length: 64) -📝 Signature string: '99df5bc594cfb550b3f46625d248275492ce2ec4b8f93111a192443fc6396129d9d64d3f7b380ef29c292d9fb46ca8279aeea6f91dae349ea3ca22bfb41e677f' (length: 128) -🔍 Starting field validation... -✅ All required fields present -🔍 Creating serialization array... -✅ Serialization array created -🔍 Adding items to serialization array... -✅ Items added to serialization array -🔍 Converting array to string... -✅ Serialization string created (length: 233) -🔍 Hashing serialized event... -✅ Event hashed successfully -🔍 Converting hash to hex... -✅ Hash converted to hex: 6f1e2ff851bde47a... -🔍 Verifying event ID... -✅ Event ID verified successfully -🔍 Starting signature verification... -✅ Pubkey and signature strings retrieved -🔍 Converting hex strings to bytes... -🔍 Converting pubkey hex: 79be667ef9dcbbac... -✅ Pubkey hex converted successfully -🔍 Converting signature hex: 99df5bc594cfb550... -✅ Signature hex converted successfully -📊 Pubkey bytes (first 8): 79 be 66 7e f9 dc bb ac -📊 Signature bytes (first 8): 99 df 5b c5 94 cf b5 50 -🔍 CRITICAL: About to parse pubkey with nostr_secp256k1_xonly_pubkey_parse()... -✅ CRITICAL: nostr_secp256k1_xonly_pubkey_parse() SUCCESS! -🔍 Starting Schnorr signature verification... -✅ SUCCESS: Schnorr signature verification passed! -FastCGI wrapper starting at Tue Sep 2 12:45:08 PM EDT 2025 +FastCGI starting at Tue Sep 2 03:20:09 PM EDT 2025 diff --git a/logs/nginx.pid b/logs/nginx.pid index 13b5ae8..18eaf58 100644 --- a/logs/nginx.pid +++ b/logs/nginx.pid @@ -1 +1 @@ -176726 +189132 diff --git a/logs/spawn-fcgi.log b/logs/spawn-fcgi.log index e69de29..ab9b353 100755 --- a/logs/spawn-fcgi.log +++ b/logs/spawn-fcgi.log @@ -0,0 +1 @@ +spawn-fcgi: child exited with: 127 diff --git a/restart-all.sh b/restart-all.sh index 545cacb..bac037b 100755 --- a/restart-all.sh +++ b/restart-all.sh @@ -141,8 +141,10 @@ if ! command -v spawn-fcgi &> /dev/null; then exit 1 fi -# Start FastCGI application with stderr logging using wrapper -spawn-fcgi -s "$SOCKET_PATH" -M 666 -u "$USER" -g "$USER" -f "./fcgi-wrapper.sh" -P "$PID_FILE" 2>logs/spawn-fcgi.log +# Start FastCGI application with stderr logging (no wrapper needed) +# Create stderr log with timestamp +echo "FastCGI starting at $(date)" > logs/fcgi-stderr.log +spawn-fcgi -s "$SOCKET_PATH" -M 666 -u "$USER" -g "$USER" -f "$FCGI_BINARY" -P "$PID_FILE" 2>>logs/fcgi-stderr.log if [ $? -eq 0 ] && [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") diff --git a/src/main.c b/src/main.c index fa8c620..e7f78ab 100644 --- a/src/main.c +++ b/src/main.c @@ -2489,6 +2489,14 @@ void handle_upload_request(void) { size_t bytes_written = fwrite(file_data, 1, content_length, outfile); fclose(outfile); + + // Set file permissions to 644 (owner read/write, group/others read) - standard for web files + if (chmod(filepath, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) != 0) { + fprintf(stderr, "WARNING: Failed to set file permissions for %s\r\n", filepath); + // Continue anyway - this is not a fatal error + } else { + fprintf(stderr, "DEBUG: File permissions set to 644 for %s\r\n", filepath); + } free(file_data); if (bytes_written != (size_t)content_length) {