protected void saveSessionTotals() {
    // re-base the totals from current totals and session totals

    saved_data_bytes_downloaded = getTotalDataBytesReceived();
    saved_data_bytes_uploaded = getTotalDataBytesSent();

    saved_protocol_bytes_downloaded = getTotalProtocolBytesReceived();
    saved_protocol_bytes_uploaded = getTotalProtocolBytesSent();

    saved_discarded = getDiscarded();
    saved_hashfails = getHashFailBytes();

    saved_SecondsDownloading = getSecondsDownloading();
    saved_SecondsOnlySeeding = getSecondsOnlySeeding();

    saved_SecondsSinceDownload = getTimeSinceLastDataReceivedInSeconds();
    saved_SecondsSinceUpload = getTimeSinceLastDataSentInSeconds();

    saved_peak_receive_rate = getPeakDataReceiveRate();
    saved_peak_send_rate = getPeakDataSendRate();

    DownloadManagerState state = download_manager.getDownloadState();

    state.setIntAttribute(DownloadManagerState.AT_TIME_SINCE_DOWNLOAD, saved_SecondsSinceDownload);
    state.setIntAttribute(DownloadManagerState.AT_TIME_SINCE_UPLOAD, saved_SecondsSinceUpload);

    state.setLongAttribute(DownloadManagerState.AT_AVAIL_BAD_TIME, getAvailWentBadTime());

    state.setLongAttribute(DownloadManagerState.AT_PEAK_RECEIVE_RATE, saved_peak_receive_rate);
    state.setLongAttribute(DownloadManagerState.AT_PEAK_SEND_RATE, saved_peak_send_rate);
  }