diff --git a/src/connobject.c b/src/connobject.c
index 6f029a44..6c62bada 100644
--- a/src/connobject.c
+++ b/src/connobject.c
@@ -40,7 +40,7 @@
PyObject * MpConn_FromConn(conn_rec *c)
{
connobject *result;
-
+ MpConn_Type.ob_type = &PyType_Type;
result = PyObject_New(connobject, &MpConn_Type);
if (! result)
return PyErr_NoMemory();
@@ -325,7 +325,7 @@ static PyObject * conn_getattr(connobject *self, char *name)
{
PyObject *res;
-
+ PyMemberDef *md;
PyMethodDef *ml = connobjectmethods;
for (; ml->ml_name != NULL; ml++) {
if (name[0] == ml->ml_name[0] &&
@@ -404,7 +404,7 @@ static PyObject * conn_getattr(connobject *self, char *name)
"use req.useragent_ip or conn.client_ip");
}
#endif
- PyMemberDef *md = find_memberdef(conn_memberlist, name);
+ md = find_memberdef(conn_memberlist, name);
if (!md) {
PyErr_SetString(PyExc_AttributeError, name);
return NULL;
@@ -446,7 +446,7 @@ static int conn_setattr(connobject *self, char* name, PyObject* value)
}
PyTypeObject MpConn_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_conn", /* tp_name */
sizeof(connobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/filterobject.c b/src/filterobject.c
index 966d2f8b..98256c81 100644
--- a/src/filterobject.c
+++ b/src/filterobject.c
@@ -78,7 +78,7 @@ PyObject *MpFilter_FromFilter(ap_filter_t *f, apr_bucket_brigade *bb, int is_inp
char * handler, char *dir)
{
filterobject *result;
-
+ MpFilter_Type.ob_type = &PyType_Type;
result = PyObject_New(filterobject, &MpFilter_Type);
if (! result)
return PyErr_NoMemory();
@@ -540,12 +540,13 @@ static PyObject * filter_getattr(filterobject *self, char *name)
static int filter_setattr(filterobject *self, char *name, PyObject *v)
{
+ PyMemberDef *md;
if (v == NULL) {
PyErr_SetString(PyExc_AttributeError,
"can't delete filter attributes");
return -1;
}
- PyMemberDef *md = find_memberdef(filter_memberlist, name);
+ md = find_memberdef(filter_memberlist, name);
if (!md) {
PyErr_SetString(PyExc_AttributeError, name);
return -1;
@@ -554,7 +555,7 @@ static int filter_setattr(filterobject *self, char *name, PyObject *v)
}
PyTypeObject MpFilter_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_filter", /* tp_name */
sizeof(filterobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/finfoobject.c b/src/finfoobject.c
index cf3b226e..0aa9aa35 100644
--- a/src/finfoobject.c
+++ b/src/finfoobject.c
@@ -35,7 +35,7 @@
PyObject * MpFinfo_FromFinfo(apr_finfo_t *f)
{
finfoobject *result;
-
+ MpFinfo_Type.ob_type = &PyType_Type;
result = PyObject_New(finfoobject, &MpFinfo_Type);
if (! result)
return PyErr_NoMemory();
@@ -377,7 +377,7 @@ static PyObject *finfo_repr(finfoobject *self)
}
PyTypeObject MpFinfo_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_finfo", /* tp_name */
sizeof(finfoobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/hlistobject.c b/src/hlistobject.c
index ede227a2..af956c1c 100644
--- a/src/hlistobject.c
+++ b/src/hlistobject.c
@@ -36,7 +36,7 @@
PyObject *MpHList_FromHLEntry(hl_entry *hle)
{
hlistobject *result;
-
+ MpHList_Type.ob_type = &PyType_Type;
result = PyObject_New(hlistobject, &MpHList_Type);
if (! result)
PyErr_NoMemory();
@@ -92,6 +92,7 @@ static void hlist_dealloc(hlistobject *self)
static PyObject *hlist_getattr(hlistobject *self, char *name)
{
PyObject *res;
+ PyMemberDef *md;
PyMethodDef *ml = hlistmethods;
for (; ml->ml_name != NULL; ml++) {
@@ -109,7 +110,7 @@ static PyObject *hlist_getattr(hlistobject *self, char *name)
return Py_None;
}
- PyMemberDef *md = find_memberdef(hlist_memberlist, name);
+ md = find_memberdef(hlist_memberlist, name);
if (!md) {
PyErr_SetString(PyExc_AttributeError, name);
return NULL;
@@ -164,7 +165,7 @@ static PyObject *hlist_repr(hlistobject *self)
}
PyTypeObject MpHList_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_hlist", /* tp_name */
sizeof(hlistobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/mod_python.c b/src/mod_python.c
index 5404084e..759b9147 100644
--- a/src/mod_python.c
+++ b/src/mod_python.c
@@ -1153,6 +1153,7 @@ static const char *python_directive_handler(cmd_parms *cmd, py_config* conf,
char d_is_fnmatch = 0;
char d_is_location = 0;
ap_regex_t *regex = NULL;
+ const char *exts;
determine_context(cmd->pool, cmd, &directory, &d_is_fnmatch, &d_is_location, ®ex);
@@ -1169,7 +1170,7 @@ static const char *python_directive_handler(cmd_parms *cmd, py_config* conf,
* PythonHandler.ext2 foo
*/
- const char *exts = val;
+ exts = val;
val = ap_getword(cmd->pool, &exts, '|');
if (*exts == '\0') {
@@ -2609,6 +2610,7 @@ static void PythonChildInitHandler(apr_pool_t *p, server_rec *s)
const apr_array_header_t *ah;
apr_table_entry_t *elts;
int i;
+ interpreterdata *idata;
py_config *conf = ap_get_module_config(s->module_config, &python_module);
py_global_config *glb;
@@ -2618,7 +2620,7 @@ static void PythonChildInitHandler(apr_pool_t *p, server_rec *s)
PyEval_RestoreThread(global_tstate);
PyOS_AfterFork();
- interpreterdata *idata = save_interpreter(MAIN_INTERPRETER, PyThreadState_Get());
+ idata = save_interpreter(MAIN_INTERPRETER, PyThreadState_Get());
if (!idata)
ap_log_error(APLOG_MARK, APLOG_ERR, 0, main_server,
"PythonChildInitHandler: save_interpreter() returned NULL. No more memory?");
diff --git a/src/mod_python.sln b/src/mod_python.sln
new file mode 100644
index 00000000..7aa324c6
--- /dev/null
+++ b/src/mod_python.sln
@@ -0,0 +1,17 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_python", "mod_python.vcxproj", "{91935325-716F-4776-825B-7A2250320FC1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {91935325-716F-4776-825B-7A2250320FC1}.Release|Win32.ActiveCfg = Release|Win32
+ {91935325-716F-4776-825B-7A2250320FC1}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/mod_python.vcxproj b/src/mod_python.vcxproj
new file mode 100644
index 00000000..a1d882d0
--- /dev/null
+++ b/src/mod_python.vcxproj
@@ -0,0 +1,102 @@
+
+
+
+
+ Release
+ Win32
+
+
+
+ {91935325-716F-4776-825B-7A2250320FC1}
+
+
+
+
+
+ DynamicLibrary
+ Static
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.40219.1
+ .\Release\
+ .\Release\
+ false
+ AllRules.ruleset
+
+
+
+
+
+ OnlyExplicitInline
+ include;$(PYTHONSRC)\include;$(APACHESRC)\include;C:\Python27\include;C:\tools\httpd-2.4.6\include;C:\tools\apr-1.4.8\include;C:\tools\apr-util-1.5.2\include;C:\tools\httpd-2.4.6\os\win32;C:\tools\httpd-2.4.6\modules\filters;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ true
+ MultiThreaded
+ true
+
+
+ .\Release/mod_python.pch
+ .\Release/
+ .\Release/
+ .\Release/
+ Level3
+ true
+ Default
+
+
+ /MACHINE:I386 %(AdditionalOptions)
+ libhttpd.lib;apr-1.lib;libapriconv-1.lib;libapr-1.lib;libaprutil-1.lib;ws2_32.lib;%(AdditionalDependencies)
+ .\Release/mod_python.so
+ true
+ $(APACHESRC)\lib;$(PYTHONSRC)\libs;C:\tools\Apache24\lib;C:\Python27\libs;%(AdditionalLibraryDirectories)
+ .\Release/mod_python.pdb
+ .\Release/mod_python.lib
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ true
+ true
+ Win32
+ .\Release/mod_python.tlb
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mod_python.vcxproj.filters b/src/mod_python.vcxproj.filters
new file mode 100644
index 00000000..e65b6494
--- /dev/null
+++ b/src/mod_python.vcxproj.filters
@@ -0,0 +1,51 @@
+
+
+
+
+ {a90f906b-139f-461b-9179-9f6767afec72}
+
+
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/requestobject.c b/src/requestobject.c
index 7569335c..035a06b9 100644
--- a/src/requestobject.c
+++ b/src/requestobject.c
@@ -47,7 +47,7 @@ static APR_OPTIONAL_FN_TYPE(ssl_is_https) *optfn_is_https = NULL;
PyObject * MpRequest_FromRequest(request_rec *req)
{
requestobject *result;
-
+ MpRequest_Type.ob_type = &PyType_Type;
result = PyObject_GC_New(requestobject, &MpRequest_Type);
if (! result)
return PyErr_NoMemory();
@@ -221,13 +221,13 @@ static PyObject *req_build_wsgi_env(requestobject *self)
apr_table_t *e = r->subprocess_env;
PyObject *env, *v;
const char *val;
- int i, j;
+ int i, j, rc;
env = PyDict_New();
if (!env)
return NULL;
- int rc = set_wsgi_path_info(self);
+ rc = set_wsgi_path_info(self);
if (rc == 1) {
/* bad base_uri, the error is already set */
Py_DECREF(env);
@@ -984,6 +984,10 @@ static PyObject * req_get_remote_host(requestobject *self, PyObject *args)
static PyObject * req_get_options(requestobject *self, PyObject *args)
{
+ const apr_array_header_t* ah;
+ apr_table_entry_t* elts;
+ int i;
+
py_config *conf =
(py_config *) ap_get_module_config(self->request_rec->per_dir_config,
&python_module);
@@ -993,9 +997,9 @@ static PyObject * req_get_options(requestobject *self, PyObject *args)
if (((tableobject*)self->options)->table != conf->options)
((tableobject*)self->options)->table = conf->options;
- const apr_array_header_t* ah = apr_table_elts(conf->options);
- apr_table_entry_t* elts = (apr_table_entry_t *) ah->elts;
- int i;
+ ah = apr_table_elts(conf->options);
+ elts = (apr_table_entry_t *) ah->elts;
+
/* Remove the empty values as a way to unset values.
* See https://issues.apache.org/jira/browse/MODPYTHON-6 */
@@ -1899,6 +1903,7 @@ static PyObject *getreq_recmbr(requestobject *self, void *name)
static int setreq_recmbr(requestobject *self, PyObject *val, void *name)
{
char *v;
+ PyMemberDef *md;
if (strcmp(name, "content_type") == 0) {
MP_ANYSTR_AS_STR(v, val, 1);
if (!v) {
@@ -2037,7 +2042,7 @@ static int setreq_recmbr(requestobject *self, PyObject *val, void *name)
return 0;
}
- PyMemberDef *md = find_memberdef(request_rec_mbrs, name);
+ md = find_memberdef(request_rec_mbrs, name);
if (!md) {
PyErr_SetString(PyExc_AttributeError, name);
return -1;
@@ -2377,7 +2382,7 @@ static char request_doc[] =
"Apache request_rec structure\n";
PyTypeObject MpRequest_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_request", /* tp_name */
sizeof(requestobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/serverobject.c b/src/serverobject.c
index d540988a..8e953032 100644
--- a/src/serverobject.c
+++ b/src/serverobject.c
@@ -36,7 +36,7 @@
PyObject * MpServer_FromServer(server_rec *s)
{
serverobject *result;
-
+ MpServer_Type.ob_type = &PyType_Type;
result = PyObject_New(serverobject, &MpServer_Type);
if (! result)
return PyErr_NoMemory();
@@ -237,6 +237,7 @@ static PyMemberDef server_rec_mbrs[] = {
static PyObject *getsrv_recmbr(serverobject *self, void *name)
{
+ PyMemberDef *md;
if (strcmp(name, "_server_rec") == 0) {
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7
return PyCObject_FromVoidPtr(self->server, 0);
@@ -246,7 +247,7 @@ static PyObject *getsrv_recmbr(serverobject *self, void *name)
}
- PyMemberDef *md = find_memberdef(server_rec_mbrs, name);
+ md = find_memberdef(server_rec_mbrs, name);
if (!md) {
PyErr_SetString(PyExc_AttributeError, name);
return NULL;
@@ -374,7 +375,7 @@ static char server_doc[] =
"Apache server_rec structure\n";
PyTypeObject MpServer_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_server", /* tp_name */
sizeof(serverobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/tableobject.c b/src/tableobject.c
index 49ce4b99..ee12bc84 100644
--- a/src/tableobject.c
+++ b/src/tableobject.c
@@ -50,7 +50,7 @@ PyObject * MpTable_FromTable(apr_table_t *t)
tableobject *result;
TABLE_DEBUG("MpTable_FromTable");
-
+ MpTable_Type.ob_type = &PyType_Type;
result = PyObject_New(tableobject, &MpTable_Type);
if (! result)
return PyErr_NoMemory();
@@ -1183,7 +1183,7 @@ static char mp_table_doc[] =
" d[k] = v";
PyTypeObject MpTable_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"mp_table", /* tp_name */
sizeof(tableobject), /* tp_basicsize */
0, /* tp_itemsize */
@@ -1247,7 +1247,7 @@ static PyObject *tableiter_new(tableobject *table, tableselectfunc select)
tableiterobject *ti;
TABLE_DEBUG("tableiter_new");
-
+ MpTableIter_Type.ob_type = &PyType_Type;
ti = PyObject_NEW(tableiterobject, &MpTableIter_Type);
if (ti == NULL)
return NULL;
@@ -1333,7 +1333,7 @@ static PyObject *tableiter_iternext(tableiterobject *ti)
}
PyTypeObject MpTableIter_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ PyVarObject_HEAD_INIT(NULL, 0)
"dictionary-iterator", /* tp_name */
sizeof(tableiterobject), /* tp_basicsize */
0, /* tp_itemsize */
diff --git a/src/version.c b/src/version.c
new file mode 100644
index 00000000..eb040e62
--- /dev/null
+++ b/src/version.c
@@ -0,0 +1,8 @@
+/* THIS FILE IS AUTO-GENERATED BY Makefile */
+#include "mp_version.h"
+const char * const mp_git_sha = "54d42b1";
+const int mp_version_major = MP_VERSION_MAJOR;
+const int mp_version_minor = MP_VERSION_MINOR;
+const int mp_version_patch = MP_VERSION_PATCH;
+const char * const mp_version_string = MP_VERSION_STRING(MP_VERSION_MAJOR,MP_VERSION_MINOR,MP_VERSION_PATCH) "-54d42b1";
+const char * const mp_version_component = "mod_python/" MP_VERSION_STRING(MP_VERSION_MAJOR,MP_VERSION_MINOR,MP_VERSION_PATCH) "-54d42b1";
\ No newline at end of file