[tor-bugs] #18105 [Core Tor/Tor]: Replace getsockname with tor_getsockname

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Nov 16 07:09:48 UTC 2017


#18105: Replace getsockname with tor_getsockname
-------------------------------------------------+-------------------------
 Reporter:  teor                                 |          Owner:
                                                 |  eewayhsu
     Type:  enhancement                          |         Status:
                                                 |  needs_revision
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.3.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  easy, intro, api, code-              |  Actual Points:
  simplification                                 |
Parent ID:                                       |         Points:  small
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by teor):

 Replying to [comment:15 callumw]:
 > Replying to [comment:14 nickm]:
 > > The idea would be to have a new, different function that only outputs
 the tor_addr_t -- not the sockaddr or the address_len.
 >
 > So would we want to pass the sockaddr and address_len by value instead
 of by reference? Otherwise I do not know another way to derive the
 tor_addr_t.

 Hi, thanks for your persistence, sorry it has taken a while for someone to
 reply.

 `struct sockaddr_storage` is large enough to hold an IPv4 or IPv6 address.
 So we can pass a local variable of that type to getsockname(), even if we
 don't know the size of the address. On return, it will have the right
 address in it.

 Similarly, we can initialise a local `socklen_t` variable to the size of
 sockaddr_storage. On return, it will have the right size in it.

 Then, we can call tor_addr_from_sockaddr() to populate the tor_addr_t. And
 it turns out we don't even need the size for this.

 Does that help?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/18105#comment:17>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list