--- rlm_linelog.c.orig	2009-04-15 14:43:50.000000000 +0200
+++ rlm_linelog.c	2009-04-15 14:44:58.000000000 +0200
@@ -195,21 +195,6 @@
 	rlm_linelog_t *inst = (rlm_linelog_t*) instance;
 	const char *value = inst->line;
 
-	/*
-	 *	FIXME: Check length.
-	 */
-	if (strcmp(inst->filename, "syslog") != 0) {
-		radius_xlat(buffer, sizeof(buffer), inst->filename, request,
-			    NULL);
-		
-		fd = open(buffer, O_WRONLY | O_APPEND | O_CREAT, 0600);
-		if (fd == -1) {
-			radlog(L_ERR, "rlm_linelog: Failed to open %s: %s",
-			       buffer, strerror(errno));
-			return RLM_MODULE_FAIL;
-		}
-	}
-
 	if (inst->reference) {
 		CONF_ITEM *ci;
 		CONF_PAIR *cp;
@@ -251,6 +236,21 @@
 	/*
 	 *	FIXME: Check length.
 	 */
+	if (strcmp(inst->filename, "syslog") != 0) {
+		radius_xlat(buffer, sizeof(buffer), inst->filename, request,
+			    NULL);
+		
+		fd = open(buffer, O_WRONLY | O_APPEND | O_CREAT, 0600);
+		if (fd == -1) {
+			radlog(L_ERR, "rlm_linelog: Failed to open %s: %s",
+			       buffer, strerror(errno));
+			return RLM_MODULE_FAIL;
+		}
+	}
+
+	/*
+	 *	FIXME: Check length.
+	 */
 	radius_xlat(line, sizeof(line) - 1, value, request,
 		    linelog_escape_func);
 
