#define DEBUG4 if (debug_flag > 3) log_debug
#if __GNUC__ >= 3
-#define RDEBUG(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 1, request, fmt, ## __VA_ARGS__)
+#define RDEBUG(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 1, request, fmt, ## __VA_ARGS__)
#define RDEBUGW(fmt, ...) if(request && request->radlog) request->radlog(L_DBG_WARN, 1, request, fmt, ## __VA_ARGS__)
-#define RDEBUGE(fmt, ...) if(request && request->radlog) request->radlog(L_DBG_ERR, 1, request, fmt, ## __VA_ARGS__)
-
-#define RDEBUG2(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 2, request, fmt, ## __VA_ARGS__)
-#define RDEBUG2W(fmt, ...) if(request && request->radlog) request->radlog(L_DBG_WARN, 2, request, fmt, ## __VA_ARGS__)
-#define RDEBUG2E(fmt, ...) if(request && request->radlog) request->radlog(L_DBG_ERR, 2, request, fmt, ## __VA_ARGS__)
+#define RDEBUGE(fmt, ...) do { if(request) { \
+ module_failure_msg(request, fmt, ## __VA_ARGS__); \
+ if (request->radlog) request->radlog(L_DBG_ERR, 1, request, fmt, ## __VA_ARGS__); \
+ } \
+ } while(0)
+
+#define RDEBUG2(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 2, request, fmt, ## __VA_ARGS__)
+#define RDEBUG2W(fmt, ...) if(request && request->radlog) request->radlog(L_DBG_WARN, 2, request, fmt, ## __VA_ARGS__)
+#define RDEBUG2E(fmt, ...) do { if(request) { \
+ module_failure_msg(request, fmt, ## __VA_ARGS__); \
+ if (request->radlog) request->radlog(L_DBG_ERR, 2, request, fmt, ## __VA_ARGS__); \
+ } \
+ } while(0)
#define RDEBUG3(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 3, request, fmt, ## __VA_ARGS__)
#define RDEBUG4(fmt, ...) if(request && request->radlog) request->radlog(L_DBG, 4, request, fmt, ## __VA_ARGS__)
}
#endif
+/** Add a module failure message VALUE_PAIR to the request
+ */
char *module_failure_msg(REQUEST *request, const char *fmt, ...)
{
+ size_t len;
va_list ap;
VALUE_PAIR *vp;
vp = paircreate(request->packet, PW_MODULE_FAILURE_MESSAGE, 0);
if (!vp) {
va_end(ap);
+
return NULL;
}
- vsnprintf(vp->vp_strvalue, sizeof(vp->vp_strvalue), fmt, ap);
+ len = snprintf(vp->vp_strvalue, sizeof(vp->vp_strvalue), "%s: ",
+ request->module);
+ vsnprintf(vp->vp_strvalue + len, sizeof(vp->vp_strvalue) - len, fmt,
+ ap);
pairadd(&request->packet->vps, vp);
- return vp->vp_strvalue;
+ return vp->vp_strvalue + len;
}
msg[len - 1] = '\0';
}
- module_failure_msg(request, "rlm_exec (%s): %s",
- inst->xlat_name, msg);
+ RDEBUGE("%s", msg);
}
return result-1;
pairfree(&tmp);
if (result < 0) {
- RDEBUG2("%s", module_failure_msg(request, "rlm_exec (%s): "
- "Login incorrect (external "
- "check failed)",
- inst->xlat_name));
+ RDEBUGE("Login incorrect (external check failed)");
request->reply->code = PW_AUTHENTICATION_REJECT;
return RLM_MODULE_REJECT;
*/
request->reply->code = PW_AUTHENTICATION_REJECT;
- RDEBUG2("%s", module_failure_msg(request, "rlm_exec (%s): "
- "Login incorrect (external "
- "check said so)",
- inst->xlat_name));
+ RDEBUGE("Login incorrect (external check said so)");
return RLM_MODULE_REJECT;
}