From unknown Fri Jun 20 07:17:01 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#27012 <27012@debbugs.gnu.org> To: bug#27012 <27012@debbugs.gnu.org> Subject: Status: 26.0.50; eww does not generate Referer headers Reply-To: bug#27012 <27012@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:17:01 +0000 retitle 27012 26.0.50; eww does not generate Referer headers reassign 27012 emacs submitter 27012 Lars Ingebrigtsen severity 27012 normal tag 27012 patch fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Sun May 21 17:42:18 2017 Received: (at submit) by debbugs.gnu.org; 21 May 2017 21:42:18 +0000 Received: from localhost ([127.0.0.1]:59669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCYcD-0004oa-Qi for submit@debbugs.gnu.org; Sun, 21 May 2017 17:42:18 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55006) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCYcC-0004oM-Py for submit@debbugs.gnu.org; Sun, 21 May 2017 17:42:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCYc6-000295-JU for submit@debbugs.gnu.org; Sun, 21 May 2017 17:42:11 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:35917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dCYc6-00028z-GQ for submit@debbugs.gnu.org; Sun, 21 May 2017 17:42:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCYc4-00066s-PK for bug-gnu-emacs@gnu.org; Sun, 21 May 2017 17:42:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCYc1-00028S-Lv for bug-gnu-emacs@gnu.org; Sun, 21 May 2017 17:42:08 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:39072) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dCYc1-00027Y-FN for bug-gnu-emacs@gnu.org; Sun, 21 May 2017 17:42:05 -0400 Received: from cm-84.209.243.26.getinternet.no ([84.209.243.26] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1dCYbp-0004uc-GO for bug-gnu-emacs@gnu.org; Sun, 21 May 2017 23:41:55 +0200 From: Lars Ingebrigtsen To: bug-gnu-emacs@gnu.org Subject: 26.0.50; eww does not generate Referer headers Date: Sun, 21 May 2017 23:41:53 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) This makes it impossible to log in to services like https://secure.last.fm/login which results in --- You are seeing this message because this HTTPS site requires a 'Referer header' to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties. --- eww should always generate Referer headers when following links or posting forms. In GNU Emacs 26.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.14.5) of 2017-04-24 built on stories Repository revision: a1f93c1dfa53dbe007faa09ab0c6e913e86e3ffe Windowing system distributor 'The X.Org Foundation', version 11.0.11604000 System Description: Debian GNU/Linux 8.7 (jessie) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon May 22 08:18:59 2017 Received: (at 27012) by debbugs.gnu.org; 22 May 2017 12:18:59 +0000 Received: from localhost ([127.0.0.1]:60112 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCmId-0000q6-0e for submit@debbugs.gnu.org; Mon, 22 May 2017 08:18:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:38491) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCmIa-0000pt-S7 for 27012@debbugs.gnu.org; Mon, 22 May 2017 08:18:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCmIU-0000d0-Uu for 27012@debbugs.gnu.org; Mon, 22 May 2017 08:18:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:38059) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCmIG-0000UH-VL; Mon, 22 May 2017 08:18:36 -0400 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1dCmIG-0001DB-Cr; Mon, 22 May 2017 08:18:36 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Lars Ingebrigtsen In-reply-to: (message from Lars Ingebrigtsen on Sun, 21 May 2017 23:41:53 +0200) Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Message-Id: Date: Mon, 22 May 2017 08:18:36 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 27012 Cc: 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > eww should always generate Referer headers when following links or > posting forms. For users' privacy, we should not give real values for the referrer field, except in special cases. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From debbugs-submit-bounces@debbugs.gnu.org Mon May 22 08:28:10 2017 Received: (at 27012) by debbugs.gnu.org; 22 May 2017 12:28:10 +0000 Received: from localhost ([127.0.0.1]:60119 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCmRV-00013l-Tg for submit@debbugs.gnu.org; Mon, 22 May 2017 08:28:10 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:44748) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCmRU-00013d-Pz for 27012@debbugs.gnu.org; Mon, 22 May 2017 08:28:09 -0400 Received: from cm-84.209.243.26.getinternet.no ([84.209.243.26] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1dCmRR-00029A-By; Mon, 22 May 2017 14:28:07 +0200 From: Lars Ingebrigtsen To: Richard Stallman Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEUAAABynMyw0NdCW4wC AQIYHChTfLom+E7SAAACWElEQVQ4jW2UwY6jMAyGc0gfwEGTezISd+rCOVLDnRlI7zRav/8j7O8A lVZaCwWaDzv2b1Njmlmbk8nJ5oynZibZUgozj2Vlva+sP2zG21vOq4w5z4xry9u85fW2KTBm3msy ltOtLnaZx5kPYJP96bYGZLnltbIcAPFmegAsT3k8yyR1amAEyNOfZNbl6R8/u4jUWQEXLM9uyeuy 1jKQB2keQ8V6mx5pfSBXirG/QEAYu36Z57g6AogfgJTS3KWXp7a/+wMw+S/oIeU3Bnh04e0FlVtT Bk9jsq8uxkDqEzwddRSifjM/MboYiXZPQrelFYjgXXnFZl687CdI80Sxc7p9j37HpSCbksw8xNOC vBXMS6s8mWd0V6T36WHM1JWUf9vrSEgQ6jyc4zeOocOjB0DKDZSf+F2uUxSgmrMfL2riHYcr8EfP oaBIONMCAGkeBboMcnpET+4CPKJ5LP+A1sHJ60zxccQB/BGKpe61gdCRV3nPrObpHYKeEYjvTXk6 s5rvqDmq5uywCF1zlV8aXQur90jumpItz+u7JbRrFEcXwHSjH5BO9oBIKP4AiXeaUK6vPKG7IX4G rqyToBuegSk4dficMWlKokc4FzBWfIGh5doMwlNlfGo28biqoqLbSLrfSRTgsxBMRtSuIlJ0vSdf G8CXIgcQiO96OkEuK2lWveYTyKk2HlNlMw8Y5tjzOx7BYBUg5wG5767yuwVrKuq0A7ig8kx3h4EW aPUBb4yF7JBQdmF9bukCUPMQ0kFnwlJrA/wfayBbc5pNxuTTzLmrN6v/ERf5C7BizF/IMQppAAAA AElFTkSuQmCC Date: Mon, 22 May 2017 14:28:05 +0200 In-Reply-To: (Richard Stallman's message of "Mon, 22 May 2017 08:18:36 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27012 Cc: 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Richard Stallman writes: > For users' privacy, we should not give real values for the referrer field, > except in special cases. What are those special cases? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon May 22 12:37:26 2017 Received: (at 27012) by debbugs.gnu.org; 22 May 2017 16:37:26 +0000 Received: from localhost ([127.0.0.1]:33128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCqKk-0000Q4-BK for submit@debbugs.gnu.org; Mon, 22 May 2017 12:37:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCqKi-0000Pr-5i for 27012@debbugs.gnu.org; Mon, 22 May 2017 12:37:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCqKc-0007kt-8f for 27012@debbugs.gnu.org; Mon, 22 May 2017 12:37:18 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43679) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCqKO-0007j2-CK; Mon, 22 May 2017 12:37:04 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1dCqKK-00054k-Dt; Mon, 22 May 2017 12:37:00 -0400 From: Glenn Morris To: Lars Ingebrigtsen Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: X-Spook: Smallpox Enriched Resistant Majic Gulf Cartel Armani X-Ran: ;~njzdQpp5;}bwd;tiC`r)5cX<%`sC(o-{~>_ra/_Ag<=@V}J)gp|qT)yp|/0*'\SVm)', X-Hue: white X-Debbugs-No-Ack: yes X-Attribution: GM Date: Mon, 22 May 2017 12:37:00 -0400 In-Reply-To: (Lars Ingebrigtsen's message of "Mon, 22 May 2017 14:28:05 +0200") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 27012 Cc: Richard Stallman , 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) You could look at how GNU Icecat handles this, eg network.http.referer.spoofSource. (I would guess every privacy issue eww might encounter has already been considered by Icecat.) From debbugs-submit-bounces@debbugs.gnu.org Mon May 22 12:53:47 2017 Received: (at 27012) by debbugs.gnu.org; 22 May 2017 16:53:47 +0000 Received: from localhost ([127.0.0.1]:33141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCqaY-0000nE-Vh for submit@debbugs.gnu.org; Mon, 22 May 2017 12:53:47 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:58942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCqaY-0000n5-1W for 27012@debbugs.gnu.org; Mon, 22 May 2017 12:53:46 -0400 Received: from cm-84.209.243.26.getinternet.no ([84.209.243.26] helo=stories) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1dCqaU-00030C-Ep; Mon, 22 May 2017 18:53:44 +0200 From: Lars Ingebrigtsen To: Glenn Morris Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEVOXX5pfZFKTGJFN0ha bYmPpKFzjaM1HRrHh4cEAAACd0lEQVQ4jVVUwW6jMBR0KR+Q1yXkakyqXpO4FVeILO4ksfe6qMH3 FlX8/s57QFbrKELyMDN+4/dQB5MYbZK9Ts57c9a6LE/W2pNVe1XX+6R+SjfUuk2TJokxZWkBuI1L 09j2IeR9JMo2hpdVBwZUGOIQgg8h9PcFeCKihoL3g/cejxCgZUqr3lVGTRtijGDx466USgx73GPj Iq+e/65egCeSHXj4i++oJ3dOxIMZvAbqtq9bn2cOHGYUzSxztXaa7PZGQLR5AGEoJ15jl5NTepYS hp+B6Zjnzs3meRyG0F3mfTsW0NLIRRVi3r0twFRQA0aynuo6resL5ihE6oDU7lt2K9gT8amM2qdg 9L5agGrcL4xCTtVVq9R4o9lDpGInznaEx2WVUmy+43ctFz+u5qh8GHoDqern12jFXKTEo+e67c/l 4zp96QYFruneqYLSj/fX6Vs7NdeRR9zqBUAlwLjnSIxZjwvXanxlIFukjgLcJA3vf4PRrOkGbhCJ XIA5klK9cyQxSCEnAPb272pRued47dbvpuPtcbU90vWdAC9v07FztXTJIsXxHj3tpva+SnGInm3h QW9j6GiWAiOHhwBFV36E29IlhzST9vlkgMrXeHfqP6lPuZDCB8rOPDnqoLJcOj1mictjj+6BFADc +QLIGPTxATjaYsejFtSDKcrQ7YtUG9s4r5x65x5S7BGXiaI+Q316YYDiUUmHww1d8LRKOdfgbfw6 GcHNn1lKu8y1AAYf2D/EzWVlKJWq2qUOd8qDiWhPFsAJnwyl6hSAWwGZc60FWBj4SCBAXgo0o+2z 1oa/PqIyA5q/RdjUSV3oc3Ion08C/AV1oB5AxCZWzAAAAABJRU5ErkJggg== Date: Mon, 22 May 2017 18:53:42 +0200 In-Reply-To: (Glenn Morris's message of "Mon, 22 May 2017 12:37:00 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27012 Cc: Richard Stallman , 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Glenn Morris writes: > You could look at how GNU Icecat handles this, eg > network.http.referer.spoofSource. (I would guess every privacy issue eww > might encounter has already been considered by Icecat.) network.http.referer.XOriginPolicy 0 - always send referrer (default). 1 - only send if base domains match. 2 - only send if hosts match. Adding something like this (and defaulting to 1) might make sense for eww. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon May 22 20:54:33 2017 Received: (at 27012) by debbugs.gnu.org; 23 May 2017 00:54:33 +0000 Received: from localhost ([127.0.0.1]:33528 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCy5p-0007Fx-8u for submit@debbugs.gnu.org; Mon, 22 May 2017 20:54:33 -0400 Received: from eggs.gnu.org ([208.118.235.92]:39841) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dCy5o-0007Fl-5j for 27012@debbugs.gnu.org; Mon, 22 May 2017 20:54:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCy5i-0000U9-9b for 27012@debbugs.gnu.org; Mon, 22 May 2017 20:54:27 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50526) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCy5V-0000OJ-9Q; Mon, 22 May 2017 20:54:13 -0400 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1dCy5U-00057P-PH; Mon, 22 May 2017 20:54:12 -0400 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Lars Ingebrigtsen In-reply-to: (message from Lars Ingebrigtsen on Mon, 22 May 2017 14:28:05 +0200) Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Message-Id: Date: Mon, 22 May 2017 20:54:12 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 27012 Cc: 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > For users' privacy, we should not give real values for the referrer field, > > except in special cases. > What are those special cases? I know of one: when page FOO uses Cloudflare, the Cloudflare CAPTCHA page insists on getting FOO as a referrer. I suppose there are others, but I only know of that one. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 12 19:04:17 2017 Received: (at 27012) by debbugs.gnu.org; 12 Jul 2017 23:04:17 +0000 Received: from localhost ([127.0.0.1]:35929 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVQg2-0001C7-5U for submit@debbugs.gnu.org; Wed, 12 Jul 2017 19:04:17 -0400 Received: from tarrant.klingenberg.no ([80.91.231.253]:37419) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVQfx-0001Bt-5B for 27012@debbugs.gnu.org; Wed, 12 Jul 2017 19:04:13 -0400 Received: from 55-36-11.connect.netcom.no ([176.11.36.55] helo=modesty.local) by tarrant.klingenberg.no with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1dVQfj-0005vB-6k for 27012@debbugs.gnu.org; Thu, 13 Jul 2017 01:04:03 +0200 Received: by modesty.local (Postfix, from userid 502) id D94461A9150C; Thu, 13 Jul 2017 01:03:48 +0200 (CEST) From: peder@klingenberg.no (Peder O. Klingenberg) To: 27012@debbugs.gnu.org Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Date: Thu, 13 Jul 2017 01:03:48 +0200 In-Reply-To: (Lars Ingebrigtsen's message of "Mon, 22 May 2017 18:53:42 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (darwin) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.9 (--) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27012 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Lars Ingebrigtsen writes: > 0 - always send referrer (default). > 1 - only send if base domains match. > 2 - only send if hosts match. > > Adding something like this (and defaulting to 1) might make sense for > eww. I took a stab at implementing this. It was trickier than I had anticipated. The URL library already had a mechanism of sorts for adding Referer headers, but it was as an optional argument to a helper function, and there was no way (short of code changes) of making the entry points of url.el pass that argument to the helper. Changing the signature of the url entry points and tracking down every caller didn't seem attractive to me. Instead, I reasoned that the referring url is a property of the page currently being displayed, so a buffer-local variable seemed natural. That hit a snag because eww uses url queues, and the queue runner didn't care what the current buffer was. So some requests got referrers, some didn't. I fixed the queue mechanism so it always calls url-retrieve from the same buffer that queued up the job. With the basic mechanism for sending the Referer header then working, I looked at limiting the distribution of it. url-privacy-level already existed, and had a basic on-off-knob for referrers, or "lastloc", as it's called in that variable. I left that alone, but added an additional user option - url-lastloc-privacy, with possible values "none", "domain-match" and "host-match" corresponding to the levels mentioned above, and with "domain-match" the default. So with this patch, eww sets up the buffer local url-current-lastloc when the page renders. Subsequent requests, be they automatic requests for images or other resources, or user-invoked link-following, get the correct Referer header if the privacy settings allow it. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Make-eww-optionally-send-Referer-headers.patch >From 2ab0fc7b9067f81712714dcb62c40d08fe05ab7a Mon Sep 17 00:00:00 2001 From: "Peder O. Klingenberg" Date: Thu, 13 Jul 2017 00:27:58 +0200 Subject: [PATCH] Make eww (optionally) send Referer-headers * lisp/net/eww.el (eww-render): Set url-current-lastloc to the url we are rendering, to get the referer header right on subsequent requests. * lisp/url/url-queue.el (url-queue): New struct member context-buffer for keeping track of the context a queued job started from. (url-queue-retrieve): Store the current buffer in the queue object. (url-queue-start-retrieve): Make sure url-retrieve is called in the context of the original buffer, if available. * doc/misc/url.texi (Customization): Describe the new user option url-lastloc-privacy. * lisp/url/url-http.el (url-http--get-referer): New function to determine which referer to send, if any, considering the users privacy settings and the target url we are visiting. (url-http-referer): New variable keeping track of the referer computed by url-http--get-referer (url-http-create-request): Use url-http-referer instead of the optional argument to set up the referer header. Leave checking of privacy settings to url-http--get-referer. (url-http): Set up url-http-referer by using url-http--get-referer. * lisp/url/url-util.el (url-domain): New function to determine the domain of a given URL. * lisp/url/url-vars.el (url-current-lastloc): New variable to keep track of the desired "last location" (referer header). (url-lastloc-privacy): New custom setting for more fine-grained control over how lastloc (referer) is sent to servers. (Bug#27012) --- doc/misc/url.texi | 14 ++++++++++++++ etc/NEWS | 16 ++++++++++++++++ lisp/net/eww.el | 7 +++++-- lisp/url/url-http.el | 52 +++++++++++++++++++++++++++++++++++++++------------ lisp/url/url-queue.el | 18 +++++++++++------- lisp/url/url-util.el | 29 ++++++++++++++++++++++++++++ lisp/url/url-vars.el | 28 ++++++++++++++++++++++++++- 7 files changed, 142 insertions(+), 22 deletions(-) diff --git a/doc/misc/url.texi b/doc/misc/url.texi index a3c625edce..c7532c0c32 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -1303,6 +1303,20 @@ Customization @end defopt @defopt url-privacy-level @end defopt +@defopt url-lastloc-privacy +Provided @code{lastloc} is not prohibited by @code{url-privacy-level}, +this determines who we send our last location to. @code{none} means +we include our last location in every outgoing request. +@code{domain-match} means we send it only if the domain of our last +location matches the domain of the URI we are requesting. +@code{host-match} means we only send our last location back to the +same host. The default is @code{domain-match}. + +Using @code{domain-match} for this option requires emacs to make one +or more DNS requests each time a new host is contacted, to determine +the domain of the host. Results of these lookups are cached, so +repeated visits do not require repeated domain lookups. +@end defopt @defopt url-uncompressor-alist @end defopt @defopt url-passwd-entry-func diff --git a/etc/NEWS b/etc/NEWS index dc9393c87d..90f96ad550 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -653,6 +653,11 @@ replaced by the real images asynchronously, which will also now respect width/height HTML specs (unless they specify widths/heights bigger than the current window). +--- +*** EWW now sends Referer headers +Provided they are allowed by 'url-privacy-level' and +'url-lastloc-privacy'. + ** Ido *** The commands 'find-alternate-file-other-window', @@ -871,6 +876,17 @@ domain. *** 'url-user-agent' now defaults to 'default', and the User-Agent string is computed dynamically based on 'url-privacy-level'. +--- +*** url-http now uses a buffer local variable to determine the referer +for a request. Previously, there was an optional argument to +'url-http-create-request' to set up a referer, but no callers were +using it. Now, callers can set up 'url-current-lastloc' in a buffer +before calling 'url-retrieve'. + ++++ +*** New user option 'url-lastloc-privacy' providing fine-grained +control over who we send referer-headers to. + ** VC and related modes --- diff --git a/lisp/net/eww.el b/lisp/net/eww.el index fe31657914..e922b4f834 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -271,7 +271,7 @@ eww (insert (format "Loading %s..." url)) (goto-char (point-min))) (url-retrieve url 'eww-render - (list url nil (current-buffer)))) + (list url nil (current-buffer)))) (defun eww--dwim-expand-url (url) (setq url (string-trim url)) @@ -359,7 +359,10 @@ eww-render ;; Save the https peer status. (plist-put eww-data :peer (plist-get status :peer)) ;; Make buffer listings more informative. - (setq list-buffers-directory url)) + (setq list-buffers-directory url) + ;; Let the URL library have a handle to the current URL for + ;; referer purposes. + (setq url-current-lastloc (url-generic-parse-url url))) (unwind-protect (progn (cond diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 06d32861b2..35a0f06d48 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -54,6 +54,7 @@ url-http-response-version (defvar url-http-target-url) (defvar url-http-transfer-encoding) (defvar url-show-status) +(defvar url-http-referer) (require 'url-gw) (require 'url-parse) @@ -238,6 +239,34 @@ url-http--user-agent-default-string emacs-info os-info)) " "))) +(defun url-http--get-referer (url) + (url-http-debug "getting referer from buffer: buffer:%S target-url:%S lastloc:%S" (current-buffer) url url-current-lastloc) + (when url-current-lastloc + (if (not (url-p url-current-lastloc)) + (setq url-current-lastloc (url-generic-parse-url url-current-lastloc))) + (let* ((referer url-current-lastloc) + (referer-string (url-recreate-url referer))) + (when (and (not (memq url-privacy-level '(low high paranoid))) + (not (and (listp url-privacy-level) + (memq 'lastloc url-privacy-level)))) + ;; url-privacy-level allows referer. But url-lastloc-privacy + ;; may restrict who we send it to. + (cl-case url-lastloc-privacy + (host-match + (let ((referer-host (url-host referer)) + (url-host (url-host url))) + (when (string= referer-host url-host) + referer-string))) + (domain-match + (let ((referer-domain (url-domain referer)) + (url-domain (url-domain url))) + (when (and referer-domain + url-domain + (string= referer-domain url-domain)) + referer-string))) + (otherwise + referer-string)))))) + ;; Building an HTTP request (defun url-http-user-agent-string () "Compute a User-Agent string. @@ -254,8 +283,9 @@ url-http-user-agent-string ((eq url-user-agent 'default) (url-http--user-agent-default-string)))))) (if ua-string (format "User-Agent: %s\r\n" (string-trim ua-string)) ""))) -(defun url-http-create-request (&optional ref-url) - "Create an HTTP request for `url-http-target-url', referred to by REF-URL." +(defun url-http-create-request () + "Create an HTTP request for `url-http-target-url', using `url-http-referer' +as the Referer-header (subject to `url-privacy-level'." (let* ((extra-headers) (request nil) (no-cache (cdr-safe (assoc "Pragma" url-http-extra-headers))) @@ -274,7 +304,8 @@ url-http-create-request (url-get-authentication (or (and (boundp 'proxy-info) proxy-info) - url-http-target-url) nil 'any nil)))) + url-http-target-url) nil 'any nil))) + (ref-url url-http-referer)) (if (equal "" real-fname) (setq real-fname "/")) (setq no-cache (and no-cache (string-match "no-cache" no-cache))) @@ -288,12 +319,6 @@ url-http-create-request (string= ref-url ""))) (setq ref-url nil)) - ;; We do not want to expose the referrer if the user is paranoid. - (if (or (memq url-privacy-level '(low high paranoid)) - (and (listp url-privacy-level) - (memq 'lastloc url-privacy-level))) - (setq ref-url nil)) - ;; url-http-extra-headers contains an assoc-list of ;; header/value pairs that we need to put into the request. (setq extra-headers (mapconcat @@ -1255,7 +1280,8 @@ url-http (mime-accept-string url-mime-accept-string) (buffer (or retry-buffer (generate-new-buffer - (format " *http %s:%d*" (url-host url) (url-port url)))))) + (format " *http %s:%d*" (url-host url) (url-port url))))) + (referer (url-http--get-referer url))) (if (not connection) ;; Failed to open the connection for some reason (progn @@ -1290,7 +1316,8 @@ url-http url-http-no-retry url-http-connection-opened url-mime-accept-string - url-http-proxy)) + url-http-proxy + url-http-referer)) (set (make-local-variable var) nil)) (setq url-http-method (or url-request-method "GET") @@ -1308,7 +1335,8 @@ url-http url-http-no-retry retry-buffer url-http-connection-opened nil url-mime-accept-string mime-accept-string - url-http-proxy url-using-proxy) + url-http-proxy url-using-proxy + url-http-referer referer) (set-process-buffer connection buffer) (set-process-filter connection 'url-http-generic-filter) diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index dd1699bd08..db0c16c793 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -52,7 +52,7 @@ url-queue-progress-timer (cl-defstruct url-queue url callback cbargs silentp buffer start-time pre-triggered - inhibit-cookiesp) + inhibit-cookiesp context-buffer) ;;;###autoload (defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies) @@ -67,7 +67,8 @@ url-queue-retrieve :callback callback :cbargs cbargs :silentp silent - :inhibit-cookiesp inhibit-cookies)))) + :inhibit-cookiesp inhibit-cookies + :context-buffer (current-buffer))))) (url-queue-setup-runners)) ;; To ensure asynch behavior, we start the required number of queue @@ -147,11 +148,14 @@ url-queue-remove-jobs-from-host (defun url-queue-start-retrieve (job) (setf (url-queue-buffer job) (ignore-errors - (let ((url-request-noninteractive t)) - (url-retrieve (url-queue-url job) - #'url-queue-callback-function (list job) - (url-queue-silentp job) - (url-queue-inhibit-cookiesp job)))))) + (with-current-buffer (if (buffer-live-p (url-queue-context-buffer job)) + (url-queue-context-buffer job) + (current-buffer)) + (let ((url-request-noninteractive t)) + (url-retrieve (url-queue-url job) + #'url-queue-callback-function (list job) + (url-queue-silentp job) + (url-queue-inhibit-cookiesp job))))))) (defun url-queue-prune-old-entries () (let (dead-jobs) diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el index a3c9655ebd..6be0a05314 100644 --- a/lisp/url/url-util.el +++ b/lisp/url/url-util.el @@ -627,6 +627,35 @@ url-make-private-file (error "Danger: `%s' is a symbolic link" file)) (set-file-modes file #o0600)))) +(autoload 'dns-query "dns") + +(defvar url--domain-cache (make-hash-table :test 'equal :size 17) + "Cache to minimize dns lookups.") + +;;;###autoload +(defun url-domain (url) + "Return the domain of the host of the url, or nil if url does +not contain a registered name." + ;; Determining the domain of a name can not be done with simple + ;; textual manipulations. a.b.c is either host a in domain b.c + ;; (www.google.com), or domain a.b.c with no separate host + ;; (bbc.co.uk). Instead of guessing based on tld (which in any case + ;; may be inaccurate in the face of subdelegations), we look for + ;; domain delegations in DNS. + ;; + ;; Domain delegations change rarely enough that we won't bother with + ;; cache invalidation, I think. + (let* ((host-parts (split-string (url-host url) "\\.")) + (result (gethash host-parts url--domain-cache 'not-found))) + (when (eq result 'not-found) + (setq result + (cl-loop for parts on host-parts + for dom = (mapconcat #'identity parts ".") + when (dns-query dom 'SOA) + return dom)) + (puthash host-parts result url--domain-cache)) + result)) + (provide 'url-util) ;;; url-util.el ends here diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index f08779f695..41ed6d57d8 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -60,10 +60,18 @@ url-current-object (defvar url-current-mime-headers nil "A parsed representation of the MIME headers for the current URL.") +(defvar url-current-lastloc nil + "A parsed representation of the URL to be considered as the last location. +Use of this value on outbound connections is subject to +`url-privacy-level' and `url-lastloc-privacy'. This is never set +by the url library, applications are expected to set this +variable in buffers representing a displayed location.") + (mapc 'make-variable-buffer-local '( url-current-object url-current-mime-headers + url-current-lastloc )) (defcustom url-honor-refresh-requests t @@ -117,7 +125,7 @@ url-privacy-level email -- the email address os -- the operating system info emacs -- the version of Emacs -lastloc -- the last location +lastloc -- the last location (see also `url-lastloc-privacy') agent -- do not send the User-Agent string cookies -- never accept HTTP cookies @@ -150,6 +158,24 @@ url-privacy-level (const :tag "No cookies" :value cookie))) :group 'url) +(defcustom url-lastloc-privacy 'domain-match + "Further restrictions on sending the last location. +This value is only consulted if `url-privacy-level' permits +sending last location in the first place. + +Valid values are: +none -- Always send last location. +domain-match -- Send last location if the new location is within the + same domain +host-match -- Send last location if the new location is on the + same host +" + :version "26.1" + :type '(radio (const :tag "Always send" none) + (const :tag "Domains match" domain-match) + (const :tag "Hosts match" host-match)) + :group 'url) + (defvar url-inhibit-uncompression nil "Do not do decompression if non-nil.") (defcustom url-uncompressor-alist '((".z" . "x-gzip") -- 2.11.0 --=-=-= Content-Type: text/plain -- ...Peder... --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 13 03:16:46 2017 Received: (at 27012) by debbugs.gnu.org; 13 Jul 2017 07:16:46 +0000 Received: from localhost ([127.0.0.1]:36161 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVYMg-0006TF-Dd for submit@debbugs.gnu.org; Thu, 13 Jul 2017 03:16:46 -0400 Received: from mx2.suse.de ([195.135.220.15]:56225 helo=mx1.suse.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVYMd-0006T6-KM for 27012@debbugs.gnu.org; Thu, 13 Jul 2017 03:16:44 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 8999BABDE; Thu, 13 Jul 2017 07:16:42 +0000 (UTC) From: Andreas Schwab To: peder@klingenberg.no (Peder O. Klingenberg) Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: X-Yow: I like the IMPUDENT NOSE on that car.. Are you a TEEN-AGER? Date: Thu, 13 Jul 2017 09:16:42 +0200 In-Reply-To: (Peder O. Klingenberg's message of "Thu, 13 Jul 2017 01:03:48 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 27012 Cc: 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) On Jul 13 2017, peder@klingenberg.no (Peder O. Klingenberg) wrote: > With the basic mechanism for sending the Referer header then working, I > looked at limiting the distribution of it. url-privacy-level already > existed, and had a basic on-off-knob for referrers, or "lastloc", as it's > called in that variable. I left that alone, but added an additional > user option - url-lastloc-privacy, with possible values "none", Perhaps url-lastloc-privacy-level, to rhyme with url-privacy-level. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 13 10:02:50 2017 Received: (at 27012) by debbugs.gnu.org; 13 Jul 2017 14:02:50 +0000 Received: from localhost ([127.0.0.1]:37201 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVehd-00016D-7k for submit@debbugs.gnu.org; Thu, 13 Jul 2017 10:02:49 -0400 Received: from tarrant.klingenberg.no ([80.91.231.253]:38689) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dVeha-000163-8z for 27012@debbugs.gnu.org; Thu, 13 Jul 2017 10:02:47 -0400 Received: from 55-36-11.connect.netcom.no ([176.11.36.55] helo=modesty.local) by tarrant.klingenberg.no with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1dVehH-0002tF-9u; Thu, 13 Jul 2017 16:02:40 +0200 Received: by modesty.local (Postfix, from userid 502) id 4FE391A92D02; Thu, 13 Jul 2017 16:02:17 +0200 (CEST) From: peder@klingenberg.no (Peder O. Klingenberg) To: Andreas Schwab Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Date: Thu, 13 Jul 2017 16:02:17 +0200 In-Reply-To: (Andreas Schwab's message of "Thu, 13 Jul 2017 09:16:42 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (darwin) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.9 (--) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 27012 Cc: 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Andreas Schwab writes: > Perhaps url-lastloc-privacy-level, to rhyme with url-privacy-level. Sure, that's better. Updated patch: --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Make-eww-optionally-send-Referer-headers.patch >From 41f5017e49ff98ef5727eb1aa855848ea352b3c4 Mon Sep 17 00:00:00 2001 From: "Peder O. Klingenberg" Date: Thu, 13 Jul 2017 00:27:58 +0200 Subject: [PATCH] Make eww (optionally) send Referer-headers * lisp/net/eww.el (eww-render): Set url-current-lastloc to the url we are rendering, to get the referer header right on subsequent requests. * lisp/url/url-queue.el (url-queue): New struct member context-buffer for keeping track of the context a queued job started from. (url-queue-retrieve): Store the current buffer in the queue object. (url-queue-start-retrieve): Make sure url-retrieve is called in the context of the original buffer, if available. * doc/misc/url.texi (Customization): Describe the new user option url-lastloc-privacy-level. * lisp/url/url-http.el (url-http--get-referer): New function to determine which referer to send, if any, considering the users privacy settings and the target url we are visiting. (url-http-referer): New variable keeping track of the referer computed by url-http--get-referer (url-http-create-request): Use url-http-referer instead of the optional argument to set up the referer header. Leave checking of privacy settings to url-http--get-referer. (url-http): Set up url-http-referer by using url-http--get-referer. * lisp/url/url-util.el (url-domain): New function to determine the domain of a given URL. * lisp/url/url-vars.el (url-current-lastloc): New variable to keep track of the desired "last location" (referer header). (url-lastloc-privacy-level): New custom setting for more fine-grained control over how lastloc (referer) is sent to servers. (Bug#27012) --- doc/misc/url.texi | 14 ++++++++++++++ etc/NEWS | 16 ++++++++++++++++ lisp/net/eww.el | 7 +++++-- lisp/url/url-http.el | 52 +++++++++++++++++++++++++++++++++++++++------------ lisp/url/url-queue.el | 18 +++++++++++------- lisp/url/url-util.el | 29 ++++++++++++++++++++++++++++ lisp/url/url-vars.el | 28 ++++++++++++++++++++++++++- 7 files changed, 142 insertions(+), 22 deletions(-) diff --git a/doc/misc/url.texi b/doc/misc/url.texi index a3c625edce..4c9fab569a 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -1303,6 +1303,20 @@ Customization @end defopt @defopt url-privacy-level @end defopt +@defopt url-lastloc-privacy-level +Provided @code{lastloc} is not prohibited by @code{url-privacy-level}, +this determines who we send our last location to. @code{none} means +we include our last location in every outgoing request. +@code{domain-match} means we send it only if the domain of our last +location matches the domain of the URI we are requesting. +@code{host-match} means we only send our last location back to the +same host. The default is @code{domain-match}. + +Using @code{domain-match} for this option requires emacs to make one +or more DNS requests each time a new host is contacted, to determine +the domain of the host. Results of these lookups are cached, so +repeated visits do not require repeated domain lookups. +@end defopt @defopt url-uncompressor-alist @end defopt @defopt url-passwd-entry-func diff --git a/etc/NEWS b/etc/NEWS index dc9393c87d..7a4de80843 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -653,6 +653,11 @@ replaced by the real images asynchronously, which will also now respect width/height HTML specs (unless they specify widths/heights bigger than the current window). +--- +*** EWW now sends Referer headers +Provided they are allowed by 'url-privacy-level' and +'url-lastloc-privacy-level'. + ** Ido *** The commands 'find-alternate-file-other-window', @@ -871,6 +876,17 @@ domain. *** 'url-user-agent' now defaults to 'default', and the User-Agent string is computed dynamically based on 'url-privacy-level'. +--- +*** url-http now uses a buffer local variable to determine the referer +for a request. Previously, there was an optional argument to +'url-http-create-request' to set up a referer, but no callers were +using it. Now, callers can set up 'url-current-lastloc' in a buffer +before calling 'url-retrieve'. + ++++ +*** New user option 'url-lastloc-privacy-level' providing fine-grained +control over who we send referer-headers to. + ** VC and related modes --- diff --git a/lisp/net/eww.el b/lisp/net/eww.el index fe31657914..e922b4f834 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -271,7 +271,7 @@ eww (insert (format "Loading %s..." url)) (goto-char (point-min))) (url-retrieve url 'eww-render - (list url nil (current-buffer)))) + (list url nil (current-buffer)))) (defun eww--dwim-expand-url (url) (setq url (string-trim url)) @@ -359,7 +359,10 @@ eww-render ;; Save the https peer status. (plist-put eww-data :peer (plist-get status :peer)) ;; Make buffer listings more informative. - (setq list-buffers-directory url)) + (setq list-buffers-directory url) + ;; Let the URL library have a handle to the current URL for + ;; referer purposes. + (setq url-current-lastloc (url-generic-parse-url url))) (unwind-protect (progn (cond diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 06d32861b2..55d725a477 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -54,6 +54,7 @@ url-http-response-version (defvar url-http-target-url) (defvar url-http-transfer-encoding) (defvar url-show-status) +(defvar url-http-referer) (require 'url-gw) (require 'url-parse) @@ -238,6 +239,34 @@ url-http--user-agent-default-string emacs-info os-info)) " "))) +(defun url-http--get-referer (url) + (url-http-debug "getting referer from buffer: buffer:%S target-url:%S lastloc:%S" (current-buffer) url url-current-lastloc) + (when url-current-lastloc + (if (not (url-p url-current-lastloc)) + (setq url-current-lastloc (url-generic-parse-url url-current-lastloc))) + (let* ((referer url-current-lastloc) + (referer-string (url-recreate-url referer))) + (when (and (not (memq url-privacy-level '(low high paranoid))) + (not (and (listp url-privacy-level) + (memq 'lastloc url-privacy-level)))) + ;; url-privacy-level allows referer. But url-lastloc-privacy-level + ;; may restrict who we send it to. + (cl-case url-lastloc-privacy-level + (host-match + (let ((referer-host (url-host referer)) + (url-host (url-host url))) + (when (string= referer-host url-host) + referer-string))) + (domain-match + (let ((referer-domain (url-domain referer)) + (url-domain (url-domain url))) + (when (and referer-domain + url-domain + (string= referer-domain url-domain)) + referer-string))) + (otherwise + referer-string)))))) + ;; Building an HTTP request (defun url-http-user-agent-string () "Compute a User-Agent string. @@ -254,8 +283,9 @@ url-http-user-agent-string ((eq url-user-agent 'default) (url-http--user-agent-default-string)))))) (if ua-string (format "User-Agent: %s\r\n" (string-trim ua-string)) ""))) -(defun url-http-create-request (&optional ref-url) - "Create an HTTP request for `url-http-target-url', referred to by REF-URL." +(defun url-http-create-request () + "Create an HTTP request for `url-http-target-url', using `url-http-referer' +as the Referer-header (subject to `url-privacy-level'." (let* ((extra-headers) (request nil) (no-cache (cdr-safe (assoc "Pragma" url-http-extra-headers))) @@ -274,7 +304,8 @@ url-http-create-request (url-get-authentication (or (and (boundp 'proxy-info) proxy-info) - url-http-target-url) nil 'any nil)))) + url-http-target-url) nil 'any nil))) + (ref-url url-http-referer)) (if (equal "" real-fname) (setq real-fname "/")) (setq no-cache (and no-cache (string-match "no-cache" no-cache))) @@ -288,12 +319,6 @@ url-http-create-request (string= ref-url ""))) (setq ref-url nil)) - ;; We do not want to expose the referrer if the user is paranoid. - (if (or (memq url-privacy-level '(low high paranoid)) - (and (listp url-privacy-level) - (memq 'lastloc url-privacy-level))) - (setq ref-url nil)) - ;; url-http-extra-headers contains an assoc-list of ;; header/value pairs that we need to put into the request. (setq extra-headers (mapconcat @@ -1255,7 +1280,8 @@ url-http (mime-accept-string url-mime-accept-string) (buffer (or retry-buffer (generate-new-buffer - (format " *http %s:%d*" (url-host url) (url-port url)))))) + (format " *http %s:%d*" (url-host url) (url-port url))))) + (referer (url-http--get-referer url))) (if (not connection) ;; Failed to open the connection for some reason (progn @@ -1290,7 +1316,8 @@ url-http url-http-no-retry url-http-connection-opened url-mime-accept-string - url-http-proxy)) + url-http-proxy + url-http-referer)) (set (make-local-variable var) nil)) (setq url-http-method (or url-request-method "GET") @@ -1308,7 +1335,8 @@ url-http url-http-no-retry retry-buffer url-http-connection-opened nil url-mime-accept-string mime-accept-string - url-http-proxy url-using-proxy) + url-http-proxy url-using-proxy + url-http-referer referer) (set-process-buffer connection buffer) (set-process-filter connection 'url-http-generic-filter) diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index dd1699bd08..db0c16c793 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -52,7 +52,7 @@ url-queue-progress-timer (cl-defstruct url-queue url callback cbargs silentp buffer start-time pre-triggered - inhibit-cookiesp) + inhibit-cookiesp context-buffer) ;;;###autoload (defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies) @@ -67,7 +67,8 @@ url-queue-retrieve :callback callback :cbargs cbargs :silentp silent - :inhibit-cookiesp inhibit-cookies)))) + :inhibit-cookiesp inhibit-cookies + :context-buffer (current-buffer))))) (url-queue-setup-runners)) ;; To ensure asynch behavior, we start the required number of queue @@ -147,11 +148,14 @@ url-queue-remove-jobs-from-host (defun url-queue-start-retrieve (job) (setf (url-queue-buffer job) (ignore-errors - (let ((url-request-noninteractive t)) - (url-retrieve (url-queue-url job) - #'url-queue-callback-function (list job) - (url-queue-silentp job) - (url-queue-inhibit-cookiesp job)))))) + (with-current-buffer (if (buffer-live-p (url-queue-context-buffer job)) + (url-queue-context-buffer job) + (current-buffer)) + (let ((url-request-noninteractive t)) + (url-retrieve (url-queue-url job) + #'url-queue-callback-function (list job) + (url-queue-silentp job) + (url-queue-inhibit-cookiesp job))))))) (defun url-queue-prune-old-entries () (let (dead-jobs) diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el index a3c9655ebd..6be0a05314 100644 --- a/lisp/url/url-util.el +++ b/lisp/url/url-util.el @@ -627,6 +627,35 @@ url-make-private-file (error "Danger: `%s' is a symbolic link" file)) (set-file-modes file #o0600)))) +(autoload 'dns-query "dns") + +(defvar url--domain-cache (make-hash-table :test 'equal :size 17) + "Cache to minimize dns lookups.") + +;;;###autoload +(defun url-domain (url) + "Return the domain of the host of the url, or nil if url does +not contain a registered name." + ;; Determining the domain of a name can not be done with simple + ;; textual manipulations. a.b.c is either host a in domain b.c + ;; (www.google.com), or domain a.b.c with no separate host + ;; (bbc.co.uk). Instead of guessing based on tld (which in any case + ;; may be inaccurate in the face of subdelegations), we look for + ;; domain delegations in DNS. + ;; + ;; Domain delegations change rarely enough that we won't bother with + ;; cache invalidation, I think. + (let* ((host-parts (split-string (url-host url) "\\.")) + (result (gethash host-parts url--domain-cache 'not-found))) + (when (eq result 'not-found) + (setq result + (cl-loop for parts on host-parts + for dom = (mapconcat #'identity parts ".") + when (dns-query dom 'SOA) + return dom)) + (puthash host-parts result url--domain-cache)) + result)) + (provide 'url-util) ;;; url-util.el ends here diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index f08779f695..5629f974a0 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -60,10 +60,18 @@ url-current-object (defvar url-current-mime-headers nil "A parsed representation of the MIME headers for the current URL.") +(defvar url-current-lastloc nil + "A parsed representation of the URL to be considered as the last location. +Use of this value on outbound connections is subject to +`url-privacy-level' and `url-lastloc-privacy-level'. This is never set +by the url library, applications are expected to set this +variable in buffers representing a displayed location.") + (mapc 'make-variable-buffer-local '( url-current-object url-current-mime-headers + url-current-lastloc )) (defcustom url-honor-refresh-requests t @@ -117,7 +125,7 @@ url-privacy-level email -- the email address os -- the operating system info emacs -- the version of Emacs -lastloc -- the last location +lastloc -- the last location (see also `url-lastloc-privacy-level') agent -- do not send the User-Agent string cookies -- never accept HTTP cookies @@ -150,6 +158,24 @@ url-privacy-level (const :tag "No cookies" :value cookie))) :group 'url) +(defcustom url-lastloc-privacy-level 'domain-match + "Further restrictions on sending the last location. +This value is only consulted if `url-privacy-level' permits +sending last location in the first place. + +Valid values are: +none -- Always send last location. +domain-match -- Send last location if the new location is within the + same domain +host-match -- Send last location if the new location is on the + same host +" + :version "26.1" + :type '(radio (const :tag "Always send" none) + (const :tag "Domains match" domain-match) + (const :tag "Hosts match" host-match)) + :group 'url) + (defvar url-inhibit-uncompression nil "Do not do decompression if non-nil.") (defcustom url-uncompressor-alist '((".z" . "x-gzip") -- 2.11.0 --=-=-= Content-Type: text/plain -- ...Peder... --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 24 07:50:46 2017 Received: (at control) by debbugs.gnu.org; 24 Jul 2017 11:50:47 +0000 Received: from localhost ([127.0.0.1]:53886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dZbss-000698-LY for submit@debbugs.gnu.org; Mon, 24 Jul 2017 07:50:46 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:39083) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dZbsq-00068x-5u for control@debbugs.gnu.org; Mon, 24 Jul 2017 07:50:44 -0400 Received: from luna.netfonds.no ([80.91.225.79]) by hermes.netfonds.no with esmtp (Exim 4.84_2) (envelope-from ) id 1dZbsm-0002zF-Sf for control@debbugs.gnu.org; Mon, 24 Jul 2017 13:50:42 +0200 Received: by luna.netfonds.no (Postfix, from userid 547) id D528A4E007A; Mon, 24 Jul 2017 13:50:40 +0200 (CEST) To: control@debbugs.gnu.org From: pok@netfonds.no (Peder O. Klingenberg) Subject: control message for bug #27012 Message-Id: <20170724115040.D528A4E007A@luna.netfonds.no> Date: Mon, 24 Jul 2017 13:50:40 +0200 (CEST) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) tags 27012 patch From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 13 09:09:57 2018 Received: (at 27012) by debbugs.gnu.org; 13 Apr 2018 13:09:58 +0000 Received: from localhost ([127.0.0.1]:49269 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ySj-0001sC-OO for submit@debbugs.gnu.org; Fri, 13 Apr 2018 09:09:57 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:51175) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ySg-0001s0-Ax for 27012@debbugs.gnu.org; Fri, 13 Apr 2018 09:09:55 -0400 Received: from 46.67.12.60.tmi.telenormobil.no ([46.67.12.60] helo=corrigan) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f6ySY-0006i4-8t; Fri, 13 Apr 2018 15:09:48 +0200 Received: from larsi by corrigan with local (Exim 4.89) (envelope-from ) id 1f6ySS-00009l-4c; Fri, 13 Apr 2018 15:09:40 +0200 From: Lars Ingebrigtsen To: peder@klingenberg.no (Peder O. Klingenberg) Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: Date: Fri, 13 Apr 2018 15:09:39 +0200 In-Reply-To: (Peder O. Klingenberg's message of "Thu, 13 Jul 2017 16:02:17 +0200") Message-ID: <87bmen8d7w.fsf@mouse.gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27012 Cc: Andreas Schwab , 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) peder@klingenberg.no (Peder O. Klingenberg) writes: > Sure, that's better. Updated patch: Great! Now I can log in on last.fm! :-) I've applied this to Emacs master. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 13 09:09:52 2018 Received: (at control) by debbugs.gnu.org; 13 Apr 2018 13:09:52 +0000 Received: from localhost ([127.0.0.1]:49266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ySe-0001rs-ET for submit@debbugs.gnu.org; Fri, 13 Apr 2018 09:09:52 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:51172) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ySc-0001rk-Fv for control@debbugs.gnu.org; Fri, 13 Apr 2018 09:09:50 -0400 Received: from 46.67.12.60.tmi.telenormobil.no ([46.67.12.60] helo=corrigan) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f6ySa-0006sC-90 for control@debbugs.gnu.org; Fri, 13 Apr 2018 15:09:50 +0200 Received: from larsi by corrigan with local (Exim 4.89) (envelope-from ) id 1f6ySU-00009o-5H for control@debbugs.gnu.org; Fri, 13 Apr 2018 15:09:42 +0200 To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #27012 Message-Id: Date: Fri, 13 Apr 2018 15:09:42 +0200 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 27012 fixed close 27012 From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 13 09:33:50 2018 Received: (at 27012) by debbugs.gnu.org; 13 Apr 2018 13:33:51 +0000 Received: from localhost ([127.0.0.1]:49289 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ypq-0004Oj-OY for submit@debbugs.gnu.org; Fri, 13 Apr 2018 09:33:50 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:51721) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ypo-0004Ob-3n for 27012@debbugs.gnu.org; Fri, 13 Apr 2018 09:33:48 -0400 Received: from luna.netfonds.no ([80.91.225.79]) by hermes.netfonds.no with esmtp (Exim 4.84_2) (envelope-from ) id 1f6ypk-0006C4-VP; Fri, 13 Apr 2018 15:33:47 +0200 Received: by luna.netfonds.no (Postfix, from userid 547) id E9E874E00A2; Fri, 13 Apr 2018 15:33:44 +0200 (CEST) From: peder@klingenberg.no (Peder O. Klingenberg) To: Lars Ingebrigtsen Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers Organization: Persons in a Position to Know, inc. References: <87bmen8d7w.fsf@mouse.gnus.org> Date: Fri, 13 Apr 2018 15:33:44 +0200 In-Reply-To: <87bmen8d7w.fsf@mouse.gnus.org> (Lars Ingebrigtsen's message of "Fri, 13 Apr 2018 15:09:39 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "hermes.netfonds.no", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Fri, Apr 13 2018 at 15:09, Lars Ingebrigtsen wrote: > peder@klingenberg.no (Peder O. Klingenberg) writes: > >> Sure, that's better. Updated patch: > > Great! Now I can log in on last.fm! :-) > > I've applied this to Emacs master. [...] Content analysis details: (-1.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 27012 Cc: Andreas Schwab , 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) On Fri, Apr 13 2018 at 15:09, Lars Ingebrigtsen wrote: > peder@klingenberg.no (Peder O. Klingenberg) writes: > >> Sure, that's better. Updated patch: > > Great! Now I can log in on last.fm! :-) > > I've applied this to Emacs master. Thanks. But the patch has been sitting for a long time, so I think maybe the :version of the defcustom needs to be bumped to 27? I don't think this is likely to be backported to emacs 26. ...Peder... -- I wish a new life awaited _me_ in some off-world colony. From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 13 09:39:34 2018 Received: (at 27012) by debbugs.gnu.org; 13 Apr 2018 13:39:34 +0000 Received: from localhost ([127.0.0.1]:49303 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6yvN-0004Wk-PD for submit@debbugs.gnu.org; Fri, 13 Apr 2018 09:39:33 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:51847) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6yvM-0004Wd-H0 for 27012@debbugs.gnu.org; Fri, 13 Apr 2018 09:39:32 -0400 Received: from 46.67.12.60.tmi.telenormobil.no ([46.67.12.60] helo=corrigan) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f6yvJ-0000dS-2w; Fri, 13 Apr 2018 15:39:31 +0200 Received: from larsi by corrigan with local (Exim 4.89) (envelope-from ) id 1f6yvC-0000Sn-Vl; Fri, 13 Apr 2018 15:39:23 +0200 From: Lars Ingebrigtsen To: peder@klingenberg.no (Peder O. Klingenberg) Subject: Re: bug#27012: 26.0.50; eww does not generate Referer headers References: <87bmen8d7w.fsf@mouse.gnus.org> Date: Fri, 13 Apr 2018 15:39:22 +0200 In-Reply-To: (Peder O. Klingenberg's message of "Fri, 13 Apr 2018 15:33:44 +0200") Message-ID: <8736zzi5th.fsf@mouse.gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 27012 Cc: Andreas Schwab , 27012@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) peder@klingenberg.no (Peder O. Klingenberg) writes: > Thanks. But the patch has been sitting for a long time, so I think > maybe the :version of the defcustom needs to be bumped to 27? I don't > think this is likely to be backported to emacs 26. Yup; I'll update the defcustom... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Fri Jun 20 07:17:01 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 12 May 2018 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator