List:Commits« Previous MessageNext Message »
From:rburnett Date:July 20 2007 7:09pm
Subject:Connector/NET commit: r795 - trunk/MySql.Web/Providers/Source
View as plain text  
Modified:
   trunk/MySql.Web/Providers/Source/MembershipProvider.cs
Log:
Fixed problem reported by user where MySqlMembershipProvider.GetUser was attempting to reuse the connection to update a table while a reader was open on it.    (take 2 -- forgot a method)


Modified: trunk/MySql.Web/Providers/Source/MembershipProvider.cs
===================================================================
--- trunk/MySql.Web/Providers/Source/MembershipProvider.cs	2007-07-20 19:00:58 UTC (rev 794)
+++ trunk/MySql.Web/Providers/Source/MembershipProvider.cs	2007-07-20 19:09:22 UTC (rev 795)
@@ -624,24 +624,24 @@
                 try
                 {
                     conn.Open();
+                    MembershipUser user;
                     using (MySqlDataReader reader = cmd.ExecuteReader())
                     {
                         if (!reader.Read()) return null;
-                        MembershipUser u = GetUserFromReader(reader);
-                        reader.Close();
-                        if (userIsOnline)
-                        {
-                            MySqlCommand updateCmd = new MySqlCommand(
-                                @"UPDATE mysql_Membership SET LastActivityDate = ?LastActivityDate 
-                            WHERE Username = ?Username AND Applicationname = ?Applicationname",
-                                conn);
-                            updateCmd.Parameters.Add("?LastActivityDate", MySqlDbType.Datetime).Value = DateTime.Now;
-                            updateCmd.Parameters.Add("?Username", MySqlDbType.VarChar, 255).Value = username;
-                            updateCmd.Parameters.Add("?ApplicationName", MySqlDbType.VarChar, 255).Value = pApplicationName;
-                            updateCmd.ExecuteNonQuery();
-                        }
-                        return u;
+                        user = GetUserFromReader(reader);
                     }
+                    if (userIsOnline)
+                    {
+                        MySqlCommand updateCmd = new MySqlCommand(
+                            @"UPDATE mysql_Membership SET LastActivityDate = ?LastActivityDate 
+                        WHERE Username = ?Username AND Applicationname = ?Applicationname",
+                            conn);
+                        updateCmd.Parameters.Add("?LastActivityDate", MySqlDbType.Datetime).Value = DateTime.Now;
+                        updateCmd.Parameters.Add("?Username", MySqlDbType.VarChar, 255).Value = username;
+                        updateCmd.Parameters.Add("?ApplicationName", MySqlDbType.VarChar, 255).Value = pApplicationName;
+                        updateCmd.ExecuteNonQuery();
+                    }
+                    return user;
                 }
                 catch (MySqlException e)
                 {
@@ -657,58 +657,45 @@
 
         public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
         {
-            MySqlConnection conn = new MySqlConnection(connectionString);
-            MySqlCommand cmd =
-                new MySqlCommand(
-                    @"SELECT PKID, Username, Email, PasswordQuestion,
+            using (MySqlConnection conn = new MySqlConnection(connectionString))
+            {
+                MySqlCommand cmd = new MySqlCommand(@"SELECT PKID, Username, Email, PasswordQuestion,
                 Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate,
                 LastActivityDate, LastPasswordChangedDate, LastLockedOutDate
-                FROM mysql_Membership WHERE PKID = ?PKID",
-                    conn);
-            cmd.Parameters.Add("?PKID", MySqlDbType.VarChar).Value = providerUserKey.ToString();
-            MembershipUser u = null;
-            MySqlDataReader reader = null;
-            try
-            {
-                conn.Open();
-                reader = cmd.ExecuteReader();
-                if (reader.HasRows)
+                FROM mysql_Membership WHERE PKID = ?PKID", conn);
+                cmd.Parameters.Add("?PKID", MySqlDbType.VarChar).Value = providerUserKey.ToString();
+
+                try
                 {
-                    reader.Read();
-                    u = GetUserFromReader(reader);
+                    conn.Open();
+                    MembershipUser user;
+                    using (MySqlDataReader reader = cmd.ExecuteReader())
+                    {
+                        if (!reader.Read()) return null;
+                        user = GetUserFromReader(reader);
+                    }
+
                     if (userIsOnline)
                     {
                         MySqlCommand updateCmd = new MySqlCommand(
                             @"UPDATE mysql_Membership SET LastActivityDate = ?LastActivityDate
-                            WHERE PKID = ?PKID",
-                            conn);
+                            WHERE PKID = ?PKID", conn);
                         updateCmd.Parameters.Add("?LastActivityDate", MySqlDbType.Datetime).Value = DateTime.Now;
                         updateCmd.Parameters.Add("?PKID", MySqlDbType.VarChar).Value = providerUserKey.ToString();
                         updateCmd.ExecuteNonQuery();
                     }
+                    return user;
                 }
-            }
-            catch (MySqlException e)
-            {
-                if (WriteExceptionsToEventLog)
+                catch (MySqlException e)
                 {
-                    WriteToEventLog(e, "GetUser(Object, Boolean)");
-                    throw new ProviderException(exceptionMessage);
-                }
-                else
-                {
+                    if (WriteExceptionsToEventLog)
+                    {
+                        WriteToEventLog(e, "GetUser(Object, Boolean)");
+                        throw new ProviderException(exceptionMessage);
+                    }
                     throw;
                 }
             }
-            finally
-            {
-                if (!(reader == null))
-                {
-                    reader.Close();
-                }
-                conn.Close();
-            }
-            return u;
         }
 
         private MembershipUser GetUserFromReader(MySqlDataReader reader)
@@ -1141,25 +1128,6 @@
         {
             password = EncodePassword(password, passwordKey, format);
             return password == dbpassword;
-
-            /*            string pass1 = password;
-                        string pass2 = dbpassword;
-                        if (PasswordFormat == MembershipPasswordFormat.Encrypted)
-                        {
-                            pass2 = UnEncodePassword(dbpassword);
-                        }
-                        else if (PasswordFormat == MembershipPasswordFormat.Hashed)
-                        {
-                            pass1 = EncodePassword(password);
-                        }
-                        else
-                        {
-                        }
-                        if (pass1 == pass2)
-                        {
-                            return true;
-                        }
-                        return false;*/
         }
 
         private void GetPasswordInfo(MySqlConnection connection, string username,

Thread
Connector/NET commit: r795 - trunk/MySql.Web/Providers/Sourcerburnett20 Jul