logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
commit: e3f00c5a2749dd9ee9846e778ca007d80dbe4c72
parent bc4a4ccb65b4844a4b5778cd88caaeaa998fbc3e
Author: Michael Forney <mforney@mforney.org>
Date:   Mon, 25 May 2020 18:36:55 -0700

transmission: Update to 3.00

Diffstat:

Mpkg/transmission/.gitignore2+-
Mpkg/transmission/README.md2+-
Mpkg/transmission/config.h110+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Mpkg/transmission/gen.lua25+++++++++++++------------
Mpkg/transmission/patch/0001-Use-BearSSL-for-SHA1-and-DH-add-fallback-RC4.patch293++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mpkg/transmission/sha2562+-
Mpkg/transmission/url2+-
Mpkg/transmission/ver2+-
8 files changed, 234 insertions(+), 204 deletions(-)

diff --git a/pkg/transmission/.gitignore b/pkg/transmission/.gitignore @@ -1,4 +1,4 @@ /libminiupnp.ninja /libnatpmp.ninja /src -/transmission-2.94.tar.xz +/transmission-3.00.tar.xz diff --git a/pkg/transmission/README.md b/pkg/transmission/README.md @@ -7,7 +7,7 @@ Generated with ./configure \ --disable-nls \ --without-gtk \ - --without-systemd-daemon \ + --without-systemd \ LIBCURL_CFLAGS=-I/src/oasis/out/pkg/curl/include \ LIBCURL_LIBS=/src/oasis/out/pkg/curl/libcurl.a \ PKG_CONFIG=true diff --git a/pkg/transmission/config.h b/pkg/transmission/config.h @@ -1,54 +1,82 @@ #define PACKAGE_DATA_DIR "/share" #define WITH_INOTIFY 1 -#define PACKAGE_NAME "transmission" -#define PACKAGE_TARNAME "transmission" -#define PACKAGE_VERSION "2.94" -#define PACKAGE_STRING "transmission 2.94" -#define PACKAGE_BUGREPORT "https://github.com/transmission/transmission" -#define PACKAGE_URL "" -#define PACKAGE "transmission" -#define VERSION "2.94" -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_UNISTD_H 1 +/* #undef BUILD_MAC_CLIENT */ +/* #undef ENABLE_NLS */ +/* #undef GETTEXT_PACKAGE */ +#define HAVE_BASENAME 1 +/* #undef HAVE_BIND_TEXTDOMAIN_CODESET */ +/* #undef HAVE_CANONICALIZE_FILE_NAME */ +#define HAVE_DAEMON 1 +/* #undef HAVE_DCGETTEXT */ +#define HAVE_DECL_POSIX_FADVISE 1 +#define HAVE_DIRNAME 1 #define HAVE_DLFCN_H 1 -#define LT_OBJDIR ".libs/" -#define STDC_HEADERS 1 -#define TIME_WITH_SYS_TIME 1 -#define HAVE_STDBOOL_H 1 +#define HAVE_FALLOCATE64 1 +#define HAVE_GETMNTENT 1 +#define HAVE_GETPAGESIZE 1 +/* #undef HAVE_GETTEXT */ +/* #undef HAVE_HTONLL */ #define HAVE_ICONV 1 +#define HAVE_INTTYPES_H 1 +/* #undef HAVE_LC_MESSAGES */ +/* #undef HAVE_LIBAPPINDICATOR */ +/* #undef HAVE_LIBINTL_H */ +/* #undef HAVE_LOCALE_H */ +#define HAVE_LOCALTIME_R 1 +#define HAVE_LRINTF 1 +#define HAVE_MEMMEM 1 +#define HAVE_MEMORY_H 1 +#define HAVE_MKDTEMP 1 +/* #undef HAVE_NTOHLL */ +#define HAVE_POSIX_FADVISE 1 +#define HAVE_POSIX_FALLOCATE 1 +#define HAVE_POSIX_MEMALIGN 1 #define HAVE_PREAD 1 +#define HAVE_PTHREAD 1 #define HAVE_PWRITE 1 -#define HAVE_LRINTF 1 -#define HAVE_STRLCPY 1 -#define HAVE_DAEMON 1 -#define HAVE_DIRNAME 1 -#define HAVE_BASENAME 1 +#define HAVE_STATVFS 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 #define HAVE_STRCASECMP 1 -#define HAVE_LOCALTIME_R 1 -#define HAVE_FALLOCATE64 1 -#define HAVE_POSIX_FALLOCATE 1 -#define HAVE_MEMMEM 1 +#define HAVE_STRCASESTR 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRLCPY 1 #define HAVE_STRSEP 1 #define HAVE_STRTOLD 1 #define HAVE_SYSLOG 1 -#define HAVE_VALLOC 1 -#define HAVE_GETPAGESIZE 1 -#define HAVE_POSIX_MEMALIGN 1 -#define HAVE_STATVFS 1 -#define HAVE_MKDTEMP 1 -#define HAVE_USELOCALE 1 -#define HAVE_PTHREAD 1 -#define HAVE_GETMNTENT 1 -#define HAVE_DECL_POSIX_FADVISE 1 -#define HAVE_POSIX_FADVISE 1 #define HAVE_SYS_STATVFS_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_USELOCALE 1 +#define HAVE_VALLOC 1 +/* #undef HAVE_XFS_XFS_H */ +/* #undef HAVE_XLOCALE_H */ +/* #undef HAVE__CONFIGTHREADLOCALE */ +#define LT_OBJDIR ".libs/" +/* #undef MINIUPNPC_API_VERSION */ +#define PACKAGE "transmission" +#define PACKAGE_BUGREPORT "https://github.com/transmission/transmission" +#define PACKAGE_NAME "transmission" +#define PACKAGE_STRING "transmission 3.00" +#define PACKAGE_TARNAME "transmission" +#define PACKAGE_URL "" +#define PACKAGE_VERSION "3.00" +/* #undef PTHREAD_CREATE_JOINABLE */ +#define STDC_HEADERS 1 +#define SYSTEM_MINIUPNP 1 +#define TIME_WITH_SYS_TIME 1 +/* #undef TR_LIGHTWEIGHT */ +/* #undef USE_SYSTEMD */ +#define VERSION "3.00" #define WITH_UTP 1 +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif +/* #undef _FILE_OFFSET_BITS */ +/* #undef _LARGE_FILES */ +#ifndef __cplusplus +/* #undef inline */ +#endif diff --git a/pkg/transmission/gen.lua b/pkg/transmission/gen.lua @@ -5,16 +5,16 @@ end) sub('libminiupnp.ninja', function() cflags{ '-D _GNU_SOURCE', - '-I $outdir/miniupnp', + '-I $outdir/miniupnpc', '-idirafter $basedir/pkg/openbsd/src/sys', } - build('sed', '$outdir/miniupnp/miniupnpcstrings.h', '$srcdir/third-party/miniupnp/miniupnpcstrings.h.in', { + build('sed', '$outdir/miniupnpc/miniupnpcstrings.h', '$srcdir/third-party/miniupnpc/miniupnpcstrings.h.in', { expr='-e s,OS/version,Linux, -e s,version,,', }) lib('libminiupnp.a', [[ - third-party/miniupnp/( + third-party/miniupnpc/( connecthostport.c igd_desc_parse.c minisoap.c @@ -25,9 +25,11 @@ sub('libminiupnp.ninja', function() portlistingparse.c receivedata.c upnpcommands.c + upnpdev.c + upnperrors.c upnpreplyparse.c ) - ]], {'$outdir/miniupnp/miniupnpcstrings.h', 'pkg/openbsd/fetch'}) + ]], {'$outdir/miniupnpc/miniupnpcstrings.h', 'pkg/openbsd/fetch'}) end) cflags{ @@ -39,7 +41,7 @@ cflags{ '-I $dir', '-I $srcdir', '-I $srcdir/third-party', - '-I $srcdir/third-party/libb64', + '-I $srcdir/third-party/libb64/include', '-I $srcdir/third-party/libnatpmp', '-I $basedir/pkg/libevent/src/include', '-I $basedir/pkg/libutp/src', @@ -96,10 +98,12 @@ lib('libtransmission.a', [[ rpcimpl.c rpc-server.c session.c + session-id.c stats.c torrent.c torrent-ctor.c torrent-magnet.c + tr-assert.c tr-dht.c tr-lpd.c tr-udp.c @@ -120,9 +124,10 @@ lib('libtransmission.a', [[ watchdir-inotify.c file-posix.c + subprocess-posix.c crypto-utils-bearssl.c ) - libb64.a libdht.a libminiupnp.a libnatpmp.a + libb64.a libdht.a libminiupnpc.a libnatpmp.a $builddir/pkg/( bearssl/libbearssl.a curl/libcurl.a.d @@ -132,7 +137,7 @@ lib('libtransmission.a', [[ ) ]]) -lib('libb64.a', {'third-party/libb64/cdecode.c', 'third-party/libb64/cencode.c'}) +lib('libb64.a', {'third-party/libb64/src/cdecode.c', 'third-party/libb64/src/cencode.c'}) lib('libdht.a', {'third-party/dht/dht.c'}) exe('transmission-daemon', { @@ -143,11 +148,7 @@ exe('transmission-daemon', { file('bin/transmission-daemon', '755', '$outdir/transmission-daemon') man{'daemon/transmission-daemon.1'} -exe('transmission-remote', {'daemon/remote.c', 'libtransmission.a.d'}) -file('bin/transmission-remote', '755', '$outdir/transmission-remote') -man{'daemon/transmission-remote.1'} - -for _, tool in ipairs{'create', 'edit', 'show'} do +for _, tool in ipairs{'create', 'edit', 'remote', 'show'} do exe('transmission-'..tool, {'utils/'..tool..'.c', 'libtransmission.a.d'}) file('bin/transmission-'..tool, '755', '$outdir/transmission-'..tool) man{'utils/transmission-'..tool..'.1'} diff --git a/pkg/transmission/patch/0001-Use-BearSSL-for-SHA1-and-DH-add-fallback-RC4.patch b/pkg/transmission/patch/0001-Use-BearSSL-for-SHA1-and-DH-add-fallback-RC4.patch @@ -1,20 +1,20 @@ -From c8d489d361634413a518d614f02f3ecdaad3d4ec Mon Sep 17 00:00:00 2001 +From eb8e399417b22099b5a52e5fb468979e44486e73 Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Sun, 17 Nov 2019 01:27:04 -0800 Subject: [PATCH] Use BearSSL for SHA1 and DH, add fallback RC4 --- - libtransmission/crypto-utils-bearssl.c | 229 ++++++++++++++++++++++++ - libtransmission/crypto-utils-fallback.c | 81 +++++++++ - 2 files changed, 310 insertions(+) + libtransmission/crypto-utils-bearssl.c | 234 ++++++++++++++++++++++++ + libtransmission/crypto-utils-fallback.c | 77 ++++++++ + 2 files changed, 311 insertions(+) create mode 100644 libtransmission/crypto-utils-bearssl.c diff --git a/libtransmission/crypto-utils-bearssl.c b/libtransmission/crypto-utils-bearssl.c new file mode 100644 -index 000000000..23bdf5c45 +index 000000000..5672a48df --- /dev/null +++ b/libtransmission/crypto-utils-bearssl.c -@@ -0,0 +1,229 @@ +@@ -0,0 +1,234 @@ +#include <assert.h> +#include <stdlib.h> + @@ -23,6 +23,7 @@ index 000000000..23bdf5c45 +#include "crypto-utils.h" + +#define TR_CRYPTO_DH_SECRET_FALLBACK ++#define TR_CRYPTO_X509_FALLBACK +#define TR_CRYPTO_RC4_FALLBACK +#include "crypto-utils-fallback.c" + @@ -32,49 +33,47 @@ index 000000000..23bdf5c45 + +#define MY_NAME "tr_crypto_utils" + -+tr_sha1_ctx_t -+tr_sha1_init (void) ++tr_sha1_ctx_t tr_sha1_init(void) +{ -+ br_sha1_context * ctx; ++ br_sha1_context * ctx; + -+ ctx = tr_malloc (sizeof (*ctx)); -+ if (!ctx) -+ return NULL; ++ ctx = tr_malloc(sizeof (*ctx)); ++ if (!ctx) ++ { ++ return NULL; ++ } + -+ br_sha1_init (ctx); ++ br_sha1_init(ctx); + -+ return ctx; ++ return ctx; +} + -+bool -+tr_sha1_update (tr_sha1_ctx_t handle, -+ const void * data, -+ size_t data_length) ++bool tr_sha1_update(tr_sha1_ctx_t handle, void const* data, size_t data_length) +{ -+ assert (handle != NULL); ++ TR_ASSERT(handle != NULL); + -+ if (data_length == 0) -+ return true; ++ if (data_length == 0) ++ { ++ return true; ++ } + -+ assert (data != NULL); ++ TR_ASSERT(data != NULL); + -+ br_sha1_update (handle, data, data_length); ++ br_sha1_update(handle, data, data_length); + -+ return true; ++ return true; +} + -+bool -+tr_sha1_final (tr_sha1_ctx_t handle, -+ uint8_t * hash) ++bool tr_sha1_final(tr_sha1_ctx_t handle, uint8_t* hash) +{ -+ if (hash != NULL) ++ if (hash != NULL) + { -+ assert (handle != NULL); -+ br_sha1_out (handle, hash); ++ TR_ASSERT(handle != NULL); ++ br_sha1_out(handle, hash); + } + -+ tr_free (handle); -+ return true; ++ tr_free(handle); ++ return true; +} + +/*** @@ -82,180 +81,182 @@ index 000000000..23bdf5c45 +***/ + +typedef struct { -+ const uint8_t * prime_num; -+ size_t prime_num_length; -+ const uint8_t * generator_num; -+ size_t generator_num_length; -+ uint8_t * private_key; -+ size_t private_key_length; ++ uint8_t const* prime_num; ++ size_t prime_num_length; ++ uint8_t const* generator_num; ++ size_t generator_num_length; ++ uint8_t* private_key; ++ size_t private_key_length; +} DH; + -+tr_dh_ctx_t -+tr_dh_new (const uint8_t * prime_num, -+ size_t prime_num_length, -+ const uint8_t * generator_num, -+ size_t generator_num_length) ++tr_dh_ctx_t tr_dh_new(uint8_t const* prime_num, size_t prime_num_length, uint8_t const* generator_num, ++ size_t generator_num_length) +{ -+ DH * handle; ++ DH* handle; + -+ assert (prime_num != NULL); -+ assert (generator_num != NULL); -+ assert (generator_num_length < prime_num_length); ++ TR_ASSERT(prime_num != NULL); ++ TR_ASSERT(generator_num != NULL); ++ TR_ASSERT(generator_num_length < prime_num_length); + -+ if (generator_num_length > prime_num_length) -+ return NULL; ++ if (generator_num_length > prime_num_length) ++ { ++ return NULL; ++ } + -+ handle = tr_malloc (sizeof(*handle)); -+ if (handle == NULL) -+ return NULL; ++ handle = tr_malloc(sizeof(*handle)); ++ if (handle == NULL) ++ { ++ return NULL; ++ } + -+ handle->prime_num = prime_num; -+ handle->prime_num_length = prime_num_length; -+ handle->generator_num = generator_num; -+ handle->generator_num_length = generator_num_length; -+ handle->private_key = NULL; ++ handle->prime_num = prime_num; ++ handle->prime_num_length = prime_num_length; ++ handle->generator_num = generator_num; ++ handle->generator_num_length = generator_num_length; ++ handle->private_key = NULL; + -+ return handle; ++ return handle; +} + +void +tr_dh_free (tr_dh_ctx_t raw_handle) +{ -+ DH * handle = raw_handle; ++ DH* handle = raw_handle; + -+ if (handle == NULL) -+ return; ++ if (handle == NULL) ++ { ++ return; ++ } + -+ tr_free (handle->private_key); -+ tr_free (handle); ++ tr_free(handle->private_key); ++ tr_free(handle); +} + -+bool -+tr_dh_make_key (tr_dh_ctx_t raw_handle, -+ size_t private_key_length, -+ uint8_t * public_key, -+ size_t * public_key_length) ++bool tr_dh_make_key(tr_dh_ctx_t raw_handle, size_t private_key_length, uint8_t* public_key, size_t* public_key_length) +{ -+ DH * handle = raw_handle; -+ br_rsa_public modexp; -+ br_rsa_public_key key; -+ uint8_t * x; -+ size_t xlen; ++ TR_ASSERT(raw_handle != NULL); ++ TR_ASSERT(public_key != NULL); + -+ assert (handle != NULL); -+ assert (public_key != NULL); ++ DH* handle = raw_handle; ++ br_rsa_public modexp; ++ br_rsa_public_key key; ++ uint8_t* x; ++ size_t xlen; + -+ modexp = br_rsa_public_get_default (); ++ modexp = br_rsa_public_get_default(); + -+ handle->private_key = tr_malloc (private_key_length); -+ handle->private_key_length = private_key_length; ++ handle->private_key = tr_malloc(private_key_length); ++ handle->private_key_length = private_key_length; + -+ if (!handle->private_key) -+ goto fail; ++ if (!handle->private_key) ++ { ++ goto fail; ++ } + -+ if (!tr_rand_buffer (handle->private_key, handle->private_key_length)) -+ goto fail; ++ if (!tr_rand_buffer(handle->private_key, handle->private_key_length)) ++ { ++ goto fail; ++ } + -+ memset (public_key, 0, handle->prime_num_length - handle->generator_num_length); -+ memcpy (public_key + handle->prime_num_length - handle->generator_num_length, handle->generator_num, handle->generator_num_length); ++ memset(public_key, 0, handle->prime_num_length - handle->generator_num_length); ++ memcpy(public_key + handle->prime_num_length - handle->generator_num_length, handle->generator_num, handle->generator_num_length); + -+ key.n = (unsigned char *)handle->prime_num; -+ key.nlen = handle->prime_num_length; -+ key.e = handle->private_key; -+ key.elen = handle->private_key_length; ++ key.n = (unsigned char*)handle->prime_num; ++ key.nlen = handle->prime_num_length; ++ key.e = handle->private_key; ++ key.elen = handle->private_key_length; + -+ if (!modexp (public_key, handle->prime_num_length, &key)) -+ goto fail; ++ if (!modexp(public_key, handle->prime_num_length, &key)) ++ { ++ goto fail; ++ } + -+ *public_key_length = handle->prime_num_length; ++ *public_key_length = handle->prime_num_length; + -+ return true; ++ return true; + +fail: -+ tr_free(handle->private_key); -+ handle->private_key = NULL; -+ return false; ++ tr_free(handle->private_key); ++ handle->private_key = NULL; ++ return false; +} + -+tr_dh_secret_t -+tr_dh_agree (tr_dh_ctx_t raw_handle, -+ const uint8_t * other_public_key, -+ size_t other_public_key_length) ++tr_dh_secret_t tr_dh_agree(tr_dh_ctx_t raw_handle, uint8_t const* other_public_key, size_t other_public_key_length) +{ -+ DH * handle = raw_handle; -+ struct tr_dh_secret * ret; -+ br_rsa_public modexp; -+ br_rsa_public_key key; -+ uint8_t * x; -+ size_t xlen; ++ TR_ASSERT(raw_handle != NULL); ++ TR_ASSERT(other_public_key != NULL); + -+ assert (handle != NULL); -+ assert (other_public_key != NULL); ++ DH* handle = raw_handle; ++ struct tr_dh_secret* ret; ++ br_rsa_public modexp; ++ br_rsa_public_key key; ++ uint8_t* x; ++ size_t xlen; + -+ if (other_public_key_length > handle->prime_num_length) -+ return NULL; ++ if (other_public_key_length > handle->prime_num_length) ++ { ++ return NULL; ++ } + -+ ret = tr_dh_secret_new(handle->prime_num_length); -+ if (!ret) -+ return NULL; ++ ret = tr_dh_secret_new(handle->prime_num_length); ++ if (!ret) ++ { ++ return NULL; ++ } + -+ memset (ret->key, 0, ret->key_length - other_public_key_length); -+ memcpy (ret->key + ret->key_length - other_public_key_length, other_public_key, other_public_key_length); ++ memset(ret->key, 0, ret->key_length - other_public_key_length); ++ memcpy(ret->key + ret->key_length - other_public_key_length, other_public_key, other_public_key_length); + -+ modexp = br_rsa_public_get_default (); ++ modexp = br_rsa_public_get_default(); + -+ key.n = (unsigned char *)handle->prime_num; -+ key.nlen = handle->prime_num_length; -+ key.e = handle->private_key; -+ key.elen = handle->private_key_length; ++ key.n = (unsigned char*)handle->prime_num; ++ key.nlen = handle->prime_num_length; ++ key.e = handle->private_key; ++ key.elen = handle->private_key_length; + -+ if (!modexp (ret->key, ret->key_length, &key)) ++ if (!modexp(ret->key, ret->key_length, &key)) + { -+ tr_dh_secret_free (ret); -+ ret = NULL; ++ tr_dh_secret_free (ret); ++ ret = NULL; + } + -+ return ret; ++ return ret; +} + +/*** +**** +***/ + -+bool -+tr_rand_buffer (void * buffer, -+ size_t length) ++bool tr_rand_buffer(void* buffer, size_t length) +{ -+ static br_hmac_drbg_context ctx; -+ static bool init; -+ br_prng_seeder seeder; ++ TR_ASSERT(buffer != NULL); + -+ assert (buffer != NULL); ++ static br_hmac_drbg_context ctx; ++ static bool init; ++ br_prng_seeder seeder; + -+ if (!init) ++ if (!init) + { -+ br_hmac_drbg_init (&ctx, &br_sha256_vtable, NULL, 0); -+ seeder = br_prng_seeder_system (NULL); -+ if (!seeder || !seeder(&ctx.vtable)) -+ return false; -+ init = true; ++ br_hmac_drbg_init(&ctx, &br_sha256_vtable, NULL, 0); ++ seeder = br_prng_seeder_system(NULL); ++ if (!seeder || !seeder(&ctx.vtable)) ++ { ++ return false; ++ } ++ init = true; + } + -+ br_hmac_drbg_generate (&ctx, buffer, length); -+ return true; ++ br_hmac_drbg_generate(&ctx, buffer, length); ++ return true; +} diff --git a/libtransmission/crypto-utils-fallback.c b/libtransmission/crypto-utils-fallback.c -index 0ca1ad75e..9fdb044a9 100644 +index c17b54e25..a521956a3 100644 --- a/libtransmission/crypto-utils-fallback.c +++ b/libtransmission/crypto-utils-fallback.c -@@ -75,3 +75,84 @@ tr_dh_secret_free (tr_dh_secret_t handle) +@@ -92,3 +92,80 @@ void tr_x509_cert_free(tr_x509_cert_t handle) } - #endif /* TR_CRYPTO_DH_SECRET_FALLBACK */ -+ -+/*** -+**** -+***/ + #endif /* TR_CRYPTO_X509_FALLBACK */ + +#ifdef TR_CRYPTO_RC4_FALLBACK + @@ -334,5 +335,5 @@ index 0ca1ad75e..9fdb044a9 100644 + +#endif /* TR_CRYPTO_RC4_FALLBACK */ -- -2.24.0 +2.26.2 diff --git a/pkg/transmission/sha256 b/pkg/transmission/sha256 @@ -1 +1 @@ -35442cc849f91f8df982c3d0d479d650c6ca19310a994eccdaa79a4af3916b7d transmission-2.94.tar.xz +9144652fe742f7f7dd6657716e378da60b751aaeda8bef8344b3eefc4db255f2 transmission-3.00.tar.xz diff --git a/pkg/transmission/url b/pkg/transmission/url @@ -1 +1 @@ -url = "https://github.com/transmission/transmission-releases/raw/master/transmission-2.94.tar.xz" +url = "https://github.com/transmission/transmission-releases/raw/master/transmission-3.00.tar.xz" diff --git a/pkg/transmission/ver b/pkg/transmission/ver @@ -1 +1 @@ -2.94 r1 +3.00 r0