1. 22 Aug, 2021 1 commit
  2. 24 Sep, 2020 1 commit
    • Tomasz Zdybał's avatar
      Add WireTap interface (#444) · bc3df6bd
      Tomasz Zdybał authored
      * Add WireTap interface
      
      WireTap interface can be used to access all messages send and received
      by Bitswap. This can be used to implement advanced statistics/analysis
      logic, which is beyond scope of Bitswap, but can be implemented as IPFS
      plugin.
      
      Some examples of potential applications:
       - per CID bandwidth tracker (see: https://gitcoin.co/issue/PinataCloud/apollo/2/100023631)
       - detailed per peer stats
       - intrusion detection system (IDS) implementation
      
      * Add test for WireTap
      bc3df6bd
  3. 26 Mar, 2020 2 commits
  4. 02 Mar, 2020 1 commit
    • dirkmc's avatar
      Ensure broadcast when remaining peer becomes unavailable (#272) · 0ba089b4
      dirkmc authored
      * fix: ensure broadcast when peer becomes unavailable and all other peers sent DONT_HAVE for CID
      
      * fix: lint warnings
      
      * refactor: simplify session want sender DONT_HAVE list
      
      * fix: flaky test
      
      * test: add session exhausted wants test
      
      * docs: improve sessionWantSender processAvailability docs
      0ba089b4
  5. 12 Feb, 2020 1 commit
  6. 30 Jan, 2020 2 commits
    • Steven Allen's avatar
      feat: move internals to an internal package · bbf65296
      Steven Allen authored
      This makes reading the docs much easier as it's clear what's "private" and
      what's not.
      
      fixes #238
      bbf65296
    • dirkmc's avatar
      feat: bitswap protocol extensions · b3a47bcf
      dirkmc authored
      This commit extends the bitswap protocol with two additional wantlist properties:
      
      * WANT_HAVE/HAVE: Instead of asking for a block, a node can specify that they
        want to know if any peers "have" the block.
      * WANT_HAVE_NOT/HAVE_NOT: Instead of waiting for a timeout, a node can explicitly
        request to be told immediately if their peers don't currently have the given
        block.
      
      Additionally, nodes now tell their peers how much data they have queued to send
      them when sending messages. This allows peers to better distribute requests,
      keeping all peers busy but not overloaded.
      
      Changes in this PR are described in: https://github.com/ipfs/go-bitswap/issues/186
      b3a47bcf
  7. 20 May, 2019 1 commit
  8. 10 May, 2019 1 commit
  9. 30 Apr, 2019 1 commit
  10. 28 Feb, 2019 1 commit
    • Steven Allen's avatar
      fix: limit use of custom context type · 799bfb3e
      Steven Allen authored
      Goprocess returns a _custom_ context type. Unfortunately, golang has a bunch of
      magic type assertions to efficiently handle built-in context types but launches
      a new goroutine when deriving a new context from a custom context type.
      Otherwise, it has no way to wait on the custom context's channel.
      
      This fix just ensures we only ever have one of goroutines per provide worker by
      deriving a (normal) cancelable context up-front and then using that.
      799bfb3e
  11. 05 Feb, 2019 1 commit
  12. 22 Jan, 2019 1 commit
  13. 12 Dec, 2018 1 commit
  14. 11 Dec, 2018 1 commit
    • hannahhoward's avatar
      refactor(WantManager): extract PeerManager · 693085c9
      hannahhoward authored
      Seperates the functions of tracking wants from tracking peers
      Unit tests for both peer manager and want manager
      Refactor internals of both to address synchonization issues discovered
      in tests
      693085c9
  15. 04 Dec, 2018 1 commit
  16. 04 Oct, 2018 1 commit
    • taylor's avatar
      bitswap: Bitswap now sends multiple blocks per message · eb0d1ffc
      taylor authored
      Updated PeerRequestTask to hold multiple wantlist.Entry(s). This allows Bitswap to send multiple blocks in bulk per a Peer's request. Also, added a metric for how many blocks to put in a given message. Currently: 512 * 1024 bytes. 
      
      License: MIT
      Signed-off-by: default avatarJeromy <why@ipfs.io>
      eb0d1ffc
  17. 12 Sep, 2018 1 commit
  18. 27 Jul, 2018 1 commit
  19. 16 Jul, 2018 1 commit
  20. 27 Jun, 2018 1 commit
    • Steven Allen's avatar
      gx update · b468efbc
      Steven Allen authored
      Updates:
      
      * go-kad-dht: Query performance improvements, DHT client fixes, validates
        records on *local* put.
      * go-libp2p-swarm/go-libp2p-transport: Timeout improvements.
      * go-multiaddr-net: Exposes useful Conn methods (CloseWrite, CloseRead, etc.)
      * go-log: fixes possible panic when enabling/disabling events.
      * go-multiaddr: fixes possible panic when stringifying malformed multiaddrs,
        adds support for consuming /p2p/ multiaddrs.
      
      fixes #5113
      unblocks #4895
      
      License: MIT
      Signed-off-by: default avatarSteven Allen <steven@stebalien.com>
      b468efbc
  21. 09 Jun, 2018 1 commit
  22. 01 Jun, 2018 1 commit
  23. 01 Feb, 2018 1 commit
  24. 24 Jan, 2018 1 commit
  25. 29 Dec, 2017 1 commit
  26. 14 Dec, 2017 1 commit
  27. 02 Sep, 2017 1 commit
  28. 12 Jul, 2017 1 commit
  29. 06 Jul, 2017 1 commit
  30. 05 Jul, 2017 1 commit
  31. 04 Jul, 2017 1 commit
  32. 29 Jun, 2017 1 commit
  33. 26 Apr, 2017 1 commit
    • dgrisham's avatar
      bug fix: `BytesSent` in peers' ledgers now updates · bc9342bf
      dgrisham authored
      When sending data to another user, the number of bytes sent to that user (saved
      by the corresponding Bitswap ledger) was not updated (it was always 0). This
      also meant that the debt ratio was also always 0.
      
      The function that updates the `BytesSent` value in the ledger, `MessageSent()`,
      was already implemented, however it was not called when the peer was sent data.
      To fix this, a call to `MessageSent()` was made in the `taskWorker()` function,
      which is where both the message in question and the Bitswap engine were
      available to make the call. `MessageSent()` requires the peer's ID and
      `BitSwapMessage` as its arguments, the latter of which had to be created by
      making a new `BitSwapMessage`, then the block being sent was added to the new
      message.
      
      Note that, similar to the analagous call to `MessageReceived()`, records *all*
      of the bytes sent to a particular user. At some point, both of these should be
      updated to only record the numbers of *useful* bytes sent and received between
      peers.
      
      License: MIT
      Signed-off-by: default avatarDavid Grisham <dgrisham@mines.edu>
      bc9342bf
  34. 20 Apr, 2017 1 commit
  35. 06 Mar, 2017 2 commits
  36. 12 Feb, 2017 1 commit
  37. 29 Nov, 2016 1 commit