I submitted it ot SF http://sourceforge.net/tracker/index.php?func=detail&aid=726288&group_id=3152&atid=303152 but it is quite old already, i have newer version but did not submit it. The idea is same just little improvements. We use this proxy module for 1 year already in th eproduction, no problems at all, it co-exists with normal http driver in the same aolserver process, they both reuse same connection pool.
i am working on generic TCP server using new patch, hope to release it soon.
Basically new driver will look like this, just need to export socket interface to Tcl, so i can read/write to socket from scripts. All Ns_Conn fields are available and C API i used same way as for HTTP connections.
typedef struct { char *server; char *initproc; char *dataproc; Ns_Driver *driver; } TcpServer;
NS_EXPORT int Ns_ModuleInit(char *server, char *module) { TcpServer *serverPtr; Ns_DriverInitData init;
serverPtr = ns_calloc(1,sizeof(TcpServer)); serverPtr->server = server; serverPtr->initproc = Ns_ConfigGet(path,"initproc"); serverPtr->heloproc = Ns_ConfigGet(path,"dataproc");
init.version = NS_DRIVER_VERSION_1; init.name = "tcpserver"; init.proc = TcpServerProc; init.opts = NS_DRIVER_RAW; init.arg = serverPtr; init.path = NULL;
if(Ns_DriverInit(server, module, &init) != NS_OK) { Ns_Log(Error, "nstcpserver: driver init failed."); return NS_ERROR; } return NS_OK }
static int TcpServerProc(Ns_DriverCmd cmd, Ns_Sock *sock, struct iovec *bufs, int nbufs) { TcpServer *server = sock->driver->arg;
switch(cmd) { case DriverStart: server->driver = sock->driver; if(server->initproc) Ns_TclEval(0,server->server,server->initproc); return NS_OK;
case DriverError: sleep(3); exit(0); break;
case DriverProc: TcpServerThread(server,sock); return NS_FILTER_BREAK;
case DriverRecv: case DriverSend: case DriverKeep: case DriverClose: break; } return NS_ERROR; }
static void TcpServerThread(TcpServer *server,Ns_Sock *sock) { Ns_Conn *nsconn = Ns_GetConn();
TclInterp *interp = Ns_GetConnInterp(nsconn);
if(interp && server->dataproc) Ns_TclEval(0,server->server,server->dataproc);
}
Andrew Piskorski wrote:
On Fri, May 28, 2004 at 12:58:36PM -0400, Vlad Seryakov wrote:
I have patch that convert aolserver into generic threaded server platform. I had to write SMTP proxy server and it required just a small patch to change default HTTP-aware behaiviour of server thread. Now it supports generic drivers and uses same thread pools/connection driver as for http communications.
That sounds quite useful. Vlad, where is this patch available? Dossy or others, can it go into the standard AOLserver sources?
-- Andrew Piskorski <[EMAIL PROTECTED]> http://www.piskorski.com/
-- AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.
-- Vlad Seryakov 703 488-2173 office [EMAIL PROTECTED] http://www.crystalballinc.com/vlad/
-- AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.