On 9/19/06, Mikhail Markov (JIRA) <[EMAIL PROTECTED]> wrote:
> [
> http://issues.apache.org/jira/browse/HARMONY-1462?
page=comments#action_12435743]
>
> Mikhail Markov commented on HARMONY-1462:
> -----------------------------------------
>
> I absolutely agree that '*' should be supported as a port number.
> But API spec clearly says that: "portrange = portnumber | -
portnumber |
> portnumber-[portnumber]" (but still RI supports it!) - that's
why i put it
> to "Non-bug differences" category. Possible fix for API spec?
Great analysis! We must follow rule [1], but spec do not restrict
"portnumber" in rule [1].
And the problem is that we must choose one of following
considerations:
1. We can take this JIRA as a "Non-bug differences" and consider
"portnumber" as ONLY numerical string ([0-9]*), it hints that RI
breaks spec
because RI receive "*" as a "portnumber".
For this case, we certainly need not to give any fix for Harmony.
2. We can think that "portnumber" is not only numerical string,
but also can
be "*". If so, because "*" indicates all ports(0-65535), so "-*"
and "*-" is
meaningless in rule[1].
If we choose 1., we should take this JIRA as a RI's bug for it
breaks the
But I think RI is innocent because the wildcard "*" is reasonable
and really
a helpful feature.
If we choose 2., we should just notice that "-*" and "*-" is
meaningless, as
an exception of rule [1], and rule[1] can be kept.
Then, we can improve Harmony safely with this helpful feature and
keep the
spec.
In fact, following test cases will pass on RI, indicating that "-
*" and "*-"
is meaningless and "*" is OK.
try {
new SocketPermission("localhost:-*", "listen");
fail("-* should be considered as an illegal port range.");
} catch (IllegalArgumentException e) {
// Expected
}
try {
new SocketPermission("localhost:*-", "listen");
fail("*- should be considered as an illegal port range.");
} catch (IllegalArgumentException e) {
// Expected
}
SocketPermission sp3 = new SocketPermission("localhost:*",
"listen");
So, IMO, 2 is better.
[1]: portrange = portnumber | -portnumber | portnumber-[portnumber]
> > [classlib][luni] SocketPermission does not accept '*' as a
port number
> >
---------------------------------------------------------------------
-
> >
> > Key: HARMONY-1462
> > URL: http://issues.apache.org/jira/browse/
HARMONY-1462
> > Project: Harmony
> > Issue Type: Bug
> > Components: Classlib
> > Environment: Win XP
> > Reporter: Mikhail Markov
> > Assigned To: Paulex Yang
> > Attachments: patch.diff
> >
> >
> > Although API specification does not explicitly allow '*' usage
as a port
> number for SocketPermission, RI accept '*' as a port number
(representing
> the full port range from 0 to 65535).
> > ============== Test.java =================
> > import java.net.SocketPermission;
> > public class Test {
> > public static void main(String[] args) throws Exception {
> > try {
> > SocketPermission sp = new SocketPermission
("localhost:*",
> "listen");
> > System.out.println("'*' for port is ok.");
> > } catch (IllegalArgumentException iae) {
> > System.out.println("'*' for port is not ok: " + iae);
> > }
> > }
> > }
> > ======================================
> > Output on RI:
> > '*' for port is ok.
> > Output on Harmony:
> > '*' for port is not ok: java.lang.IllegalArgumentException:
Invalid port
> number specified
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the
administrators:
> http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see: http://www.atlassian.com/
software/jira
>
>
>
--
Robert Hu
China Software Development Lab, IBM