[gnome-maps/gnome-3-38] photonGeocode: Set HTTP timeout



commit 3294a6539a8735516079c3b30d20fed65b86a5e8
Author: Marcus Lundblad <ml update uu se>
Date:   Wed Sep 23 22:01:09 2020 +0200

    photonGeocode: Set HTTP timeout
    
    Set timeout on the SoupSession and activate the
    callback with the status code on errors.

 src/photonGeocode.js | 29 +++++++++++++++++++----------
 1 file changed, 19 insertions(+), 10 deletions(-)
---
diff --git a/src/photonGeocode.js b/src/photonGeocode.js
index 980e9b47..0de55dd2 100644
--- a/src/photonGeocode.js
+++ b/src/photonGeocode.js
@@ -30,9 +30,14 @@ const PhotonParser = imports.photonParser;
 const Service = imports.service;
 const Utils = imports.utils;
 
+// HTTP session timeout (in seconds)
+const TIMEOUT = 5;
+
 var PhotonGeocode = class {
     constructor() {
-        this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version });
+        this._session =
+            new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version,
+                               timeout:     TIMEOUT });
         this._readService();
         this._limit = Application.settings.get('max-search-results');
     }
@@ -50,15 +55,19 @@ var PhotonGeocode = class {
             if (cancellable.is_cancelled())
                 return;
 
-            try {
-                let result = this._parseMessage(message.response_body.data);
-                if (!result)
-                    callback(null, null);
-                else
-                    callback(result, null);
-            } catch (e) {
-                Utils.debug('Error: ' + e);
-                callback(null, e);
+            if (message.status_code !== Soup.KnownStatusCode.OK) {
+                callback(null, msg.status_code);
+            } else {
+                try {
+                    let result = this._parseMessage(message.response_body.data);
+                    if (!result)
+                        callback(null, null);
+                    else
+                        callback(result, null);
+                } catch (e) {
+                    Utils.debug('Error: ' + e);
+                    callback(null, e);
+                }
             }
         });
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]