Skip to content

Commit

Permalink
fix: delay gPO initiation for Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
nickelpro committed Aug 5, 2024
1 parent 95a30d2 commit 4a7a08a
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
1 change: 0 additions & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ jobs:
run: |
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install .
- name: Test
Expand Down
49 changes: 32 additions & 17 deletions src/Constants.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,41 @@ inline std::string gRequiredHeaders {std::format(gRequiredHeadersFormat,
std::chrono::system_clock::now()))};

struct {
PyObject* empty {PyUnicode_New(0, 0)};
PyObject* query {PyUnicode_FromString("QUERY_STRING")};
PyObject* path {PyUnicode_FromString("PATH_INFO")};
PyObject* proto {PyUnicode_FromString("SERVER_PROTOCOL")};
PyObject* http {PyUnicode_FromString("http")};
PyObject* http10 {PyUnicode_FromString("HTTP/1.0")};
PyObject* http11 {PyUnicode_FromString("HTTP/1.1")};
PyObject* http_conlen {PyUnicode_FromString("HTTP_CONTENT_LENGTH")};
PyObject* conlen {PyUnicode_FromString("CONTENT_LENGTH")};
PyObject* http_contype {PyUnicode_FromString("HTTP_CONTENT_TYPE")};
PyObject* contype {PyUnicode_FromString("CONTENT_TYPE")};
PyObject* meth {PyUnicode_FromString("REQUEST_METHOD")};
PyObject* wsgi_ver {PyTuple_Pack(2, PyLong_FromLong(1), PyLong_FromLong(0))};
PyObject* empty;
PyObject* query;
PyObject* path;
PyObject* proto;
PyObject* http;
PyObject* http10;
PyObject* http11;
PyObject* http_conlen;
PyObject* conlen;
PyObject* http_contype;
PyObject* contype;
PyObject* meth;
PyObject* wsgi_ver;
std::array<PyObject*, 46> methods;
} gPO;

inline void init_gPO() {
gPO.empty = PyUnicode_New(0, 0);
gPO.query = PyUnicode_FromString("QUERY_STRING");
gPO.path = PyUnicode_FromString("PATH_INFO");
gPO.proto = PyUnicode_FromString("SERVER_PROTOCOL");
gPO.http = PyUnicode_FromString("http");
gPO.http10 = PyUnicode_FromString("HTTP/1.0");
gPO.http11 = PyUnicode_FromString("HTTP/1.1");
gPO.http_conlen = PyUnicode_FromString("HTTP_CONTENT_LENGTH");
gPO.conlen = PyUnicode_FromString("CONTENT_LENGTH");
gPO.http_contype = PyUnicode_FromString("HTTP_CONTENT_TYPE");
gPO.contype = PyUnicode_FromString("CONTENT_TYPE");
gPO.meth = PyUnicode_FromString("REQUEST_METHOD");
gPO.wsgi_ver = PyTuple_Pack(2, PyLong_FromLong(1), PyLong_FromLong(0));
#define HTTP_METHOD(c, n) PyUnicode_FromString(#n),
std::array<PyObject*, 46> methods {
gPO.methods = {
#include "defs/http_method.def"
};
#undef HTTP_METHOD

} gPO;
}

} // namespace velocem

Expand Down
2 changes: 2 additions & 0 deletions src/ModVelocem.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#define PY_SSIZE_T_CLEAN
#include <Python.h>

#include "Constants.hpp"
#include "WSGIServer.hpp"

namespace {
Expand All @@ -27,5 +28,6 @@ PyMODINIT_FUNC PyInit_velocem(void) {
return nullptr;
if(PyModule_AddStringConstant(mod, "__version__", "0.0.9") == -1)
return nullptr;
velocem::init_gPO();
return mod;
}

0 comments on commit 4a7a08a

Please sign in to comment.