]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.maps/src/org/simantics/maps/eclipse/EclipseProxyUtil.java
Prevent leakage of OSGI service references
[simantics/district.git] / org.simantics.district.maps / src / org / simantics / maps / eclipse / EclipseProxyUtil.java
index 601a82f7942c3899e1484f2a11faccd336282146..9e58c69ddc340a648f84411f38e76084da2fafe8 100644 (file)
@@ -42,13 +42,17 @@ public class EclipseProxyUtil implements IProxyUtil {
             return null;
 
         IProxyService service = bc.getService(ref);
-        if (service != null && service.isProxiesEnabled()) {
-            IProxyData proxyData = service.getProxyData(IProxyData.HTTP_PROXY_TYPE);
-            if (proxyData != null && proxyData.getHost() != null) {
-                return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyData.getHost(), proxyData.getPort()));
+        try {
+            if (service != null && service.isProxiesEnabled()) {
+                IProxyData proxyData = service.getProxyData(IProxyData.HTTP_PROXY_TYPE);
+                if (proxyData != null && proxyData.getHost() != null) {
+                    return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyData.getHost(), proxyData.getPort()));
+                }
             }
+            return null;
+        } finally {
+            bc.ungetService(ref);
         }
-        return null;
     }
 
 }