[PATCH 6/10] rlm_python: 06-cleanup-python-vptuple-ex-add-vp-tuple.patch
Cleanup python_vptuple (ex add_vp_tuple) --- commit 8b5cb6f9d73fc724c0ad822fc83523e13d84801e tree 399b39a24da14201a108d1875610894c0d620ab7 parent 113545c895789bc9e16b3321b7636bef01289d90 author <stingray@boxster64.stingr.net> Sun, 29 Jan 2006 15:26:36 +0300 committer <stingray@boxster64.stingr.net> Sun, 29 Jan 2006 15:26:36 +0300 src/modules/rlm_python/rlm_python.c | 142 +++++++++++++---------------------- 1 files changed, 52 insertions(+), 90 deletions(-) diff --git a/src/modules/rlm_python/rlm_python.c b/src/modules/rlm_python/rlm_python.c --- a/src/modules/rlm_python/rlm_python.c +++ b/src/modules/rlm_python/rlm_python.c @@ -238,96 +238,58 @@ static int python_destroy() { return 0; } -/* Tuple to value pair conversion */ -static void add_vp_tuple(VALUE_PAIR **vpp, PyObject *pValue, - const char *function_name) { - int i, outertuplesize; - VALUE_PAIR *vp; - - /* If the Python function gave us None for the tuple, then just return. */ - if (pValue == Py_None) { - return; - } - - if (!PyTuple_Check(pValue)) { - radlog(L_ERR, "%s: non-tuple passed", function_name); - } - - /* Get the tuple size. */ - outertuplesize = PyTuple_Size(pValue); - - for (i = 0; i < outertuplesize; i++) { - PyObject *pTupleElement = PyTuple_GetItem(pValue, i); - - if ((pTupleElement != NULL) && - (PyTuple_Check(pTupleElement))) { - - /* Check if it's a pair */ - int tuplesize; - - if ((tuplesize = PyTuple_Size(pTupleElement)) != 2) { - radlog(L_ERR, "%s: tuple element %d is a tuple " - " of size %d. must be 2\n", function_name, - i, tuplesize); - } - else { - PyObject *pString1, *pString2; - - pString1 = PyTuple_GetItem(pTupleElement, 0); - pString2 = PyTuple_GetItem(pTupleElement, 1); - - /* xxx PyString_Check does not compile here */ - if ((pString1 != NULL) && - (pString2 != NULL) && - PyObject_TypeCheck(pString1,&PyString_Type) && - PyObject_TypeCheck(pString2,&PyString_Type)) { - - - const char *s1, *s2; - - /* pairmake() will convert and find any - * errors in the pair. - */ - - s1 = PyString_AsString(pString1); - s2 = PyString_AsString(pString2); - - if ((s1 != NULL) && (s2 != NULL)) { - radlog(L_DBG, "%s: %s = %s ", - function_name, s1, s2); - - /* xxx Might need to support other T_OP */ - vp = pairmake(s1, s2, T_OP_EQ); - if (vp != NULL) { - pairadd(vpp, vp); - radlog(L_DBG, "%s: s1, s2 OK\n", - function_name); - } - else { - radlog(L_DBG, "%s: s1, s2 FAILED\n", - function_name); - } - } - else { - radlog(L_ERR, "%s: string conv failed\n", - function_name); - } - - } - else { - radlog(L_ERR, "%s: tuple element %d must be " - "(string, string)", function_name, i); - } - } - } - else { - radlog(L_ERR, "%s: tuple element %d is not a tuple\n", - function_name, i); - } - } - +static void python_vptuple(VALUE_PAIR **vpp, PyObject *pValue, const char *funcname) { + int i; + int tuplesize; + VALUE_PAIR *vp; + + /* If the Python function gave us None for the tuple, then just return. */ + if (pValue == Py_None) + return; + + if (!PyTuple_CheckExact(pValue)) { + radlog(L_ERR, "rlm_python:%s: non-tuple passed", funcname); + return; + } + /* Get the tuple tuplesize. */ + tuplesize = PyTuple_GET_SIZE(pValue); + for (i = 0; i < tuplesize; i++) { + PyObject *pTupleElement = PyTuple_GET_ITEM(pValue, i); + PyObject *pStr1; + PyObject *pStr2; + int pairsize; + const char *s1; + const char *s2; + + if (!PyTuple_CheckExact(pTupleElement)) { + radlog(L_ERR, "rlm_python:%s: tuple element %d is not a tuple", funcname, i); + continue; + } + /* Check if it's a pair */ + if ((pairsize = PyTuple_GET_SIZE(pTupleElement)) != 2) { + radlog(L_ERR, "rlm_python:%s: tuple element %d is a tuple of size %d. Must be 2", funcname, i, pairsize); + continue; + } + pStr1 = PyTuple_GET_ITEM(pTupleElement, 0); + pStr2 = PyTuple_GET_ITEM(pTupleElement, 1); + if ((!PyString_CheckExact(pStr1)) || (!PyString_CheckExact(pStr2))) { + radlog(L_ERR, "rlm_python:%s: tuple element %d must be as (str, str)", funcname, i); + continue; + } + s1 = PyString_AsString(pStr1); + s2 = PyString_AsString(pStr2); + /* xxx Might need to support other T_OP */ + vp = pairmake(s1, s2, T_OP_EQ); + if (vp != NULL) { + pairadd(vpp, vp); + radlog(L_DBG, "rlm_python:%s: '%s' = '%s'", funcname, s1, s2); + } else { + radlog(L_DBG, "rlm_python:%s: Failed: '%s' = '%s'", funcname, s1, s2); + } + } } + /* This is the core Python function that the others wrap around. * Pass the value-pair print strings in a tuple. * xxx We're not checking the errors. If we have errors, what do we do? @@ -483,11 +445,11 @@ static int python_function(REQUEST *requ return_value = PyInt_AsLong(pTupleInt); /* Reply item tuple */ - add_vp_tuple(&request->reply->vps, + python_vptuple(&request->reply->vps, PyTuple_GetItem(pValue, 1), function_name); /* Config item tuple */ - add_vp_tuple(&request->config_items, + python_vptuple(&request->config_items, PyTuple_GetItem(pValue, 2), function_name); } } -- Paul P 'Stingray' Komkoff Jr // http://stingr.net/key <- my pgp key This message represents the official view of the voices in my head
participants (1)
-
Paul P Komkoff Jr