commit 5ab46d756d3a1dfb499cb555714768eef7f3184c
parent a5ff506cf788066e78dda3b4e75c45abaea0671a
Author: Joris Vink <joris@sanctorum.se>
Date:   Tue, 11 Mar 2025 20:57:07 +0100
Python: fix after changes to on_body_chunk.
Match the python on_body_chunk callback to the actual
prototype for that function, and change the behaviour
in the python code so that one can return True/False
from this function to signal continuation or abort.
Diffstat:
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/python.c b/src/python.c
@@ -193,7 +193,7 @@ static int	python_validator_check(PyObject *);
 static int	python_runtime_resolve(const char *, const struct stat *);
 static int	python_runtime_http_request(void *, struct http_request *);
 static void	python_runtime_http_request_free(void *, struct http_request *);
-static void	python_runtime_http_body_chunk(void *, struct http_request *,
+static int	python_runtime_http_body_chunk(void *, struct http_request *,
 		    const void *, size_t);
 static int	python_runtime_validator(void *, struct http_request *,
 		    const void *);
@@ -1470,10 +1470,11 @@ python_runtime_http_request_free(void *addr, struct http_request *req)
 	Py_XDECREF(ret);
 }
 
-static void
+static int
 python_runtime_http_body_chunk(void *addr, struct http_request *req,
     const void *data, size_t len)
 {
+	int		result;
 	PyObject	*args, *ret;
 
 	if (req->py_req == NULL) {
@@ -1483,7 +1484,7 @@ python_runtime_http_body_chunk(void *addr, struct http_request *req,
 
 	if ((args = Py_BuildValue("(Oy#)", req->py_req, data, len)) == NULL) {
 		kore_python_log_error("python_runtime_http_body_chunk");
-		return;
+		return (KORE_RESULT_ERROR);
 	}
 
 	PyErr_Clear();
@@ -1492,8 +1493,15 @@ python_runtime_http_body_chunk(void *addr, struct http_request *req,
 	if (ret == NULL)
 		kore_python_log_error("python_runtime_http_body_chunk");
 
+	if (ret == Py_True)
+		result = KORE_RESULT_OK;
+	else
+		result = KORE_RESULT_ERROR;
+
 	Py_XDECREF(ret);
 	Py_DECREF(args);
+
+	return (result);
 }
 
 static int