[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
http.agent patch
From: |
Mark Wielaard |
Subject: |
http.agent patch |
Date: |
Sun, 11 Jul 2004 22:47:17 +0200 |
Hi,
Both Tom and Michael had some comments on my last patch to set the http
agent for HTTP connections. I believe the following patch addresses both
concerns and makes sure that even when the Connection class is
loaded/initialized from a class with not enough permissions it can still
get at the necessary system properties.
2004-07-11 Mark Wielaard <address@hidden>
* java/lang/System.java (static): Set http.agent system property when
not yet set.
* gnu/java/net/protocol/http/Connection.java (static): Get httpAgent
from system property inside AccessController.doPrivileged() call.
Sorry for not handling this before 0.10 got released.
OK to commit?
Cheers,
Mark
Index: gnu/java/net/protocol/http/Connection.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/net/protocol/http/Connection.java,v
retrieving revision 1.17
diff -u -r1.17 Connection.java
--- gnu/java/net/protocol/http/Connection.java 27 Jun 2004 19:37:10 -0000
1.17
+++ gnu/java/net/protocol/http/Connection.java 11 Jul 2004 20:46:24 -0000
@@ -1,5 +1,6 @@
/* HttpURLConnection.java -- URLConnection class for HTTP protocol
- Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -52,6 +53,8 @@
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -76,41 +79,45 @@
* The socket we are connected to
*/
private Socket socket;
- private static int proxyPort = 80;
- private static boolean proxyInUse = false;
- private static String proxyHost = null;
-
- private static final String userAgent;
+
+ // Properties depeending on system properties settings
+ static int proxyPort = 80;
+ static boolean proxyInUse = false;
+ static String proxyHost = null;
+ static String userAgent;
static
{
- // Recognize some networking properties listed at
- // http://java.sun.com/j2se/1.4/docs/guide/net/properties.html.
- String port = null;
- proxyHost = System.getProperty("http.proxyHost");
- if (proxyHost != null)
- {
- proxyInUse = true;
- if ((port = System.getProperty("http.proxyPort")) != null)
- {
- try
- {
- proxyPort = Integer.parseInt(port);
- }
- catch (Throwable t)
- {
- // Nothing.
- }
- }
- }
+ // Make sure access control for system properties depends only on
+ // our class ProtectionDomain, not on any (indirect) callers.
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run()
+ {
+ // Recognize some networking properties listed at
+ // http://java.sun.com/j2se/1.4/docs/guide/net/properties.html.
+ String port = null;
+ proxyHost = System.getProperty("http.proxyHost");
+ if (proxyHost != null)
+ {
+ proxyInUse = true;
+ if ((port = System.getProperty("http.proxyPort")) != null)
+ {
+ try
+ {
+ proxyPort = Integer.parseInt(port);
+ }
+ catch (Throwable t)
+ {
+ // Nothing.
+ }
+ }
+ }
+
+ userAgent = System.getProperty("http.agent");
- userAgent = "gnu-classpath/"
- + System.getProperty("gnu.classpath.version")
- + " ("
- + System.getProperty("gnu.classpath.vm.shortname")
- + "/"
- + System.getProperty("java.vm.version")
- + ")";
+ return null;
+ }
+ });
}
/**
Index: java/lang/System.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/System.java,v
retrieving revision 1.37
diff -u -r1.37 System.java
--- java/lang/System.java 8 Jul 2004 14:40:32 -0000 1.37
+++ java/lang/System.java 11 Jul 2004 20:46:24 -0000
@@ -1,5 +1,6 @@
/* System.java -- useful methods to interface with the system
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -95,6 +96,20 @@
defaultProperties.put("gnu.classpath.vm.shortname", value);
}
+ // Network properties
+ if (defaultProperties.get("http.agent") == null)
+ {
+ String userAgent
+ = ("gnu-classpath/"
+ + defaultProperties.getProperty("gnu.classpath.version")
+ + " ("
+ + defaultProperties.getProperty("gnu.classpath.vm.shortname")
+ + "/"
+ + defaultProperties.getProperty("java.vm.version")
+ + ")");
+ defaultProperties.put("http.agent", userAgent);
+ }
+
defaultProperties.put("gnu.cpu.endian",
VMSystem.isWordsBigEndian() ? "big" : "little");
signature.asc
Description: This is a digitally signed message part
- http.agent patch,
Mark Wielaard <=