diff options
| author | Maxim Cournoyer <maxim@guixotic.coop> | 2025-06-25 23:25:11 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-06-25 09:43:59 -0700 |
| commit | 1926d9b6dac2cc7584362fb9275b55c2904891d3 (patch) | |
| tree | 993980cb19b01d539cbef378399825d1dda772bd /perl/Git.pm | |
| parent | contrib: warn for invalid netrc file ports in git-credential-netrc (diff) | |
| download | git-1926d9b6dac2cc7584362fb9275b55c2904891d3.tar.gz git-1926d9b6dac2cc7584362fb9275b55c2904891d3.zip | |
contrib: better support symbolic port names in git-credential-netrc
To improve support for symbolic port names in netrc files, this
changes does the following:
- Treat symbolic port names as ports, not protocols in git-credential-netrc
- Validate the SMTP server port provided to send-email
- Convert the above symbolic port names to their numerical values.
Before this change, it was not possible to have a SMTP server port set
to "smtps" in a netrc file (e.g. Emacs' ~/.authinfo.gpg), as it would
be registered as a protocol and break the match for a "smtp" protocol
host, as queried for by git-send-email.
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'perl/Git.pm')
| -rw-r--r-- | perl/Git.pm | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/perl/Git.pm b/perl/Git.pm index 6f47d653ab..090cf77dab 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -1061,6 +1061,19 @@ sub _close_cat_blob { delete @$self{@vars}; } +# Given PORT, a port number or service name, return its numerical +# value else undef. +sub port_num { + my ($port) = @_; + + # Port can be either a positive integer within the 16-bit range... + if ($port =~ /^\d+$/ && $port > 0 && $port <= (2**16 - 1)) { + return $port; + } + + # ... or a symbolic port (service name). + return scalar getservbyname($port, ''); +} =item credential_read( FILEHANDLE ) |
