Hi! I'm facing a strange problem which I'm unable to resolve for about a week, so I decided to ask in the list as a last resort.
I've got a system which collects requests from custom freeradius account module, stores them in persistent queue on disk and then serves to the agents, which put them into postgres afterwards. Here's a brief arch image: http://imageshack.us/photo/my-images/821/archn.png/ In radius module a single 0mq socket (REQ) is instantiated which is later used for sending requests to collector. Collector is a separate process which binds on the REP socket (tcp, on the same port as radius module, of course) Collector's loop code: http://pastebin.com/xuN4pitv Radius module code: http://pastebin.com/HhUK4nGG It uses mutexes as radius calls the function from various threads. xsend function is a basic wrapper: http://pastebin.com/V3dG0kV9 So, the problem is: when the radius initiates the module, it successfully creates the context and the socket. But, when it tries to send a message to the collector, the following happens: Send operation reports ok (code 0), but when it tries to receive afterwards it blocks. And the collector doesn't receive the data sent by module! I've put a lot of debug printfs all around and the collector just doesn't seem to complete the recv function call. But what is the most strange in all this is that if I run radius with debug flag (-X) which tell it to run in single threaded and in foreground - everything works just as planned - modules sends messages to collector, collector replies etc. Even when I supply a -f option to radiusd, which just evades calling fork() it still works. It doesn't only when radius daemon is run in background. So, basically this is what I cannot understand, if it didn't work in any case I'd understand, but this... Maybe anybody could came up with any idea about what's wrong here. I'd be greatly appreciated! -- ~syhpoon _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
