2 ashd - A Sane HTTP Daemon
3 Copyright (C) 2008 Fredrik Tolf <fredrik@dolda2000.com>
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include <ashd/utils.h>
23 #include <ashd/proc.h>
25 static PyObject *p_recvfd(PyObject *self, PyObject *args)
33 if(!PyArg_ParseTuple(args, "|i", &fd))
36 Py_BEGIN_ALLOW_THREADS;
37 ret = recvfd(fd, &data, &dlen);
41 return(Py_BuildValue("OO", Py_None, Py_None));
43 if(PyErr_CheckSignals())
47 PyErr_SetFromErrno(PyExc_OSError);
50 ro = Py_BuildValue("Ni", PyString_FromStringAndSize(data, dlen), ret);
56 static PyObject *p_sendfd(PyObject *self, PyObject *args)
61 if(!PyArg_ParseTuple(args, "iiO", &sock, &fd, &data))
63 if(!PyString_Check(data)) {
64 PyErr_SetString(PyExc_TypeError, "datagram must be a string");
68 Py_BEGIN_ALLOW_THREADS;
69 ret = sendfd(sock, fd, PyString_AsString(data), PyString_Size(data));
73 if(PyErr_CheckSignals())
77 PyErr_SetFromErrno(PyExc_OSError);
84 static PyMethodDef methods[] = {
85 {"recvfd", p_recvfd, METH_VARARGS, "Receive a datagram and a file descriptor"},
86 {"sendfd", p_sendfd, METH_VARARGS, "Send a datagram and a file descriptor"},
90 PyMODINIT_FUNC inithtlib(void)
92 Py_InitModule("ashd.htlib", methods);