class IDRAC::Session

def handle_max_sessions_and_retry(url, payload)

def handle_max_sessions_and_retry(url, payload)
  return false unless @sessions_maxed
  
  debug "Maximum sessions reached, attempting to clear sessions", 0
  if @auto_delete_sessions
    if force_clear_sessions
      debug "Successfully cleared sessions, trying to create a new session", 0, :green
      
      # Give the iDRAC a moment to process the session deletions
      sleep(3)
      
      # Try one more time after clearing with form-urlencoded
      begin
        response = connection.post(url) do |req|
          req.headers['Authorization'] = "Basic #{Base64.strict_encode64("#{username}:#{password}")}"
          req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
          req.body = "UserName=#{URI.encode_www_form_component(username)}&Password=#{URI.encode_www_form_component(password)}"
        end
        
        if process_session_response(response)
          debug "Redfish session created successfully after clearing sessions", 0, :green
          return true
        else
          debug "Failed to create Redfish session after clearing sessions: #{response.status} - #{response.body}", 0, :red
          # If still failing, try direct mode
          debug "Falling back to direct mode", 0, :light_yellow
          @direct_mode = true
          return false
        end
      rescue => e
        debug "Error during session creation after clearing: #{e.class.name}: #{e.message}", 0, :red
        debug "Falling back to direct mode", 0, :light_yellow
        @direct_mode = true
        return false
      end
    else
      debug "Failed to clear sessions, switching to direct mode", 0, :light_yellow
      @direct_mode = true
      return false
    end
  else
    debug "Auto delete sessions is disabled, switching to direct mode", 0, :light_yellow
    @direct_mode = true
    return false
  end
end