ports/156813: [PATCH] deskutils/lightning-thunderbird: Patch to require only one time the master password for all distant calendars

Geoffroy Desvernay dgeo at centrale-marseille.fr
Wed May 4 13:30:17 UTC 2011


>Number:         156813
>Category:       ports
>Synopsis:       [PATCH] deskutils/lightning-thunderbird: Patch to require only one time the master password for all distant calendars
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 04 13:30:09 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Geoffroy Desvernay
>Release:        FreeBSD 8.2-RELEASE-p1 amd64
>Organization:
Ecole Centrale de Marseille
>Environment:
System: FreeBSD dgeo.sysadm.ec-m.fr 8.2-RELEASE-p1 FreeBSD 8.2-RELEASE-p1 #0: Fri Apr 22 01:04:23 CEST 2011
>Description:
Patch to require only one time the master password for all distant calendars

This circumvent an annoying problem in lightning-thunderbird: it opens as many dialog boxes 'Enter master password' as the number of distant calendars registered in lightning (plus one for imap/pop/news/... accounts by thunderbird)
With this patch, (that may be included upstream later, see bugzilla), I only get two (one for thunderbird and one for lightning)...
Refs: https://bugzilla.mozilla.org/show_bug.cgi?id=349641
Patch: https://bug349641.bugzilla.mozilla.org/attachment.cgi?id=528856

Added file(s):
- files/patch-calendar:base:modules:calAuthUtils.jsm

Port maintainer (gecko at FreeBSD.org) is cc'd.

Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:

--- lightning-thunderbird-1.0_1.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/deskutils/lightning-thunderbird.orig/files/patch-calendar:base:modules:calAuthUtils.jsm /usr/ports/deskutils/lightning-thunderbird/files/patch-calendar:base:modules:calAuthUtils.jsm
--- /usr/ports/deskutils/lightning-thunderbird.orig/files/patch-calendar:base:modules:calAuthUtils.jsm	1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/deskutils/lightning-thunderbird/files/patch-calendar:base:modules:calAuthUtils.jsm	2011-04-28 20:47:47.000000000 +0200
@@ -0,0 +1,73 @@
+--- calendar/base/modules/calAuthUtils.jsm
++++ calendar/base/modules/calAuthUtils.jsm
+@@ -314,42 +314,39 @@ cal.auth.Prompt.prototype = {
+      *        the caller should fall back to promptUsernameAndPassword().
+      */
+     asyncPromptAuth : function capAPA(aChannel,   // nsIChannel
+                                       aCallback,  // nsIAuthPromptCallback
+                                       aContext,   // nsISupports
+                                       aLevel,     // PRUint32
+                                       aAuthInfo   // nsIAuthInformation
+                                 ) {
+-        let hostRealm = {};
+-        hostRealm.prePath = aChannel.URI.prePath;
+-        hostRealm.realm = aAuthInfo.realm;
+-        let port = aChannel.URI.port;
+-        if (port == -1) {
+-            let handler = cal.getIOService().getProtocolHandler(aChannel.URI.scheme)
+-                                            .QueryInterface(Components.interfaces.nsIProtocolHandler);
+-            port = handler.defaultPort;
+-        }
+-        hostRealm.passwordRealm = aChannel.URI.host + ":" + port + " (" + aAuthInfo.realm + ")";
++        var self=this;
++      
++        let promptlistener={
+ 
+-        let pw = this.getPasswordInfo(hostRealm);
+-        aAuthInfo.username = pw.username;
+-        if (pw && pw.found) {
+-            aAuthInfo.password = pw.password;
+-            // We cannot call the callback directly here so call it from a timer
+-            let timerCallback = {
+-                notify: function(timer) {
+-                    aCallback.onAuthAvailable(aContext, aAuthInfo);
+-                }
+-            };
+-            let timer = Components.classes["@mozilla.org/timer;1"]
+-                        .createInstance(Components.interfaces.nsITimer);
+-            timer.initWithCallback(timerCallback,
+-                                   0,
+-                                   Components.interfaces.nsITimer.TYPE_ONE_SHOT);
+-        } else {
+-            let prompter2 = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+-                                      .getService(Components.interfaces.nsIPromptFactory)
+-                                      .getPrompt(null, Components.interfaces.nsIAuthPrompt2);
+-            prompter2.asyncPromptAuth(aChannel, aCallback, aContext, aLevel, aAuthInfo);
+-        }
++          onPromptStart : function() {
++            
++            res=self.promptAuth(aChannel, aLevel, aAuthInfo);
++            
++            if (res) {
++              this.onPromptAuthAvailable();
++              return true;
++            }
++              
++            this.onPromptCanceled();
++            return false;
++          },
++
++          onPromptAuthAvailable : function() {
++            aCallback.onAuthAvailable(aContext, aAuthInfo);
++          },
++
++          onPromptCanceled : function() {
++            aCallback.onAuthCancelled(aContext, true);
++          }
++        };
++
++        var asyncprompter=Components.classes["@mozilla.org/messenger/msgAsyncPrompter;1"]  
++                          .getService(Components.interfaces.nsIMsgAsyncPrompter);
++        asyncprompter.queueAsyncAuthPrompt(aChannel.URI.spec, false, promptlistener);
+     }
+ };
--- lightning-thunderbird-1.0_1.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list