anchor.diff:                          session.ProtocolVersion <- protocol
                           session.ClientVersion   <- client 
                           state.post session.SessionID (LogOnOff (Logon session userId movieId))
  -                    | _ -> failwith "Extract login info failed, expecting a list or a property list."                        
  +                    | _ -> failwith "Extract login info failed, expecting a list or a property list."
                   else
                       if appServer.MinLogLevel = Trace then log Trace "Incoming Message: %A" (prettyPrintMsg msg)
                       let recipients = msg.recipients |>> fun recipient -> (recipient+"@").Split [|'@'|] |>> (function "" -> None | s -> Some s) |> Seq.pairwise |> head
  
positive.code:                     | None              -> users
                      | Some existingUser ->                        
                          disconnectUser existingUser.Session
                          log Info "User already exists in that movie. Disconnect user:%s from movie:%s, session %s" userId movieId existingUser.Session
                          removeUser existingUser users
                  send (writeMessage ("System", [userId], "Logon", pickle valueP (LString movieId))) session
                  if session.ProtocolVersion > (1, 1) then send (writeMessage ("System", [userId], "SessionID", pickle valueP (LString session.SessionID))) session
                  session.Authenticated     <- true
                  appServer.MaxUserCount    <- maxBy fst [appServer.MaxUserCount   ; length state.Users    , DateTime.UtcNow]
                  appServer.MaxSessionCount <- maxBy fst [appServer.MaxSessionCount; appServer.SessionCount, DateTime.UtcNow]
                  log Info "+ %-26s Connected to      Movie: %-22s from: %-15s using session:%s Protocol:%i.%i Client:%i.%i" userId movieId (ipAddress session) session.SessionID <|| session.ProtocolVersion <|| session.ClientVersion
                  {Name= userId; Movie= movieId; Groups= ["@AllUsers"]; Session= session.SessionID}::users
  
  
  
negative.code:                         | LVoid      -> "'" + "<Void>" + "'"
                          | s          -> failwith (sprintf "Unexpected DBExec message format received: %A" s))
                      log Trace "execDbQuery %s %s" sp_name sp_args
                      use conn = new SqlConnection(s)
                      conn.Open()
                      use command = new SqlCommand ("exec sp_" + sp_name + " " + sp_args, conn)
                      let lstResult = seq {
  