radiusd -f flag - how it affects custom freeradius module

George Chelidze wrath at geo.net.ge
Fri Jul 17 16:06:57 CEST 2009


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




More information about the Freeradius-Users mailing list