Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tr_session::publicAddress seems wrong for IPv4 #5542

Closed
lvella opened this issue May 19, 2023 · 7 comments
Closed

tr_session::publicAddress seems wrong for IPv4 #5542

lvella opened this issue May 19, 2023 · 7 comments

Comments

@lvella
Copy link
Contributor

lvella commented May 19, 2023

What is the issue?

The relevant code is:

    if (type == TR_AF_INET)
    {
        // if user provided an address, use it.
        // otherwise, use any_ipv4 (0.0.0.0).
        return global_ip_cache_->bind_addr(type);
    }

Sorry if this is a false alarm, but unless the term "public address" is used though the code differently from the common accepted meaning of public address, due to NAT, bind address is almost never the public address, much less 0.0.0.0.

Which application of Transmission?

transmission-daemon

Which version of Transmission?

52b03c2

@tearfur
Copy link
Member

tearfur commented May 22, 2023

It seems to me that it is just the naming of the function that's strange. If you look the usages of tr_session::publicAddress(), its return value is mostly just used as the bind address.

@ckerr However, I do think that it got confused as the actual public address of the client here:

if (auto const addr = msgs->session->publicAddress(TR_AF_INET6); !addr.is_any())
{
TR_ASSERT(addr.is_ipv6());
tr_variantDictAddRaw(&val, TR_KEY_ipv6, &addr.addr.addr6, sizeof(addr.addr.addr6));
}

It looks like it is used as the ipv6 key of a BEP-10 handshake?

@ThePowerTool
Copy link

In this instance 0.0.0.0 is stated as a mask meaning "any address", as stated.

You specifically stated a concern with the use of "public address" but I don't see "public address" in the code you referenced, above.

@lvella
Copy link
Contributor Author

lvella commented May 23, 2023

You specifically stated a concern with the use of "public address" but I don't see "public address" in the code you referenced, above.

publicAddress is the name of the function containing that code

@ThePowerTool
Copy link

the term "public address" is used though the code differently

I did take a quick look at the code (before that post as you provided a handy pointer to the specific line) and saw the function publicAddress(). I didn't attribute the function to your comment as you specified "term" instead of "function." I'm very literal--and sometimes I screw that up.

As stated, it appears to be generically referring to the existing IP address on which the client resides. This is important because there are scenarios where you would specify a different IP address (hence, the publicAddress() function).

:-)

@tearfur
Copy link
Member

tearfur commented May 24, 2023

Especially now that we have tr_session::global_address(), publicAddress() should probably be renamed to bind_address() to avoid confusion.

tearfur added a commit to tearfur/transmission that referenced this issue May 30, 2023
ckerr pushed a commit to tearfur/transmission that referenced this issue Jun 18, 2023
ckerr pushed a commit to tearfur/transmission that referenced this issue Jun 18, 2023
ckerr pushed a commit that referenced this issue Jun 19, 2023
* fix: peer handshake reported wrong ipv6 address

#5542 (comment)
ckerr added a commit that referenced this issue Jun 19, 2023
commit 4b9b992
Author: Charles Kerr <charles@charleskerr.com>
Date:   Mon Jun 19 16:51:34 2023 -0500

    refactor: prefer std::map over QMap in transmission-qt (#5641)

    * refactor: use std::map instead of QMap in PrefsDialog.cc

    * refactor: use std::map instead of QMap in DetailsDialog.cc

    * refactor: use std::map instead of QMap in OptionsDialog.cc

    * refactor: use std::map instead of QMap in FileTreeModel.cc

commit 040bc8a
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Tue Jun 20 00:22:54 2023 +0300

    fix: Qt 6.5 deprecation warning (#5552)

commit 23a52fa
Author: LaserEyess <16581533+LaserEyess@users.noreply.github.com>
Date:   Mon Jun 19 16:51:20 2023 -0400

    fixup: dedup tr_rpc_address with tr_address (#5523)

    * fixup: dedup tr_rpc_address with tr_address

    tr_rpc_address was duplicating a lot of work that tr_address was doing a
    lot better. Fall back to using tr_address for ipv4/ipv6 connections and
    make a tr_unix_addr for handling unix sockets.

    * remove unnecessary functions

commit ddac059
Author: Василий Чай <basilefff@gmail.com>
Date:   Mon Jun 19 09:30:55 2023 +0400

    fix: return error when renaming into existing file (#5563)

commit b8ff35c
Author: tearfur <46261767+tearfur@users.noreply.github.com>
Date:   Mon Jun 19 08:06:31 2023 +0800

    handle IPv6 NAT during LTEP handshake (#5565)

    * fix: peer handshake reported wrong ipv6 address

    #5542 (comment)

commit fd583ac
Author: Charles Kerr <charles@charleskerr.com>
Date:   Sun Jun 18 17:36:39 2023 -0500

    deps: bump libfmt to v10.0.0 (#5635)

    seems to be semver/minor safe for our API use

    Fixes #5511.

    Possibly fixes #5627.

commit 1664088
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Sun Jun 18 15:55:43 2023 -0500

    chore: update generated transmission-web files (#5588)

commit 0fd7989
Author: Gary Elshaw <69029666+GaryElshaw@users.noreply.github.com>
Date:   Mon Jun 19 07:11:56 2023 +1200

    fix: restore png files that were corrupted in recent "compression" script

commit bd9d110
Author: Cœur <coeur@gmx.fr>
Date:   Sun Jun 18 20:32:34 2023 +0200

    fix 'setNeedsDisplay' is deprecated: first deprecated in macOS 10.14 (#5633)

commit 76166d8
Author: Cœur <coeur@gmx.fr>
Date:   Mon Jun 12 18:03:22 2023 +0200

    refactor: replace NSMutableDictionary with constant attributes (#5221)

commit c379cd7
Author: Robin Seth Ekman <robin.seth.ekman@gmail.com>
Date:   Mon Jun 12 03:19:54 2023 +0200

    fix: transmission-remote only list every other label (fixes #5571) (#5572)

commit 87f254a
Author: Charles Kerr <charles@charleskerr.com>
Date:   Sun Jun 11 18:52:45 2023 -0500

    chore: bump fast_float snaapshot to 5.2.0 (#5605)

commit 802619e
Author: tearfur <46261767+tearfur@users.noreply.github.com>
Date:   Mon Jun 12 07:27:01 2023 +0800

    fix: fixes and improvements to global IP query (#5510)

commit c8e84f8
Author: Charles Kerr <charles@charleskerr.com>
Date:   Sun Jun 11 16:28:43 2023 -0500

    ci: remove "brew update" step (#5606)

commit 60c68af
Author: Charles Kerr <charles@charleskerr.com>
Date:   Sun Jun 11 11:25:35 2023 -0500

    Revert "fix: some labels not displayed in transmission-remote (#5600)"

    This reverts commit ebd5080.

commit ebd5080
Author: Charles Kerr <charles@charleskerr.com>
Date:   Sat Jun 10 19:01:32 2023 -0500

    fix: some labels not displayed in transmission-remote (#5600)

    Fixes #5571.

commit 8ca02b8
Author: Mike Gelfand <mikedld@users.noreply.github.com>
Date:   Sun Jun 11 02:09:18 2023 +0400

    Avoid locale use in `tr_truncd()` (#5587)

    `tr_parseNum<>()` is implemented with `fast_float::from_chars()`, and
    the latter is documented as "expecting a locale-indepent format
    equivalent to what is used by std::strtod in the default ("C") locale".
    To accomodate locale independent number parsing, switch back to
    locale-independent number formatting in `tr_truncd()` by both removing a
    `L` format specifier from `fmt::format_to_n()` call and using a fixed
    "." decimal separator when truncating the value.

commit 0ef58c2
Author: Charles Kerr <charles@charleskerr.com>
Date:   Mon Jun 5 17:03:11 2023 -0500

    chore: improve lossless compression of png files (#5586)

commit c1c27f3
Author: Daniel Kamil Kozar <dkk089@gmail.com>
Date:   Mon Jun 5 20:15:32 2023 +0200

    Expose files' begin and end pieces via RPC (#5578)

    * Expose files' begin and end pieces via RPC

    This adds two arguments, `beginPiece` and `endPiece`, for each of the entries
    in the `files` array of the RPC's `torrent-`get` method.

    The point is to allow RPC clients to display a file's completion progress as
    piece-based in addition to byte-based.

commit 61679e1
Author: Cœur <coeur@gmx.fr>
Date:   Mon May 29 15:43:43 2023 +0200

    Support localized punctuation for "Port:" (#4452)

    * Support localized punctuation for "Port:"

    * Code review: adopting "Port: %@"

    * updating other locales for "Port" -> "Port: %@"
@tearfur
Copy link
Member

tearfur commented Jun 22, 2023

Especially now that we have tr_session::global_address(), publicAddress() should probably be renamed to bind_address() to avoid confusion.

Renamed in #5644.

Edit: Should be #5643. :P

@ckerr
Copy link
Member

ckerr commented Jul 1, 2023

Did 5644 resolve this ticket? (TBH I think I might be misunderstanding the request and have been standing back since @tearfur seems to be doing great on these issues)

@tearfur tearfur closed this as completed Jul 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

4 participants