Dmitry,
The lines 197-241 still have wrong indent - must be 4.
Otherwise, it is good - reviewed.
Thanks,
Serguei
On 5/16/14 8:19 AM, Dmitry Samersoff wrote:
Serguei,
Fixed in place, please press shift-reload.
http://cr.openjdk.java.net/~dsamersoff/JDK-8041435/webrev.02/
-Dmitry
On 2014-05-16 03:19, serguei.spit...@oracle.com wrote:
On 5/15/14 3:20 PM, serguei.spit...@oracle.com wrote:
Dmitry,
I've reviewed the .01 webrev.
Sorry, wanted to say .02 webrev.
Thanks,
Serguei
src/share/transport/socket/socketTransport.c
Lines 197-240: to be consistent with the rest of the file the indent must be 4,
not 2.
The comment at the line 200 is better to start from capital letter: "It looks up
..."
202 struct addrinfo hints, *res;
...
205 memset(&hints, 0, sizeof(hints));
Would it more simple to use initialization instead of memset:
202 struct addrinfo hints = { 0 };
203 struct addrinfo *res = NULL;
The space is missed after the commas and around '+':
228 n = strtoul(s_port,&eptr,10);
229 if (eptr != s_port+strlen(s_port)) {
247 memset((void *)sa,0,sizeof(struct sockaddr_in));
261 } else if (strncmp(address,"localhost:",10) == 0) {
Unnecessary dot:
235 // invalid port number.
The n is declared as u_long but a cast to u_short is used in comparison:
220 u_long n;
...
234 if (n > (u_short) -1) {
Not sure I understand the condition at line 234.
The unsigned long n is always bigger than -1, right?
Or the type u_long is not unsigned long?
Thanks,
Serguei
On 5/15/14 12:31 PM, Dmitry Samersoff wrote:
Dan,
Thank you for the review. Next version is:
http://cr.openjdk.java.net/~dsamersoff/JDK-8041435/webrev.02/
please, see below.
On 2014-05-15 19:58, Daniel D. Daugherty wrote:
On 5/15/14 5:50 AM, Dmitry Samersoff wrote:
Hi Everyone,
Please review the fix:
http://cr.openjdk.java.net/~dsamersoff/JDK-8041435/webrev.01/
src/share/transport/socket/socketTransport.c
line 200: // it lookups "localhost" and return 127.0.0.1 if lookup
Typo: "it lookups" -> "it looks up"
Typo: "and return 127.0.0.1" -> "and returns 127.0.0.1"
fixed. .
line 210: return dbgsysHostToNetworkLong(INADDR_LOOPBACK);
nit: indent should be 4-spaces (for this file)
fixed.
line 235: u_short port = (u_short)atoi(address+10);
Will this crash on "localhost:"? (colon, but no port number)
line 236: sa->sin_port = dbgsysHostToNetworkShort(port);
If atoi() on line 235 is passed a non-decimal, what will the
value of 'port' be and what will happen here?
line 241: u_short port = (u_short)atoi(address+2);
line 242: sa->sin_port = dbgsysHostToNetworkShort(port);
Same questions about these two lines...
Original code doesn't have any guards for invalid user input and I plan
to add it later as a part of upcoming cleanup.
But it's worth to do it now. I also add a test for it.
old line 440: err = parseAddress(addressString, &sa, 0x7f000001);
Is it bad that my brain automatically translated that HEX
string into 127.0.0.1? I guess I still remember networking
code...
Yes, you are correct. It's a bad way to specify loopback address. I
replaced it with INADDR_LOOPBACK.
I checked out this doc:
http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/conninv.html
Thanks!
-Dmitry
and the help message:
$ java -agentlib:jdwp=help
Java Debugger JDWP Agent Library
--------------------------------
(see http://java.sun.com/products/jpda for more information)
jdwp usage: java -agentlib:jdwp=[help]|[<option>=<value>, ...]
Option Name and Value Description Default
--------------------- ----------- -------
suspend=y|n wait on startup? y
transport=<name> transport spec none
address=<listen/attach address> transport spec ""
server=y|n listen for debugger? n
launch=<command line> run debugger on event none
onthrow=<exception name> debug on throw none
onuncaught=y|n debug on any uncaught? n
timeout=<timeout value> for listen/attach in milliseconds n
mutf8=y|n output modified utf-8 n
quiet=y|n control over terminal messages n
Obsolete Options
----------------
strict=y|n
stdalloc=y|n
Examples
--------
- Using sockets connect to a debugger at a specific address:
java -agentlib:jdwp=transport=dt_socket,address=localhost:8000 ...
- Using sockets listen for a debugger to attach:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y ...
Notes
-----
- A timeout value of 0 (the default) is no timeout.
Warnings
--------
- The older -Xrunjdwp interface can still be used, but will be removed in
a future release, for example:
java -Xdebug -Xrunjdwp:[help]|[<option>=<value>, ...]
I don't think your change requires any doc changes...
Dan
After the fix, JDWP server attempts to guess localhost address and bind
to it only if no address is specified in command line but user can
explicitly bind server to all of available addresses by using * as an
address.