Greg Stein
gstein at lyra.org
Thu May 25 19:12:10 EST 2000
There are a number of issues that I see with mod_python.c. I'll try to address a good number of them here, but I'm invariably going to miss some. After some changes are made, then another pass can be done at that point. Please try to take this constructively... the goal is to improve the code... :-) *) when storing the tstate into obcallback, use a PyCObject rather than an integer. That will avoid the (int) casting (a no-no) *) noop is not needed; use ap_null_cleanup() (I think that's the name; close to it, at least) *) simplify make_obcallback(): the two params are always NULL *) I don't understand why the PyTypeObject's are init'd/copied in python_init, rather than just doing that at the module level. For example: static PyTypeObject serverobjecttype = { ... }; *) use PyImport_Import() rather than PyRun_SimpleString to get the module imported. This returns the "mod_python" or "mod_python.apache" module (I forget which; probably the former). *) use PyObject_CallMethod() to call the "init" method in the module retrieved from above. Use the *return* value for obCallBack, rather than the SetCallback nastiness. *) in python_directive, just use a cast to (py_dir_config *) rather than all the offset stuff. Also, there is no need to dup() the string since it is a constant. *) unused: python_dict_merge, table2dict, print_table, print_array *) exit(1) should not be used; use ap_log_rerror() and return failure codes to Apache *) rather than storing the "request object" into r->notes, place it into tstate->dict. you won't have to do the atoi() stuff (which is Bad anyways) *) use ap_log_rerror() instead of ap_log_error(). the former is better from a logging standpoint (it has more info) That's all for now! Cheers, -g -- Greg Stein, http://www.lyra.org/ _______________________________________________ Mod_python mailing list Mod_python at modpython.org http://www.modpython.org/mailman/listinfo/mod_python
|