aboutsummaryrefslogtreecommitdiffstats
path: root/perl/Git.pm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim@guixotic.coop>2025-06-25 23:25:11 +0900
committerJunio C Hamano <gitster@pobox.com>2025-06-25 09:43:59 -0700
commit1926d9b6dac2cc7584362fb9275b55c2904891d3 (patch)
tree993980cb19b01d539cbef378399825d1dda772bd /perl/Git.pm
parentcontrib: warn for invalid netrc file ports in git-credential-netrc (diff)
downloadgit-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.pm13
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 )