1. 10 Jun, 2023 1 commit
  2. 16 May, 2023 1 commit
  3. 15 May, 2023 3 commits
    • tests: only copy when `ptr` is non-NULL · 27576416
      Avoid passing a `NULL` ptr to `memcpy` -- that's UB (even if size is 0)
      Edward Thomson committed
    • tests: add allocation failure test for buffers · 8e5281c8
      Test that `git_buf` correctly fails if no more bytes can be allocated.
      This is mostly for demonstration purposes.
      Patrick Steinhardt committed
    • tests: add allocator with limited number of bytes · 90cc0771
      In several circumstances, we get bug reports about things that happen in
      situations where the environment is quite limited with regards to
      available memory. While it's expected that functionality will fail if
      memory allocations fail, the assumption is that we should do so in a
      controlled way. Most importantly, we do not want to crash hard due to
      e.g. accessing NULL pointers.
      
      Naturally, it is quite hard to debug such situations. But since our
      addition of pluggable allocators, we are able to implement allocators
      that fail in deterministic ways, e.g. after a certain amount of bytes
      has been allocated. This commit does exactly that.
      
      To be able to properly keep track of the amount of bytes currently
      allocated, allocated pointers contain tracking information. This
      tracking information is currently limited to the number of bytes
      allocated, so that we can correctly replenish them on calling `free` on
      the pointer. In the future, it would be feasible to extend the tracked
      information even further, e.g. by adding information about file and line
      where the allocation has been performed. As this introduced some
      overhead to allocations though, only information essential to limited
      allocations is currently tracked.
      Patrick Steinhardt committed
  4. 13 May, 2023 5 commits
    • streams: sockets are non-blocking and can timeout · fad90428
      Make socket I/O non-blocking and add optional timeouts.
      
      Users may now set `GIT_OPT_SET_SERVER_CONNECT_TIMEOUT` to set a shorter
      connection timeout. (The connect timeout cannot be longer than the
      operating system default.) Users may also now configure the socket read
      and write timeouts with `GIT_OPT_SET_SERVER_TIMEOUT`.
      
      By default, connects still timeout based on the operating system
      defaults (typically 75 seconds) and socket read and writes block.
      
      Add a test against our custom testing git server that ensures that we
      can timeout reads against a slow server.
      Edward Thomson committed
    • net: move `gitno` buffer to `staticstr` · 11c89c38
      The `gitno` buffer interface is another layer on top of socket reads.
      Abstract it a bit into a "static string" that has `git_str` like
      semantics but without heap allocation which moves the actual reading
      logic into the socket / stream code, and allows for easier future usage
      of a static / stack-allocated `git_str`-like interface.
      Edward Thomson committed
    • util: make monotonic time fn return ms · 6c0d5b11
      `git__timer` is now `git_time_monotonic`, and returns milliseconds
      since an arbitrary epoch.
      
      Using a floating point to store the number of seconds elapsed was
      clever, as it better supports the wide range of precision from the
      different monotonic clocks of different systems. But we're a version
      control system, not a real-time clock.
      
      Milliseconds is a good enough precision for our work _and_ it's the
      units that system calls like `poll` take and that our users interact
      with.
      
      Make `git_time_monotonic` return the monotonically increasing number
      of milliseconds "ticked" since some arbitrary epoch.
      Edward Thomson committed
  5. 09 May, 2023 2 commits
  6. 08 May, 2023 2 commits
  7. 06 May, 2023 2 commits
  8. 25 Apr, 2023 1 commit
  9. 24 Apr, 2023 2 commits
  10. 11 Apr, 2023 1 commit
  11. 10 Apr, 2023 4 commits
  12. 04 Apr, 2023 4 commits
  13. 21 Mar, 2023 2 commits
  14. 02 Mar, 2023 2 commits
  15. 01 Mar, 2023 1 commit
  16. 27 Feb, 2023 3 commits
  17. 25 Feb, 2023 1 commit
  18. 24 Feb, 2023 1 commit
  19. 23 Feb, 2023 1 commit
  20. 17 Feb, 2023 1 commit