From 8af700ce37cf4d6c25316977d6c02f59043b8574 Mon Sep 17 00:00:00 2001 From: "roberto@debian32" Date: Wed, 15 Jun 2011 12:30:01 +0200 Subject: [PATCH] fixed rpc --- plugins/python/uwsgi_pymodule.c | 18 +++++++++++------- plugins/rpc/rpc_plugin.c | 7 ------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/plugins/python/uwsgi_pymodule.c b/plugins/python/uwsgi_pymodule.c index 9b1b4b63..b486b6c6 100644 --- a/plugins/python/uwsgi_pymodule.c +++ b/plugins/python/uwsgi_pymodule.c @@ -310,7 +310,7 @@ PyObject *py_uwsgi_rpc(PyObject * self, PyObject * args) { char *node, *func; uint16_t size = 0; PyObject *py_node, *py_func; - struct uwsgi_header uh; + struct wsgi_request rpc_req; int argc = PyTuple_Size(args); char *argv[0xff]; int i, fd; @@ -369,9 +369,11 @@ PyObject *py_uwsgi_rpc(PyObject * self, PyObject * args) { pktsize += 2 + strlen(argv[i]); } - uh.modifier1 = 173; - uh.pktsize = pktsize; - uh.modifier2 = 0; + memset(&rpc_req, 0, sizeof(struct wsgi_request)); + + rpc_req.uh.modifier1 = 173; + rpc_req.uh.pktsize = pktsize; + rpc_req.uh.modifier2 = 0; bufptr = buffer; @@ -389,7 +391,7 @@ PyObject *py_uwsgi_rpc(PyObject * self, PyObject * args) { bufptr += ulen; } - if (write(fd, &uh, 4) != 4) { + if (write(fd, &rpc_req.uh, 4) != 4) { uwsgi_error("write()"); close(fd); goto clear; @@ -405,8 +407,10 @@ PyObject *py_uwsgi_rpc(PyObject * self, PyObject * args) { if (rlen > 0) { upoll.fd = fd; upoll.events = POLLIN; - if (uwsgi_parse_response(&upoll, uwsgi.shared->options[UWSGI_OPTION_SOCKET_TIMEOUT], &uh, buffer, uwsgi_proto_uwsgi_parser)) { - size = uh.pktsize; + rpc_req.poll.fd = fd; + rpc_req.buffer = buffer; + if (uwsgi_parse_response(&upoll, uwsgi.shared->options[UWSGI_OPTION_SOCKET_TIMEOUT], (struct uwsgi_header *)&rpc_req, buffer, uwsgi_proto_uwsgi_parser)) { + size = rpc_req.uh.pktsize; } } diff --git a/plugins/rpc/rpc_plugin.c b/plugins/rpc/rpc_plugin.c index fc920339..f1f49bf6 100644 --- a/plugins/rpc/rpc_plugin.c +++ b/plugins/rpc/rpc_plugin.c @@ -7,7 +7,6 @@ int uwsgi_rpc_request(struct wsgi_request *wsgi_req) { char *argv[0xff]; uint8_t argc; - int i; /* Standard RPC request */ if (!wsgi_req->uh.pktsize) { @@ -15,17 +14,11 @@ int uwsgi_rpc_request(struct wsgi_request *wsgi_req) { return -1; } - uwsgi_log("parsing array\n"); if (uwsgi_parse_array(wsgi_req->buffer, wsgi_req->uh.pktsize, argv, &argc)) { uwsgi_log("Invalid RPC request. skip.\n"); return -1; } - uwsgi_log("done\n"); - for(i=0;iuh.pktsize = uwsgi_rpc(argv[0], argc-1, argv+1, wsgi_req->buffer); if (wsgi_req->uh.modifier2 == 0) {