Don't require username & pw in rs_packet_create_acc_request().
[radsecproxy.git] / lib / packet.c
index 1f40766..9ac392d 100644 (file)
@@ -172,7 +172,6 @@ _read_cb (struct bufferevent *bev, void *ctx)
     assert (!"short packet");
 }
 
-#if defined (DEBUG)
 static void
 _evlog_cb (int severity, const char *msg)
 {
@@ -180,6 +179,9 @@ _evlog_cb (int severity, const char *msg)
   switch (severity)
     {
     case _EVENT_LOG_DEBUG:
+#if !defined (DEBUG_LEVENT)
+      return;
+#endif
       sevstr = "debug";
       break;
     case _EVENT_LOG_MSG:
@@ -197,7 +199,6 @@ _evlog_cb (int severity, const char *msg)
     }
   fprintf (stderr, "libevent: [%s] %s\n", sevstr, msg);
 }
-#endif /* DEBUG */
 
 static int
 _init_evb (struct rs_connection *conn)
@@ -206,8 +207,8 @@ _init_evb (struct rs_connection *conn)
     {
 #if defined (DEBUG)
       event_enable_debug_mode ();
-      event_set_log_callback (_evlog_cb);
 #endif
+      event_set_log_callback (_evlog_cb);
       conn->evb = event_base_new ();
       if (!conn->evb)
        return rs_err_conn_push_fl (conn, RSE_EVENT, __FILE__, __LINE__,
@@ -318,14 +319,20 @@ rs_packet_create_acc_request (struct rs_connection *conn,
   pkt = *pkt_out;
   pkt->rpkt->code = PW_AUTHENTICATION_REQUEST;
 
-  if (rs_attr_create (conn, &attr, "User-Name", user_name))
-    return -1;
-  rs_packet_add_attr (pkt, attr);
+  if (user_name)
+    {
+      if (rs_attr_create (conn, &attr, "User-Name", user_name))
+       return -1;
+      rs_packet_add_attr (pkt, attr);
+    }
 
-  if (rs_attr_create (conn, &attr, "User-Password", user_pw))
-    return -1;
-  /* FIXME: need this too? rad_pwencode(user_pw, &pwlen, SECRET, reqauth) */
-  rs_packet_add_attr (pkt, attr);
+  if (user_pw)
+    {
+      if (rs_attr_create (conn, &attr, "User-Password", user_pw))
+       return -1;
+      /* FIXME: need this too? rad_pwencode(user_pw, &pwlen, SECRET, reqauth) */
+      rs_packet_add_attr (pkt, attr);
+    }
 
   return RSE_OK;
 }
@@ -420,6 +427,7 @@ rs_packet_destroy(struct rs_packet *pkt)
 {
   if (pkt)
     {
+      // TODO: free all attributes
       rad_free (&pkt->rpkt);
       rs_free (pkt->conn->ctx, pkt);
     }