Skip to content
  • Philip Withnall's avatar
    core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion · 2001d7ad
    Philip Withnall authored
    If connecting to a new EDS address book, or doing something else which
    may cause a torrent of AvatarCache.store_avatar() calls, it is possible
    to hit the operating system’s file descriptor limit, which causes
    further store operations to fail.
    
    Implement a simple FIFO rate limit on concurrent
    AvatarCache.store_avatar() calls to try and ensure this won’t happen. It
    is still possible if the process calls store_avatar() several times
    while already near the FD limit, but then failure is pretty inevitable
    anyway, and is already handled gracefully.
    
    The changes are implemented in a self-contained wrapper function around
    store_avatar(), and only result in memory allocations in the queueing
    case.
    
    A test case is included. This does not affect the AvatarCache API or
    ABI.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705742
    2001d7ad
To find the state of this project's repository at the time of any of these versions, check out the tags.