Code

Renamed CONNECTION_* constants to SDB_CONNECTION_*.
[sysdb.git] / src / frontend / session.c
index b1e527a06708e53a74e94a071d4d9fb82cf04037..b0fc7803e2a0e23ab53a05cc6a1c694c4251b824 100644 (file)
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#if HAVE_CONFIG_H
+#      include "config.h"
+#endif /* HAVE_CONFIG_H */
+
 #include "sysdb.h"
 
-#include "frontend/connection.h"
+#include "frontend/connection-private.h"
+
+#include <string.h>
 
 /*
  * public API
  */
 
 int
-sdb_session_start(sdb_conn_t *conn)
+sdb_fe_session_start(sdb_conn_t *conn)
 {
+       const char *username;
+
        if ((! conn) || (conn->username))
                return -1;
 
-       if (conn->cmd != CONNECTION_STARTUP)
+       if (conn->cmd != SDB_CONNECTION_STARTUP)
                return -1;
 
+       username = sdb_strbuf_string(conn->buf);
+       if ((! username) || (! conn->cmd_len) || (! *username)) {
+               sdb_strbuf_sprintf(conn->errbuf, "Invalid empty username");
+               return -1;
+       }
+
        /* XXX: for now, simply accept all connections */
-       sdb_connection_send(conn, CONNECTION_OK, 0, NULL);
+       conn->username = strndup(username, conn->cmd_len);
+       if (! conn->username) {
+               sdb_strbuf_sprintf(conn->errbuf, "Authentication failed");
+               return -1;
+       }
+       sdb_connection_send(conn, SDB_CONNECTION_OK, 0, NULL);
+       conn->ready = 1;
        return 0;
-} /* session_start */
+} /* sdb_fe_session_start */
 
 /* vim: set tw=78 sw=4 ts=4 noexpandtab : */