New Telluride build 15 – Now with –server mode to run as an HTTP RPC server

This is a foundation for many good things on the FrostWire network.

Download binaries:
telluride.exe
telluride_linux
telluride_macos

For instance, now every time that FrostWire for Desktop receives a Video URL, it no longer needs to create a new Telluride Process, it reuses the same process and it can ask the telluride process to fetch the relevant video/audio metadata with a simple HTTP RPC request.

This makes the experience for FrostWire for Desktop users much faster , and eventually once enough desktops are running builds post 15, they will serve as a distributed network to answer video URL searches from Android clients which cannot run Telluride as it stands today.

build 15 – apr/06/2021

  • NEW: –server mode, run telluride as an RPC web server
  • python: pylint-2.7.4
  • python: youtube_dl-2021.4.7
  • python: astroid-2.5.2
  • python: sanic-21.3.2
  • python: sanic_routing-0.5.2
  • python: httptools-0.1.1
  • python: ujson-4.0.2
  • python: uvloop-0.15.2
  • python: websockets-8.1
  • python: aiofiles-0.6.0
  • python: multidict-5.1.0
brown deer in tilt shift lens

New FrostWire for Android 2.3.0

frostwire-android-release-2.3.0-b677-plus.apk

FrostWire 2.3.0 build 677 – MAR/24/2021 – CHANGELOG

  • New jlibtorent 1.2.13.0
  • com.google.firebase:firebase-bom:26.7.0
  • com.android.billingclient:billing:3.0.3
  • com.google.android.gms:play-services-ads:19.8.0
  • androidx.annotation:annotation:1.2.0
  • com.mopub:mopub-sdk-banner:5.16.3
  • dev: com.android.tools.build:gradle:4.1.3
  • com.applovin:applovin-sdk:10.0.1
  • com.mopub.mediation:applovin:10.0.1.0
  • lt:fix incoming TCP connections when using tracker-only proxy
  • lt:fix issue with paths starting with ./
  • lt:fix integer overflow when setting a high DHT upload rate limit
  • lt:improve Path MTU discovery logic in uTP
  • lt:fix overflow issue when rlimit_nofile is set to infinity
  • lt:Fix cxxflags and linkflags injection via environment variables
image

New jlibtorrent 1.2.13.0

tricolor beagle on snow covered ground during daytime

Download binaries

jlibtorrent 1.2.13.0 changelog

  • openssl 1.1.1j upgrade
  • lt:fix incoming TCP connections when using tracker-only proxy
  • lt:fix issue with paths starting with ./
  • lt:fix integer overflow when setting a high DHT upload rate limit
  • lt:improve Path MTU discovery logic in uTP
  • lt:fix overflow issue when rlimit_nofile is set to infinity
  • lt:Fix cxxflags and linkflags injection via environment variables

JLibtorrent: A swig Java interface for libtorrent by the makers of FrostWire.

Develop libtorrent based apps with the joy of coding in Java.

New frostwire-desktop-6.9.1-301 with jlibtorrent 1.2.12.0


Downloads

Windows:
frostwire-6.9.1.windows.github.exe

macOS:
frostwire-6.9.1.dmg

Linux:
frostwire-6.9.1.amd64.deb
frostwire-6.9.1.amd64.rpm

Any JRE compatible OS:
frostwire-6.9.1.amd64.tar.gz

group of people on top of building



Changelog

frostwire (6.9.1) stable; urgency=high

  • jlibtorrent-1.2.12.0 update
  • Detects MozillaVPN
  • Soundcloud search fixed
  • lt:fix loading of DHT node ID from previous session on startup
  • lt:use getrandom(), when available, and fall back to /dev/urandom
  • lt:fix uTP issue acking FIN packets
  • lt:validate HTTPS certificates by default (trackers and web seeds)
  • lt:load SSL certificates from windows system certificate store, to authenticate trackers
  • lt:introduce mitigation for Server Side Request Forgery in tracker and web seed URLs
  • lt:fix error handling for pool allocation failure
  • Windows build reverts to jdk-14 — FrostWire Team contact@frostwire.com Thu, 14 Jan 2020 18:47:00 -0600

jLibtorrent 1.2.11.0 – Develop libtorrent powered apps and services in Java (android, windows, linux, macos binaries)


A swig Java interface for libtorrent by the makers of FrostWire.

Develop libtorrent based apps with the joy of coding in Java.

More information at jlibtorrent.org
Discord Developer Chatroom


Downloads
Sources
jlibtorrent-1.2.11.0-sources.jar 408 KB

Java API Jar
jlibtorrent-1.2.11.0.jar 684 KB

Shared Native Libraries (.dll, .so, .dylib containing jars)
jlibtorrent-android-arm-1.2.11.0.jar 2.36 MB
jlibtorrent-android-arm64-1.2.11.0.jar 2.42 MB
jlibtorrent-android-x86-1.2.11.0.jar 2.72 MB
jlibtorrent-android-x86_64-1.2.11.0.jar 2.7 MB
jlibtorrent-linux-1.2.11.0.jar 5.67 MB
jlibtorrent-macosx-1.2.11.0.jar 2.22 MB
jlibtorrent-windows-1.2.11.0.jar 4.67 MB

CHANGELOG
1.2.11.0
 * New TorrentHandle.inSession() [blocking method, do not use in main UI threads]
 * New ability for SessionManager to build a paused session
 * New SessionManager.start(SessionParams, session_flags_t)
 * New SessionHandle.PAUSED (session_flag_t) and corresponding unit tests
 * Removed TorrentStatus::State::ALLOCATING enum
 * Removed torrent_status.state_t.unused_enum_for_backwards_compatibility_allocating
 * libtorrent 1.2.11.0 update (471e772cb7038f1bf5f44c32a09eb42fbb80ee99)
 * lt: upgraded to openssl 1.1.1l
 * lt: fix issue with moving the session object
 * lt: deprecate torrent_status::allocating. This state is no longer used
 * lt: fix bug creating torrents with symbolic links
 * lt: remove special case to save metadata in resume data unconditionally when added throught magnet link
 * lt: fix bugs in mutable-torrent support (reusing identical files from different torrents)
 * lt: fix incorrectly inlined move-assignment of file_storage
 * lt: add session::paused flag, and the ability to construct a session in paused mode
 * lt: fix session-pause causing tracker announces to fail
 * lt: fix peer-exchange flags bug
 * lt: allow saving resume data before metadata has been downloaded (for magnet links)
 * lt: record blocks in the disk queue as downloaded in the resume data
 * lt: fix bug in set_piece_deadline() when set in a zero-priority piece
 * lt: fix issue in URL parser, causing issues with certain tracker URLs
 * lt: use a different error code than host-unreachable, when skipping tracker announces

[SOLUTION] macoS Big Sur possible FrostWire Freeze on Startup

Here are some things that might help with Freezes some users are reporting until we find the root cause, or when Apple finally releases 11.0.2 fixing a lot of irregularities we’ve experienced with this operating system.

For some reason, on some installations of macOS Big Sur FrostWire can freeze when trying to show the “Tip of the Day” window.



To avoid that window from showing on startup, all you have to do is add a setting in the frostwire.props file

Please try the following before you launch the application:

1. Make sure you’re running our latest FrostWire update

2. With the Text Editor app of your choice please edit the file ~/Library/Preferences/FrostWire5/frostwire.props

and add the line
SHOW_TOTD=false

This has helped some people get past a the freeze when the “Tip of The Day” window is shown on macOS Big Sur.

Update: If this doesn’t help you solve the freeze, please know that we’re finding the root cause of the freeze, we’re upgrading all of our third party libraries and trying to debug what could be the root cause of the problem. In the meantime please make sure you have our latest build

[dev] How we got Travis Continuous Integration for multiple language projects in a mono repo

With every commit that makes it to the monorepo both the Android and Desktop project are built and tested. This post documents how we did that.

This post is intended to help developers on other projects where they need wish to start multiple travis jobs for completely different configurations.

Most documented examples on the web on how to use travis are usually focused only on building a single project in a single environment. But what if your repository has multiple projects that need to run under different contexts and programming languages.

At FrostWire we have a big monorepo which is host to multiple projects:

android/ # android client (java8, android-sdk environment gradle build)
desktop/ # desktop client and tests (java11+ gradle build)
common/ # common java sources for android and desktop projects


Travis allows you to define what we understand to be a “Job Matrix”, where each entry in this Matrix specifies an individual job (and they can run in parallel when you push your commit and travis gets word of it)

Here’s our first version of .travis.yml to build the android and desktop projects, and run tests jobs on a single git push:
matrix:
  include:
    # android build job
    - language: android
      dist: xenial
      android:
        components:
          - build-tools 29.0.2
          - android-29
          - extra-google-google_play_services
          - extra-google-m2repository
          - extra-android-m2repository
      licenses:
        - 'android-sdk-preview-license-52d11cd2'
        - 'android-sdk-license-.+'
        - 'google-gdk-license-.+'
      script:
        - yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;29.0.2"
        - cd android
        - pwd
        - ./gradlew assembleDebug
    # desktop build job
    - language: java
      jdk:
        - openjdk11
      script:
        - cd desktop
        - gradle build
    # desktop/common tests job
    - language: java
      jdk:
        - openjdk11
      script:
        - cd desktop
        - gradle test

New FrostWire 6.8.6 for Windows, macOS and Linux

Download the new release with the faster torrent downloads and improved search


Windows 64-bit:
frostwire-6.8.6.windows.github.exe38.2 MB

macOS 64-bit:
frostwire-6.8.6.dmg45.7 MB

Ubuntu/Debian 64-bit
frostwire-6.8.6.amd64.deb13.5 MB

Red Hat/RPM-based
frostwire-6.8.6.amd64.rpm14.9 MB

Java 11+ for any other OS
frostwire-6.8.6.amd64.tar.gz1 4.2 MB



Source code(zip)
Source code(tar.gz)

frostwire (6.8.6) stable; urgency=high

  • New jlibtorrent 1.2.8.0 update
  • New 1337x search (thanks to @HimanshuSharma789)
  • New iDope search (thanks to @HimanshuSharma789)
  • Fixed Torrentz2 search dates (thanks to @HimanshuSharma789)
  • Fixed Sound Cloud search
  • Discontinues mplayer video playback, uses os default video player for videos
  • com.google.re2j:re2j:1.3 -> 1.4
  • com.squareup.okhttp3:okhttp:4.4.1 -> 4.8.1
  • com.h2database:h2:1.4.199 -> 200
  • lt: validate UTF-8 encoding of client version strings from peers
  • lt: don’t time out tracker announces as eagerly while resolving hostnames
  • lt: fix NAT-PMP shutdown issue
  • lt: improve hostname lookup by merging identical lookups
  • lt: fix network route enumeration for large routing tables
  • lt: fixed issue where pop_alerts() could return old, invalid alerts
  • lt: fix issue when receiving have-all message before the metadata
  • lt: don’t leave lingering part files handles open
  • lt: disallow calling add_piece() during checking
  • lt: fix incorrect filename truncation at multi-byte character
  • lt: always announce listen port 1 when using a proxy

— FrostWire Team contact@frostwire.com Sun, 23 Aug 2020 10:45:00 -0600

Upgrading to FrostWire 6.8.5 on Ubuntu (troubleshooting possible OpenJDK14 dependency issues)

Download frostwire-6.8.5.amd64.deb

As of FrostWire 6.8.5 we’re moving all of our builds to run on OpenJDK14.

They linux build will still run fine with OpenJDK11 on your ${PATH} but we highly
recommend you have OpenJDK14 to help you sort out any weird behavior and reduce
JRE fragmentation on the network.

If you don’t have openjdk-14-jre installed when you install the FrostWire 6.8.5 .deb file you will get an error like the following:


Unpacking frostwire (6.8.5) ...
dpkg: dependency problems prevent configuration of frostwire:
frostwire depends on openjdk-14-jre-headless; however:
Package openjdk-14-jre-headless is not installed.


In order to solve just issue the command:

sudo apt -f install


It will try to pickup on the last failed install and download all the missing dependencies for you.

$ sudo apt -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
openjdk-14-jre-headless
Suggested packages:
fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei
The following NEW packages will be installed:
openjdk-14-jre-headless
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
1 not fully installed or removed.
Need to get 43.2 MB of archives.
After this operation, 190 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://us.archive.ubuntu.com/ubuntu eoan/universe amd64 openjdk-14-jre-headless amd64 14~18-1 [43.2 MB]
Fetched 43.2 MB in 9s (4,920 kB/s)
Selecting previously unselected package openjdk-14-jre-headless:amd64.
(Reading database ... 377184 files and directories currently installed.)
Preparing to unpack .../openjdk-14-jre-headless_14~18-1_amd64.deb ...
Unpacking openjdk-14-jre-headless:amd64 (14~18-1) ...
Setting up openjdk-14-jre-headless:amd64 (14~18-1) ...
update-alternatives: using /usr/lib/jvm/java-14-openjdk-amd64/bin/jfr to provide /usr/bin/jfr (jfr) in auto mode
update-binfmts: warning: current package is openjdk-11, but binary format already installed by openjdk-6
Setting up frostwire (6.8.5) ...


If this doesn’t work out, that only means your apt sources can’t find the OpenJDK-14 ubuntu packages.
We recommend that you update your ubuntu to the latest version, by the time we wrote this post we were running ubuntu eoan.


If you can’t or won’t upgrade to ubuntu eoan, you can always add the package repo and install the openjdk manually


sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt update
sudo apt install openjdk-14-jre-headless


Why is the new .deb almost twice as large as the previous versions.

In the past, OpenJDK would include a tool called “pack200” which would allow us to greatly compress our Java .class files prior to packing everything in the .deb/.tar.gz or .rpm files

Oracle removed the pack200 tools from the OpenJDK starting at version 14.

Perhaps there were some impossible tradeoffs they made when compiling and pack200 was no longer a viable tool.