radiusd -f flag - how it affects custom freeradius module
Hello, Recently I have developed a custom module for freeradius 2.1.6 following http://wiki.freeradius.org/Modules2 document. The purpose of this module is to translate authorization requests to Tibco Rendezvous messages (Commercial software - Message Bus), send them to some external application, get the reply back and accept or reject based on this reply. I use client libraries to communicate with tibco rendezvous daemon (rvd) through some IPC mechanism (I think it's tcp sockets). The problem is that when I start freeradius with -f flag client application can send and receive data without any problem. When I start freeradius without any arguments, it can send data but can't receive it, while sniffing the network indicates that response is actually delivered back from rvd. So what's so specific with -f? How can fork()/setsid() break something? Below is a piece of problematic code: rv_status = tibrvTransport_SendRequest(transport, tibrv_msg, &tibrv_msg_reply, request_timeout * 1.0 / 1000); if (rv_status != TIBRV_OK && rv_status != TIBRV_TIMEOUT) { radlog(L_ERR, "rlm_custom_auth: tibrvTransport_SendRequest() failed. Error = \"%s\"", tibrvStatus_GetText(rv_status)); tibrvMsg_destroy(tibrv_msg); return RLM_MODULE_REJECT; } if (rv_status == TIBRV_TIMEOUT) { radlog(L_ERR, "rlm_custom_auth: tibrvTransport_SendRequest() timed out"); tibrvMsg_destroy(tibrv_msg); return RLM_MODULE_REJECT; } so, every time I start freeradius without -f I get: rlm_custom_auth: tibrvTransport_SendRequest() timed out I understand that this problem is very specific to tibco rendezvous which isn't the open source. It will be great if you can share your ideas about the issue. Thanks in advance, George Chelidze
participants (1)
-
George Chelidze