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", 1
  if force_clear_sessions
    debug "Successfully cleared sessions, trying to create a new session", 1, :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.headers['Host'] = host_header if host_header
        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", 1, :green
        return true
      else
        debug "Failed to create Redfish session after clearing sessions: #{response.status} - #{response.body}", 1, :red
        # If still failing, try direct mode
        debug "Falling back to direct mode", 1, :light_yellow
        @direct_mode = true
        return false
      end
    rescue => e
      debug "Error during session creation after clearing: #{e.class.name}: #{e.message}", 1, :red
      debug "Falling back to direct mode", 1, :light_yellow
      @direct_mode = true
      return false
    end
  else
    debug "Failed to clear sessions, switching to direct mode", 1, :light_yellow
    @direct_mode = true
    return false
  end
end