mirror of
https://github.com/jamesroberts/fastwsgi.git
synced 2025-12-20 13:49:31 -06:00
Minor fixes
This commit is contained in:
@@ -60,7 +60,7 @@ def run_from_cli():
|
||||
|
||||
sys.path.insert(0, ".")
|
||||
wsgi_app = import_from_string(sys.argv[1])
|
||||
print_server_details()
|
||||
print_server_details(HOST, PORT)
|
||||
print(f"Server listening at http://{HOST}:{PORT}")
|
||||
_fastwsgi.run_server(wsgi_app, "", PORT, BACKLOG, LOGGING)
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ void init_constants() {
|
||||
SERVER_NAME = PyUnicode_FromString("SERVER_NAME");
|
||||
SERVER_PORT = PyUnicode_FromString("SERVER_PORT");
|
||||
SERVER_PROTOCOL = PyUnicode_FromString("SERVER_PROTOCOL");
|
||||
QUERY_STRING = PyUnicode_FromString("QUERY_STRING");
|
||||
PATH_INFO = Py_BuildValue("s", "PATH_INFO");
|
||||
HTTP_ = PyUnicode_FromString("HTTP_");
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <Python.h>
|
||||
|
||||
PyObject* REQUEST_METHOD, * SCRIPT_NAME, * SERVER_NAME, * SERVER_PORT, * SERVER_PROTOCOL;
|
||||
PyObject* REQUEST_METHOD, * SCRIPT_NAME, * SERVER_NAME, * SERVER_PORT, * SERVER_PROTOCOL, * QUERY_STRING;
|
||||
PyObject* wsgi_version, * wsgi_url_scheme, * wsgi_errors, * wsgi_run_once, * wsgi_multithread, * wsgi_multiprocess, * version;
|
||||
PyObject* http_scheme, * HTTP_1_1, * HTTP_1_0;
|
||||
PyObject* server_host, * server_port, * empty_string;
|
||||
|
||||
@@ -51,13 +51,13 @@ int on_url(llhttp_t* parser, const char* data, size_t length) {
|
||||
strncpy(url, data, length);
|
||||
url[length] = 0;
|
||||
|
||||
char* path = strtok(url, "?");
|
||||
set_header(request->headers, "PATH_INFO", path, strlen(path));
|
||||
|
||||
char* query_string = strtok(NULL, "");
|
||||
char* query_string = strchr(url, '?');
|
||||
if (query_string) {
|
||||
set_header(request->headers, "QUERY_STRING", query_string, strlen(query_string));
|
||||
*query_string = 0;
|
||||
set_header(request->headers, "QUERY_STRING", query_string + 1, strlen(query_string + 1));
|
||||
}
|
||||
set_header(request->headers, "PATH_INFO", url, strlen(url));
|
||||
|
||||
free(url);
|
||||
return 0;
|
||||
};
|
||||
@@ -75,10 +75,6 @@ int on_body(llhttp_t* parser, const char* body, size_t length) {
|
||||
Py_XDECREF(result);
|
||||
Py_XDECREF(body_content);
|
||||
|
||||
PyObject* seek = PyUnicode_FromString("seek");
|
||||
PyObject* res = PyObject_CallMethodObjArgs(input, seek, PyLong_FromLong(0L), NULL);
|
||||
Py_DECREF(seek);
|
||||
Py_XDECREF(res);
|
||||
return 0;
|
||||
};
|
||||
|
||||
@@ -154,6 +150,14 @@ PyTypeObject StartResponse_Type = {
|
||||
int on_message_complete(llhttp_t* parser) {
|
||||
logger("on message complete");
|
||||
Request* request = (Request*)parser->data;
|
||||
|
||||
// Sets the input byte stream position back to 0
|
||||
PyObject* body = PyDict_GetItem(request->headers, wsgi_input);
|
||||
PyObject* seek = PyUnicode_FromString("seek");
|
||||
PyObject* res = PyObject_CallMethodObjArgs(body, seek, PyLong_FromLong(0L), NULL);
|
||||
Py_DECREF(res);
|
||||
Py_DECREF(seek);
|
||||
|
||||
build_wsgi_environ(parser);
|
||||
|
||||
StartResponse* start_response = PyObject_NEW(StartResponse, &StartResponse_Type);
|
||||
@@ -295,6 +299,7 @@ void init_request_dict() {
|
||||
PyDict_SetItem(base_dict, SCRIPT_NAME, empty_string);
|
||||
PyDict_SetItem(base_dict, SERVER_NAME, server_host);
|
||||
PyDict_SetItem(base_dict, SERVER_PORT, server_port);
|
||||
PyDict_SetItem(base_dict, QUERY_STRING, empty_string);
|
||||
PyDict_SetItem(base_dict, wsgi_input, io_BytesIO);
|
||||
PyDict_SetItem(base_dict, wsgi_version, version);
|
||||
PyDict_SetItem(base_dict, wsgi_url_scheme, http_scheme);
|
||||
|
||||
@@ -8,7 +8,6 @@ raw_requests = [
|
||||
"/\r\n\r\n",
|
||||
"GET ???\r\n\r\n",
|
||||
"GET / HTTP\r\n\r\n",
|
||||
"\r\n",
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user