Git Product home page Git Product logo

zit's People

Contributors

zitrax avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

zit's Issues

Move from .h to .hpp

To make them clear that they are C++ not C.

Remember to update the clang tidy header filter in CMakeLists.txt.

Config for host resolve

Resolving hosts make the output nicer, but resolving slows things down a bit. Let that be a configurable option.

Fix conan 2 or replace with vcpkg

The current build.yml will not work with conan 2.0, is has therefore been fixed to 1.60.2.

Should either update to use new Conan 2 compatible build, or just go with vcpkg instead.

Update peer_id

Currently its 20 random chars, but the spec say:

There are mainly two conventions how to encode client and client version information into the peer_id, Azureus-style and Shadow's-style.

Azureus-style uses the following encoding: '-', two characters for client id, four ascii digits for version number, '-', followed by random numbers.

For example: '-AZ2060-'...

It could possibly also be configurable.

Default option for arg parser

The current implementation for arg parser does not support a value without a key, thus we take the torrent file using --torrent. Would make sense if you could just pass the file directly.

Do not connect when just seeding

Seems like we contact a lot of peers even when starting up with a finished torrent, that is probably unnecessary. Should just wait for others to contact us.

ctorrent connect to itself - causing unreliable tests

Currently using ctorrent in the integration test for a command line client leecher.

This turns out to be unreliable, since both tracker, seeder and leecher are on localhost ctorrent sometimes try to connect to itself depending on timing or random order selection:

1567357479 Connecting to 127.0.0.1:2706 (peer 0x55f12932a980)
1567357479 Connection from duplicate peer 127.0.0.1
1567357479 Connection from duplicate peer 127.0.0.1
1567357479 0x55f12932a980: remote closed

zit iself avoids this by skipping localhost.

Could either use multiple ips, or use another client for leeching. ctorrent has not maintained since 2006.

libtorrent would be a maintained modern implementation.

Limit FileWriter queue

When we cannot write pieces to disk we keep accumulating them in the FileWriter causing large memory usage. There should be a limit where we stop and choke until the FileWriter can resume moving pieces to disk. It could be a configurable max amount of bytes in queue.

Ports should be configurable

They are now hardcoded, but with the recently added config support it should be easier to make it configurable.

Reseeding multi torrent fails

With: "exception: filesystem error: cannot get file size: Is a directory".

It would probably fail to keep seeding it as well due to the split operation.

Check if this still is true.

Download a subset of a multi torrent

Being able to download a subset of a torrent with mulitple files can be very handy.

A cli ui for this could be some work though, as a start proper support on the api level. Further tasks could be added for the cli ui.

Handle multiple torrents at once

The current command line interface only allows a single torrent with --torrent <file>, optimally it should be able to take more or even a directory of torrents.

Reuse listener ports

Revealed by the download_dual_torrents test we currently need one listener port per torrent, this is not implemented for the main application and also does not scale.

There should optimally be one listener port that can be used by multiple torrents.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.