Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Apr 8, 2015
  1. Release 1.1.3 stable.

    Raphael Manfredi authored
  2. Release 1.1.3 stable.

    Raphael Manfredi authored
  3. Updated GeoIP databases.

    Raphael Manfredi authored
  4. Made QRP lock a mutex to allow for recursive locking through qrp_comp…

    Raphael Manfredi authored
Commits on Apr 7, 2015
  1. When shutdowning in "crash mode", skip most of the memory cleanup.

    Raphael Manfredi authored
    The important thing is to cleanly save the contexts (core and GUI settings)
    to be able to restart without losing too much information.
  2. Added URPC_ABORT callback notification type to signal layer shutdown.

    Raphael Manfredi authored
    The NAT-PMP unpublish operation tries to resend its operation when it gets
    an URPC_TIMEOUT indication.  Therefore, to cleanly abort the operation
    at shutdown time, we need a distinct URPC_ABORT indication.
    Ottherwise, we could get assertion failures in the URPC layer when exiting.
  3. Let the Windows VMM allocation layer know when we stop freeing alloca…

    Raphael Manfredi authored
    …ted memory.
    When this happens, we start using NULL memory hints and we do not want any
    stacktrace and warnings telling us about the fact we did not allocate memory
    with a hinted address!
  4. Windows: reworked virtual memory allocation now that we allow emergen…

    Raphael Manfredi authored
  5. thread_lock_holds_default(): optimized linear lookups by starting fro…

    Raphael Manfredi authored
    …m the end.
  6. rwlock_is_taken(): be formal, check the thread lock stack!

    Raphael Manfredi authored
    As written, the check was fast and wrong...  A lock can be marked as having
    a writer without us being the locking thread, as long as the writing thread
    is waiting for the last read lock to be gone...
    We need a formal check if we are to assert that we have taken the lock.
  7. mingw_valloc(): attempt allocation outside reserved region when neari…

    Raphael Manfredi authored
    …ng OOM.
    On Windows, when we have exhausted the initially reserved VM space, we attempt
    to allocate outside the reserved region.  If we succeed, we also request a
    clean application restart because we are close to an out-of-memory condition.
  8. When restarting under crash-control, skip waiting for BYE, terminate …

    Raphael Manfredi authored
Commits on Apr 6, 2015
  1. VMM: made crash_oom() call refer to the calling routine.

    Raphael Manfredi authored
  2. Pulled translations from Transifex.

    Raphael Manfredi authored
  3. VMM: use new rwlock_is_taken() in assertions, to verify we own the wr…

    Raphael Manfredi authored
    …ite lock.
  4. free_pages_vector(): keep the read lock whilst freeing pages removed …

    Raphael Manfredi authored
    …from pmap.
  5. alloc_pages(): in emergency situations, free all cached pages as well.

    Raphael Manfredi authored
    The new page_cache_free_all() routine will now remove all the cached pages.
    It can also be used at shutdown time, which means we can get rid of vpc_free().
  6. VMM: always expire region extremities under long-term allocation stra…

    Raphael Manfredi authored
    Also suppressed pmap_is_within_region() since it is the exact negation of
    pmap_is_extremity(), introduced at last commit.
Commits on Apr 5, 2015
  1. Updated the shell "status" command to display "!IP" on net buffer sho…

    Raphael Manfredi authored
  2. Update all translation files with new translatable strings.

    Raphael Manfredi authored
  3. Updated FAQ along with French and Turkish translations.

    Raphael Manfredi authored
  4. Added support for trapping ESHUTDOWN errors on network send().

    Raphael Manfredi authored
    This is not a POSIX error code, but it is used by Windows and could also
    appear with some UNIX kernels like BSD and Linux.
  5. mingw_valloc(): avoid compact_size() on OOM path since that can alloc…

    Raphael Manfredi authored
    …ate memory.
    To be thread-safe, compact_size() uses str_private() and therefore can allocate
    memory, possibly causing recursion into mingw_valloc() to get more memory,
    which would then call compact_size() again!
  6. sockets: use is_valid_fd() in pre-conditions instead of simpler "fd >…

    Raphael Manfredi authored
    …= 0".
    When the argument is socket_fd_t, the "fd >= 0" expression triggers a warning
    on Windows because it is an unsigned quantity there.
  7. Added socket_set_ipv6only() to clean up code.

    Raphael Manfredi authored
  8. socket_connect_prepare(): no need for SO_REUSEADDR for connecting soc…

    Raphael Manfredi authored
  9. Re-organized code for listening sockets to warn when bound port is al…

    Raphael Manfredi authored
    …ready used.
    Before forcing SO_REUSEADDR on the socket, we want to check whether the port
    is already used, to be able to warn them about that.  This would have made
    the diagnosis of the Windows bug (lack of close-on-exec leading to undefined
    behaviour upon auto-restart) much easier!
  10. Windows: remember socket descriptors so that we can close them on exe…

    Raphael Manfredi authored
    There is no support for close-on-exec on Windows, and file descriptors do
    no share the same ID space as sockets.  Therefore, we need to remember all
    the socket descriptors in order to let close_file_descriptors() also handle
    sockets before exec() is run.
    This will fix a nasty problem on Windows whereby an auto-restart left the
    listening socket active.  There were thus two listening sockets on the
    same TCP port, once gtk-gnutella had re-exec'ed itself, preventing any further
    incomoing TCP connections from being handled properly.
  11. UPnP: protect upnp_mapping objects given to callbacks with reference …

    Raphael Manfredi authored
    When changing the listening port dynamically, exsting UPnP mappings are
    revoked and new ones installed if needed.  However, we were freeing the
    old mapping objects whilst the UPnP RPC was in transit, resulting in a crash
    when the reply came back since the mapping object given as argument was gone.
  12. crash_restart(): do nothing if they called crash_restarting() already.

    Raphael Manfredi authored
    We want to avoid any recursion on the exit path, should crash_restart() end
    up being called when we have already started shutting the application down.
Something went wrong with that request. Please try again.