Permalink
Commits on Jul 17, 2015
  1. Fix sync-rsync.py

    themoken committed Jul 17, 2015
    Never got updated for the new database format.
Commits on Jul 16, 2015
  1. 0.9.2

    themoken committed Jul 14, 2015
  2. Per-socket r/w locks

    themoken committed Jul 15, 2015
  3. Remove work_done hook

    themoken committed Jul 15, 2015
    - Only used for do_tag_changes
    
    - This is better done when we actually cause changes, instead of
      potentially in the thread reaping thread, or the connection thread.
Commits on Jul 15, 2015
  1. Change hook information storage

    themoken committed Jul 15, 2015
    - Shouldn't have to iterate through 10k possible hooks to find the ones
      with a specific key.
    
    - Clean up as we go, to avoid having to iterate over the entire
      structure on every removal.
Commits on Jul 13, 2015
Commits on Jul 12, 2015
Commits on Jul 11, 2015
  1. Don't decode fragments, only whole messages

    themoken committed Jul 11, 2015
    So we don't try to decode an incomplete character.
Commits on Jul 5, 2015
  1. Fix EINTR with new fragless code

    themoken committed Jul 5, 2015
    Returning used to just postpone the current fragment, now that we know
    the size and have no fragments, we can just properly retry.
Commits on Jun 29, 2015
  1. sync-inoreader: requests should timeout

    themoken committed Jun 29, 2015
    Apparently the standard socket timeout is ignored? Regardless,
    occasionally the request seems to hang for a long period (possibly
    server trouble?) and it appears to deadlock the daemon because the
    feed's internal lock is being held, which halts sync operations.
Commits on Jun 24, 2015
  1. Brush up manpages

    themoken committed Jun 24, 2015
    - XDG paths
    - removed -c option
    - Add canto-remote status
  2. XDG Support

    themoken committed Jun 24, 2015
    - If it exists, will still use ~/.canto-ng
    
    - Respects $XDG_CONFIG_HOME, but will throw everything in there (won't
      use $XDG_DATA_HOME for feeds/logs)
    
    - canto is the directory name, not canto-ng so ~/.config/canto is likely
      the new directory
Commits on Jun 23, 2015
  1. Make sure we are using the length of the encoded string in the protocol

    themoken committed Jun 23, 2015
    Length of the unicode string doesn't necessarily equal the length of the
    encoded string of bytes. Since we're using the len of the bytes on
    receive, make sure we're giving it the len of the bytes on write as
    well.
Commits on Jun 19, 2015
Commits on Jun 18, 2015
  1. Make filter_read default

    themoken committed Jun 18, 2015
  2. Inoreader sync: work harder to avoid dupes

    themoken committed Jun 18, 2015
    When Inoreader gets an item first, and we add it, it has an Inoreader
    id. When canto receives the same item later, it has a real id (or one
    canto assigned it), which is different and as such canto doesn't
    recognize that these items are identical (nor should it - that's the
    whole point of the id) and you end up with dupes (one from the feed, one
    from inoreader).
    
    To resolve this, when synchronizing with Inoreader, remove old items
    only seen in Inoreader content and attempt to re-add them, which will
    properly match the items if canto has found a real copy.
  3. Fix dead imports

    themoken committed Jun 18, 2015
  4. reddit: trim the json data

    themoken committed Jun 18, 2015
    Save some memory by not storing any data we aren't currently using in
    the edit function.
Commits on Jun 17, 2015
  1. Thread limit fetching

    themoken committed Jun 16, 2015
    - Defaults to number of cpus (as reported by multiprocessing.cpu_count)
  2. Remove unused constant

    themoken committed Jun 16, 2015
  3. Stop using shelve

    themoken committed Jun 16, 2015
    NOTE: This will automatically migrate old shelves.
    
    - Copying shelve dbs is a fucking pain and has caused breakage when
      moving from one distro / OS to another when the available lightweight
    DBs change.
    
    - We use basically no database features, except the "cache" which is
      really just the DB holding the entire database in memory which we can
    also do with greater control (there has been 0 change in memory usage
    with this patch).
    
    - We have to workaround the database constantly expanding in size with
      some databases (GDBM requires reorganize())
    
    - Shelves don't (as far as I can see) play well with transparent
      compression and it doesn't look like it does any compression itself,
    so by just gzipping raw JSON, we can shrink the feeds file by 80%.
    
    - Internally, shelves use pickle, which is a Python only serialization.
      This isn't important at the moment, but gzipped JSON is platform
    agnostic.
    
    - Replace my feed dump script with zcat =P.
Commits on Jun 16, 2015
  1. Remove extraneous debug

    themoken committed Jun 16, 2015
  2. Refactor tag handling on feed index and setattributes

    themoken committed Jun 16, 2015
    - Simplified set_attribute tag logic, and should re-apply filters on
      changing attributes.
  3. Stop paginating items

    themoken committed Jun 15, 2015
    ITEMSDONE is still present, but obsolete.
  4. Change how protocol messages are sent.

    themoken committed Jun 15, 2015
    It's better to just know the size right off the bat than do this
    fragment management and add the possibility of a small message getting
    held up in a buffer waiting for it to fill.