On Mon, Aug 24, 2009 at 00:08, Alexander Farber<alexander.far...@gmail.com> wrote: > Hello, > > I have a multiplayer game with Flash clients: > > 1) The Flash client sends HTTP requests to the Apache module, > 2) then the module write()s it over a Unix pipe to the game daemon, > 3) then the Apache module read()s the daemon's response > 4) and finally ap_rwrite()s it back to the browser. > > Because I want to implement a "server push", > my game daemon doesn't write() anything back > to the Apache module when there are no new infos, > but blocks instead (i.e. the step 3 above blocks). > > When the blocking HTTP requests timeouts, > I notice this at the Flash client and just restart it. > > My problem is that at the game daemon side > I don't notice this, since the Apache module > itself can only notice the timeout in the step 4 > (but it doesn't come sofar - it blocks in step 3). > > So I think I should select() or poll() on 2 fds > in my Apache module - one is the Unix pipe > to the game daemon and another fd should > be the socket fd to the browser. > > My question is how do I retrieve the latter fd, > so that I can select() or poll() on it? >
Hook pre_connection(conn_rec *c, void *csd) The csd is the abstract type apr_socket_t. This one has a field socketdes. I think this is the descriptor you are looking for. Please note that I base my recommendation on Apache 2.2.x (not 1.3.x)! Also, I have not tried out the solution I'm proposing ;-). S > Thank you > Alex > > PS: I'm using Apache 1.3.29 on OpenBSD 4.5 with > "KeepAlive On" and "KeepAliveTimeout 300" > -- A: Because it reverses the logical flow of conversation. Q: Why is top-posting frowned upon? A: Top-posting. Q: What is the most annoying thing in e-mail?