public function send()
    {
        $req = radius_send_request($this->res);
        if (!$req) {
            throw new Auth_RADIUS_Exception('Error sending request: ' . $this->getError());
        }

        switch($req) {
            case RADIUS_ACCESS_ACCEPT:
                if (is_subclass_of($this, 'auth_radius_acct')) {
                    throw new Auth_RADIUS_Exception('RADIUS_ACCESS_ACCEPT is unexpected for accounting');
                }
                return true;

            case RADIUS_ACCESS_REJECT:
                return false;

            case RADIUS_ACCOUNTING_RESPONSE:
                if (is_subclass_of($this, 'auth_radius_pap')) {
                    throw new Auth_RADIUS_Exception('RADIUS_ACCOUNTING_RESPONSE is unexpected for authentication');
                }
                return true;

            default:
                throw new Auth_RADIUS_Exception("Unexpected return value: $req");
        }

    }