static PyObject * conn_getattr(connobject *self, char *name) { PyObject *res; res = Py_FindMethod(connobjectmethods, (PyObject *)self, name); if (res != NULL) return res; PyErr_Clear(); if (strcmp(name, "base_server") == 0) { /* base_server serverobject is created as needed */ if (self->base_server == NULL) { if (self->conn->base_server == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->base_server = MpServer_FromServer(self->conn->base_server); Py_INCREF(self->base_server); return self->base_server; } } else { Py_INCREF(self->base_server); return self->base_server; } } else if (strcmp(name, "aborted") == 0) { return PyInt_FromLong(self->conn->aborted); } else if (strcmp(name, "keepalive") == 0) { return PyInt_FromLong(self->conn->keepalive); } else if (strcmp(name, "double_reverse") == 0) { return PyInt_FromLong(self->conn->double_reverse); } else if (strcmp(name, "local_addr") == 0) { return makesockaddr(self->conn->local_addr); } #if AP_MODULE_MAGIC_AT_LEAST(20111130,0) else if (strcmp(name, "client_addr") == 0) { return makesockaddr(self->conn->client_addr); } else if (strcmp(name, "remote_addr") == 0) { ap_log_cerror(APLOG_MARK, APLOG_WARNING, 0, self->conn, "%s", "mod_python: conn.remote_addr deprecated in 2.4, " "use req.useragent_addr or conn.client_addr"); return makesockaddr(self->conn->client_addr); #else else if (strcmp(name, "remote_addr") == 0) {
static PyObject * server_getattr(serverobject *self, char *name) { PyObject *res; res = Py_FindMethod(serverobjectmethods, (PyObject *)self, name); if (res != NULL) return res; PyErr_Clear(); if (strcmp(name, "next") == 0) /* server.next serverobject is created as needed */ if (self->next == NULL) { if (self->server->next == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->next = MpServer_FromServer(self->server->next); Py_INCREF(self->next); return self->next; } } else { Py_INCREF(self->next); return self->next; } else if (strcmp(name, "error_log") == 0) return PyInt_FromLong((long)fileno(self->server->error_log)); else if (strcmp(name, "names") == 0) { return tuple_from_array_header(self->server->names); } else if (strcmp(name, "wild_names") == 0) { return tuple_from_array_header(self->server->wild_names); } else return PyMember_Get((char *)self->server, server_memberlist, name); }
static PyObject * request_getattr(requestobject *self, char *name) { PyObject *res; res = Py_FindMethod(requestobjectmethods, (PyObject *)self, name); if (res != NULL) return res; PyErr_Clear(); if (strcmp(name, "connection") == 0) { if (self->connection == NULL) { if (self->request_rec->connection == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->connection = MpConn_FromConn(self->request_rec->connection); Py_INCREF(self->connection); return self->connection; } } else { Py_INCREF(self->connection); return self->connection; } } else if (strcmp(name, "server") == 0) { if (self->server == NULL) { if (self->request_rec->server == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->server = MpServer_FromServer(self->request_rec->server); Py_INCREF(self->server); return self->server; } } else { Py_INCREF(self->server); return self->server; } } else if (strcmp(name, "next") == 0) { if (self->next == NULL) { if (self->request_rec->next == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->next = MpRequest_FromRequest(self->request_rec->next); Py_INCREF(self->next); return self->next; } } else { Py_INCREF(self->next); return self->next; } } else if (strcmp(name, "prev") == 0) { if (self->prev == NULL) { if (self->request_rec->prev == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->prev = MpRequest_FromRequest(self->request_rec->prev); Py_INCREF(self->prev); return self->prev; } } else { Py_INCREF(self->prev); return self->prev; } } else if (strcmp(name, "main") == 0) { if (self->main == NULL) { if (self->request_rec->main == NULL) { Py_INCREF(Py_None); return Py_None; } else { self->main = MpRequest_FromRequest(self->request_rec->main); Py_INCREF(self->main); return self->main; } } else { Py_INCREF(self->main); return self->main; } } else if (strcmp(name, "headers_in") == 0) { Py_INCREF(self->headers_in); return (PyObject *) self->headers_in; } else if (strcmp(name, "headers_out") == 0) { Py_INCREF(self->headers_out); return (PyObject *) self->headers_out; } else if (strcmp(name, "err_headers_out") == 0) { Py_INCREF(self->err_headers_out); return (PyObject *) self->err_headers_out; } else if (strcmp(name, "subprocess_env") == 0) { Py_INCREF(self->subprocess_env); return (PyObject *) self->subprocess_env; } else if (strcmp(name, "notes") == 0) { Py_INCREF(self->notes); return (PyObject *) self->notes; } else if (strcmp(name, "content_languages") == 0) { return tuple_from_array_header(self->request_rec->content_languages); } else if (strcmp(name, "hstack") == 0) { return PyString_FromString(self->hstack); } else if (strcmp(name, "_content_type_set") == 0) { return PyInt_FromLong(self->content_type_set); } else if (strcmp(name, "_Request") == 0) { if (self->Request == NULL) { Py_INCREF(Py_None); return Py_None; } else { Py_INCREF(self->Request); return (PyObject *) self->Request; } } else return PyMember_Get((char *)self->request_rec, request_memberlist, name); }