all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#21017: url-http: synchronous post and 302 error response not handled properly
@ 2015-07-09  8:21 Vaidheeswaran C
  2015-07-09 15:36 ` Glenn Morris
  0 siblings, 1 reply; 2+ messages in thread
From: Vaidheeswaran C @ 2015-07-09  8:21 UTC (permalink / raw)
  To: 21017

[-- Attachment #1: Type: text/plain, Size: 6078 bytes --]


url-http: synchronous post and 302 error response not handled
properly.  This is seen with Oddmuse wikis.

GNU Emacs is from today's master branch.

----------------------------------------------------------------

Prerequisites:

You need an oddmuse wiki that you have write access to.

----------------------------------------------------------------

The snippet below posts the "Hello Everywhere" (the "text") on to
"TemporaryPage" (the "title").

(let* ((wiki-base-url "http://localhost/cgi-bin/wiki.pl/")
       (values
	`(("pwd" . "xxxx")
	  ("recent_edit" . "off")
	  ("summary" . "Some updates")
	  ("text" . "Hello Everywhere")
	  ("title" . "TemporaryPage")
	  ("username" . "Anonymous"))))
  (let ((url-request-method "POST")
	(url-request-extra-headers
	 '(("Content-Type" . "application/x-www-form-urlencoded")))
	(url-request-data (mm-url-encode-www-form-urlencoded values)))
    (url-retrieve-synchronously wiki-base-url)
    (message "Done")))

1. Get hold of an oddmuse wiki that you have edit access to
2. Customize `url-debug' to t
3. C-x C-e the above snippet
4. See that the "Done" message gets never printed.
5. C-g your way out.
6. Verify that Oddmuse wiki page has been updated.

----------------------------------------------------------------

The HTTP process buffer says:

    HTTP/1.1 302 Found
    Status: 302 Found
    Location: http://localhost/cgi-bin/wiki.pl/TemporaryPage
    Transfer-Encoding: chunked
    Date: Thu, 09 Jul 2015 07:32:42 GMT
    Server: lighttpd/1.4.31

----------------------------------------------------------------

The *URL-DEBUG* buffer says infinite "spinning" for headers.

    http -> Contacting host: localhost:80
    http -> Marking connection as busy: localhost:80 #<process localhost>
    retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer
*http localhost:80*>)
    http -> Request is:
    POST /cgi-bin/wiki.pl/ HTTP/1.1
    MIME-Version: 1.0
    Connection: keep-alive
    Extension: Security/Digest Security/SSL
    Host: localhost
    Accept-encoding: gzip
    Accept-charset: utf-8;q=1, gb2312;q=0.5, iso-8859-1;q=0.5,
big5;q=0.5, iso-2022-jp;q=0.5, shift_jis;q=0.5, euc-tw;q=0.5,
euc-jp;q=0.5, euc-jis-2004;q=0.5, euc-kr;q=0.5, us-ascii;q=0.5,
utf-7;q=0.5, hz-gb-2312;q=0.5, big5-hkscs;q=0.5, gbk;q=0.5,
gb18030;q=0.5, iso-8859-5;q=0.5, koi8-r;q=0.5, koi8-u;q=0.5,
cp866;q=0.5, koi8-t;q=0.5, windows-1251;q=0.5, cp855;q=0.5,
iso-8859-2;q=0.5, iso-8859-3;q=0.5, iso-8859-4;q=0.5, iso-8859-9;q=0.5,
iso-8859-10;q=0.5, iso-8859-13;q=0.5, iso-8859-14;q=0.5,
iso-8859-15;q=0.5, windows-1250;q=0.5, windows-1252;q=0.5,
windows-1254;q=0.5, windows-1257;q=0.5, cp775;q=0.5, cp850;q=0.5,
cp852;q=0.5, cp857;q=0.5, cp858;q=0.5, cp860;q=0.5, cp861;q=0.5,
cp863;q=0.5, cp865;q=0.5, cp437;q=0.5, macintosh;q=0.5, next;q=0.5,
hp-roman8;q=0.5, adobe-standard-encoding;q=0.5, iso-8859-16;q=0.5,
iso-8859-7;q=0.5, windows-1253;q=0.5, cp737;q=0.5, cp851;q=0.5,
cp869;q=0.5, iso-8859-8;q=0.5, windows-1255;q=0.5, cp862;q=0.5,
iso-2022-jp-2004;q=0.5, cp874;q=0.5, iso-8859-11;q=0.5, viscii;q=0.5,
windows-1258;q=0.5, iso-8859-6;q=0.5, windows-1256;q=0.5,
iso-2022-cn;q=0.5, iso-2022-cn-ext;q=0.5, iso-2022-jp-2;q=0.5,
iso-2022-kr;q=0.5, utf-16le;q=0.5, utf-16be;q=0.5, utf-16;q=0.5,
x-ctext;q=0.5
    Accept: */*
    User-Agent: URL/Emacs
    Cookie: Wiki=pwd%251exxxx%251eusername%251eAnonymous
    Content-Type: application/x-www-form-urlencoded
    Content-length: 101


pwd=xxxx&recent_edit=off&summary=Some+updates&text=Hello+World&title=TemporaryPage&username=Anonymous
    http -> Calling after change function
`url-http-wait-for-headers-change-function' for `#<process localhost>'
    http -> url-http-wait-for-headers-change-function ( *http localhost:80*)
    http -> Saw end of headers... ( *http localhost:80*)
    http -> url-http-parse-response called in ( *http localhost:80*)
    http -> Saw chunked encoding.
    http -> Calling initial chunked-encoding for extra data at end of
headers
    http -> Reading chunk 0 (182 183 1)
    http -> Did not see start of chunk @ 183!
    http -> Spinning waiting for headers...
    retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer
*http localhost:80*>)
    http -> Calling after change function
`url-http-chunked-encoding-after-change-function' for `#<process localhost>'
    http -> Reading chunk 0 (183 188 5)
    http -> Saw start of chunk 1 (length=0, start=183
    http -> Saw end of stream chunk!
    http -> Removing terminator of last chunk
    http -> Saw end of trailers...
    http -> Marking connection as free: localhost:80 #<process localhost>
    http -> url-http-parse-headers called in ( *http localhost:80*)
    http -> url-http-parse-response called in ( *http localhost:80*)
    http -> Parsed HTTP headers: class=3 status=302
    http -> Finished parsing HTTP headers: nil
    retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer
*http localhost:80*>)
    retrieval -> Spinning in url-retrieve-synchronously: nil (#<buffer
*http localhost:80*>)

----------------------------------------------------------------

Hint for quick isolation:

If I comment out the `unless' part below (cf. url-http.el @ line 602)
thereabouts, the spinning stops altogether.


    ((or `moved-permanently `found `temporary-redirect) ; 301 302 307
     ;; If the 301|302 status code is received in response to a
     ;; request other than GET or HEAD, the user agent MUST NOT
     ;; automatically redirect the request unless it can be
     ;; confirmed by the user, since this might change the
     ;; conditions under which the request was issued.
     (unless (member url-http-method '("HEAD" "GET"))
       (setq redirect-uri nil)))

----------------------------------------------------------------

Expected behaviour:

I am attaching an edit transaction done via firefox + emacswiki
(captured with "follow TCP stream" option of wireshark)

I see a 302 response followed by a fetch of the edited page.  Whatever
be the right behaviour, I expect that synchronous fetch doesn't loop
infinitely and make emacs unusable.

[-- Attachment #2: oddmuse-edit-via-firefox.txt --]
[-- Type: text/plain, Size: 19114 bytes --]

GET /emacs?action=edit;id=Test HTTP/1.1
Host: www.emacswiki.org
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://www.emacswiki.org/emacs/Test
Cookie: Wiki=uihnscuskc%251e1%251eusername%251eAnonymous
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 09 Jul 2015 08:04:10 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Content-Location: emacs.pl
Vary: negotiate,Accept-Language
TCN: choice
X-EmacsWiki-Source: Apache/CGI
X-Proxy-Cache: BYPASS

d15
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>EmacsWiki: Editing Test</title>
<link type="text/css" rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" />
<link type="text/css" rel="stylesheet" href="/css/bootstrap.css" />
<meta name="robots" content="NOINDEX,FOLLOW" /><link rel="alternate" type="application/rss+xml" title="EmacsWiki" href="http://www.emacswiki.org/emacs?action=rss" /><link rel="alternate" type="application/rss+xml" title="EmacsWiki: Test" href="http://www.emacswiki.org/emacs?action=rss;rcidonly=Test" /><link rel="alternate" type="application/rss+xml" title="Follow-ups for Anonymous" href="http://www.emacswiki.org/emacs?action=rss;followup=Anonymous" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki with page content"
      href="http://www.emacswiki.org/full.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki with page content and diff"
      href="http://www.emacswiki.org/full-diff.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki including minor differences"
      href="http://www.emacswiki.org/minor-edits.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Changes for Test only"
      href="http://www.emacswiki.org/emacs?action=rss;rcidonly=Test" />
<link rel="alternate" type="application/rss+xml"
      title="Follow-ups to Anonymous"
      href="http://www.emacswiki.org/emacs?action=rss;followup=Anonymous" />
<meta name="viewport" content="width=device-width" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://emacswiki.org/bootstrap.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body class="http://www.emacswiki.org/emacs"><div class="header"><div class="menu"><span class="gotobar bar"><a href="http://www.emacswiki.org/emacs/SiteMap" class="local">SiteMap</a> <a href="http://www.emacswiki.org/emacs/Search" class="local">Search</a> <a href="http://www.emacswiki.org/emacs/ElispArea" class="local">ElispArea</a> <a href="http://www.emacswiki.org/emacs/HowTo" class="local">HowTo</a> <a href="http://www.emacswiki.org/emacs/Glossary" class="local">Glossary</a> <a href="http://www.emacswiki.org/emacs/RecentChanges" class="local">RecentChanges</a> <a class="local" href="http://www.emacswiki.org/emacs/News">News</a> <a class="local" href="http://www.emacswiki.org/emacs/Problems">Problems</a> <a href="http://www.emacswiki.org/emacs/Suggestions" class="local">Suggestions</a> </span><form method="get" action="http://www.emacswiki.org/emacs" enctype="multipart/form-data" accept-charset="utf-8" class="search"><p><label for="search">Search:</label> <input type="text" name="search"  size="20" id="search" accesskey="f" /> <label for="searchlang">Language:</label> <input type="text" name="lang"  size="10" id="searchlang" /> <input type="submit" name="dosearch" value="Go!" /></p></form></div><h1>Editing Test</h1></div><div class="wrapper"><div class="content edit">
5b9
<form method="post" action="http://www.emacswiki.org/emacs" enctype="multipart/form-data" accept-charset="utf-8" class="edit text"><p><input name="title" type="hidden" value="Test" />  <input name="oldtime" type="hidden" value="1436428940" /> <textarea name="text"  rows="25" cols="78" id="text">Hello World
</textarea></p><p>Summary:<br /><textarea name="summary"  rows="2" cols="78" id="summary"></textarea></p><p><label><input type="checkbox" name="recent_edit" value="on" />This change is a minor edit.</label></p><p>Please make sure you contribute only your own work. IP numbers are made available via the page history. If you want to keep it a secret, you need to use <a href="http://www.torproject.org/">Tor</a>. See <a href="/emacs/TextFormattingRules">TextFormattingRules</a> for how to format text. See <a href="/emacs/StyleGuide">StyleGuide</a> for the suggested writing style on this wiki.</p><p><label for="username">Username:</label> <input type="text" name="username" value="Anonymous" size="20" maxlength="50" id="username" /></p><p><input type="submit" name="Save" value="Save" accesskey="s" />  <input type="submit" name="Preview" value="Preview" accesskey="p" /> <input type="submit" name="Cancel" value="Cancel" /></p><p><a class="upload" href="http://www.emacswiki.org/emacs?action=edit;upload=1;id=Test" rel="nofollow">Replace this text with a file</a></p><div><input type="hidden" name=".cgifields" value="recent_edit"  /></div>
</form></div>
27
<div class="wrapper close"></div></div>
1a
<div class="footer"><hr />
1df
<div class="edit bar"><a rel="nofollow" class="history" href="http://www.emacswiki.org/emacs?action=history;id=Test">View other revisions</a> <a class="local" href="http://www.emacswiki.org/emacs/Test">View current revision</a> <a rel="nofollow" href="http://www.emacswiki.org/emacs?action=rc;all=1;from=1;showedit=1;rcidonly=Test" class="rc">View all changes</a> <a rel="nofollow" class="admin" href="http://www.emacswiki.org/emacs?action=admin;id=Test">Administration</a></div>
764
<div style="float:right; margin-left:1ex;">
<!-- Creative Commons License -->
<a class="licence" href="http://creativecommons.org/licenses/GPL/2.0/"><img alt="CC-GNU GPL" style="border:none" src="/pics/cc-GPL-a.png" /></a>
<!-- /Creative Commons License -->
</div>

<!--
<rdf:RDF xmlns="http://web.resource.org/cc/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Work rdf:about="">
   <license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
  <dc:type rdf:resource="http://purl.org/dc/dcmitype/Software" />
</Work>

<License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
   <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
   <permits rdf:resource="http://web.resource.org/cc/Distribution" />
   <requires rdf:resource="http://web.resource.org/cc/Notice" />
   <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
   <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
   <requires rdf:resource="http://web.resource.org/cc/SourceCode" />
</License>
</rdf:RDF>
-->

<p class="legal">
This work is licensed to you under version 2 of the
<a href="http://www.gnu.org/">GNU</a> <a href="/GPL">General Public License</a>.
Alternatively, you may choose to receive this work under any other
license that grants the right to use, copy, modify, and/or distribute
the work, as long as that license imposes the restriction that
derivative works have to grant the same rights and impose the same
restriction. For example, you may choose to receive this work under
the
<a href="http://www.gnu.org/">GNU</a>
<a href="/FDL">Free Documentation License</a>, the
<a href="http://creativecommons.org/">CreativeCommons</a>
<a href="http://creativecommons.org/licenses/sa/1.0/">ShareAlike</a>
License, the XEmacs manual license, or
<a href="/OLD">similar licenses</a>.
</p>
</div>
11

</body>
</html>

0

POST /emacs HTTP/1.1
Host: www.emacswiki.org
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://www.emacswiki.org/emacs?action=edit;id=Test
Cookie: Wiki=uihnscuskc%251e1%251eusername%251eAnonymous
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------208698956014414866461469291549
Content-Length: 921

-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="title"

Test
-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="oldtime"

1436428940
-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="text"

Hello World!

-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="summary"

This is a spam edit
-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="username"

Anonymous
-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name="Save"

Save
-----------------------------208698956014414866461469291549
Content-Disposition: form-data; name=".cgifields"

recent_edit
-----------------------------208698956014414866461469291549--
HTTP/1.1 302 Found
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 09 Jul 2015 08:04:32 GMT
Content-Type: text/x-perl
Content-Length: 0
Connection: keep-alive
Location: http://www.emacswiki.org/emacs/Test
X-EmacsWiki-Source: Apache/CGI

GET /emacs/Test HTTP/1.1
Host: www.emacswiki.org
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://www.emacswiki.org/emacs?action=edit;id=Test
Cookie: Wiki=uihnscuskc%251e1%251eusername%251eAnonymous
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 09 Jul 2015 08:04:33 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Language
X-EmacsWiki-Source: Apache/CGI
X-Proxy-Cache: BYPASS

ec4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>EmacsWiki: Test</title><link rel="alternate" type="application/wiki" title="Edit this page" href="http://www.emacswiki.org/emacs?action=edit;id=Test" />
<link type="text/css" rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" />
<link type="text/css" rel="stylesheet" href="/css/bootstrap.css" />
<meta name="robots" content="INDEX,FOLLOW" /><link rel="alternate" type="application/rss+xml" title="EmacsWiki" href="http://www.emacswiki.org/emacs?action=rss" /><link rel="alternate" type="application/rss+xml" title="EmacsWiki: Test" href="http://www.emacswiki.org/emacs?action=rss;rcidonly=Test" /><link rel="alternate" type="application/rss+xml" title="Follow-ups for Anonymous" href="http://www.emacswiki.org/emacs?action=rss;followup=Anonymous" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki with page content"
      href="http://www.emacswiki.org/full.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki with page content and diff"
      href="http://www.emacswiki.org/full-diff.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Emacs Wiki including minor differences"
      href="http://www.emacswiki.org/minor-edits.rss" />
<link rel="alternate" type="application/rss+xml"
      title="Changes for Test only"
      href="http://www.emacswiki.org/emacs?action=rss;rcidonly=Test" />
<link rel="alternate" type="application/rss+xml"
      title="Follow-ups to Anonymous"
      href="http://www.emacswiki.org/emacs?action=rss;followup=Anonymous" />
<meta content="width=device-width" name="viewport" />
<script type="text/javascript" src="/outliner.0.5.0.62-toc.js"></script>
<script type="text/javascript">

  function addOnloadEvent(fnc) {
    if ( typeof window.addEventListener != "undefined" )
      window.addEventListener( "load", fnc, false );
    else if ( typeof window.attachEvent != "undefined" ) {
      window.attachEvent( "onload", fnc );
    }
    else {
      if ( window.onload != null ) {
	var oldOnload = window.onload;
	window.onload = function ( e ) {
	  oldOnload( e );
	  window[fnc]();
	};
      }
      else
	window.onload = fnc;
    }
  }

  // https://stackoverflow.com/questions/280634/endswith-in-javascript
  if (typeof String.prototype.endsWith !== 'function') {
    String.prototype.endsWith = function(suffix) {
      return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
  }

  var initToc=function() {

    var outline = HTML5Outline(document.body);
    if (outline.sections.length == 1) {
      outline.sections = outline.sections[0].sections;
    }

    if (outline.sections.length > 1
	|| outline.sections.length == 1
           && outline.sections[0].sections.length > 0) {

      var toc = document.getElementById('toc');

      if (!toc) {
	var divs = document.getElementsByTagName('div');
	for (var i = 0; i < divs.length; i++) {
	  if (divs[i].getAttribute('class') == 'toc') {
	    toc = divs[i];
	    break;
	  }
	}
      }

      if (!toc) {
	var h2 = document.getElementsByTagName('h2')[0];
	if (h2) {
	  toc = document.createElement('div');
	  toc.setAttribute('class', 'toc');
	  h2.parentNode.insertBefore(toc, h2);
	}
      }

      if (toc) {
        var html = outline.asHTML(true);
        toc.innerHTML = html;

	items = toc.getElementsByTagName('a');
	for (var i = 0; i < items.length; i++) {
	  while (items[i].textContent.endsWith('✎')) {
            var text = items[i].childNodes[0].nodeValue;
	    items[i].childNodes[0].nodeValue = text.substring(0, text.length - 1);
	  }
	}
      }
    }
739

  }

  addOnloadEvent(initToc);
  </script>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://emacswiki.org/bootstrap.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body class="http://www.emacswiki.org/emacs"><div class="header"><div class="menu"><span class="gotobar bar"><a href="http://www.emacswiki.org/emacs/SiteMap" class="local">SiteMap</a> <a class="local" href="http://www.emacswiki.org/emacs/Search">Search</a> <a class="local" href="http://www.emacswiki.org/emacs/ElispArea">ElispArea</a> <a href="http://www.emacswiki.org/emacs/HowTo" class="local">HowTo</a> <a href="http://www.emacswiki.org/emacs/Glossary" class="local">Glossary</a> <a class="local" href="http://www.emacswiki.org/emacs/RecentChanges">RecentChanges</a> <a href="http://www.emacswiki.org/emacs/News" class="local">News</a> <a class="local" href="http://www.emacswiki.org/emacs/Problems">Problems</a> <a class="local" href="http://www.emacswiki.org/emacs/Suggestions">Suggestions</a> </span><form method="get" action="http://www.emacswiki.org/emacs" enctype="multipart/form-data" class="search" accept-charset="utf-8"><p><label for="search">Search:</label> <input type="text" name="search"  size="20" id="search" accesskey="f" /> <label for="searchlang">Language:</label> <input type="text" name="lang"  size="10" id="searchlang" /> <input type="submit" name="dosearch" value="Go!" /></p></form></div><h1><a rel="nofollow" title="Click to search for references to this page" href="http://www.emacswiki.org/emacs?search=%22Test%22">Test</a></h1></div><div class="wrapper"><div class="content browse"><p>Hello World!</p>
6
</div>
27
<div class="wrapper close"></div></div>
1a
<div class="footer"><hr />
b4f
<span class="translation bar"><br />  <a rel="nofollow" href="http://www.emacswiki.org/emacs?action=translate;id=Test;missing=de_en_es_fr_it_ja_ko_pt_ru_se_uk_zh" class="translation new">Add Translation</a></span><div class="edit bar"><a class="comment local edit" accesskey="c" href="http://www.emacswiki.org/emacs/Comments_on_Test">Talk</a> <a class="edit" href="http://www.emacswiki.org/emacs?action=edit;id=Test" accesskey="e" rel="nofollow" title="Click to edit this page">Edit this page</a> <a rel="nofollow" href="http://www.emacswiki.org/emacs?action=history;id=Test" class="history">View other revisions</a> <a href="http://www.emacswiki.org/emacs?action=admin;id=Test" class="admin" rel="nofollow">Administration</a></div><div class="time">Last edited 2015-07-09 08:04 UTC by <a class="author" href="http://www.emacswiki.org/emacs/Anonymous" title="106.216.158.36">Anonymous</a> <a rel="nofollow" class="diff" href="http://www.emacswiki.org/emacs?action=browse;diff=2;id=Test">(diff)</a></div><div style="float:right; margin-left:1ex;">
<!-- Creative Commons License -->
<a class="licence" href="http://creativecommons.org/licenses/GPL/2.0/"><img alt="CC-GNU GPL" style="border:none" src="/pics/cc-GPL-a.png" /></a>
<!-- /Creative Commons License -->
</div>

<!--
<rdf:RDF xmlns="http://web.resource.org/cc/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Work rdf:about="">
   <license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
  <dc:type rdf:resource="http://purl.org/dc/dcmitype/Software" />
</Work>

<License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
   <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
   <permits rdf:resource="http://web.resource.org/cc/Distribution" />
   <requires rdf:resource="http://web.resource.org/cc/Notice" />
   <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
   <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
   <requires rdf:resource="http://web.resource.org/cc/SourceCode" />
</License>
</rdf:RDF>
-->

<p class="legal">
This work is licensed to you under version 2 of the
<a href="http://www.gnu.org/">GNU</a> <a href="/GPL">General Public License</a>.
Alternatively, you may choose to receive this work under any other
license that grants the right to use, copy, modify, and/or distribute
the work, as long as that license imposes the restriction that
derivative works have to grant the same rights and impose the same
restriction. For example, you may choose to receive this work under
the
<a href="http://www.gnu.org/">GNU</a>
<a href="/FDL">Free Documentation License</a>, the
<a href="http://creativecommons.org/">CreativeCommons</a>
<a href="http://creativecommons.org/licenses/sa/1.0/">ShareAlike</a>
License, the XEmacs manual license, or
<a href="/OLD">similar licenses</a>.
</p>
</div>
11

</body>
</html>

0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#21017: url-http: synchronous post and 302 error response not handled properly
  2015-07-09  8:21 bug#21017: url-http: synchronous post and 302 error response not handled properly Vaidheeswaran C
@ 2015-07-09 15:36 ` Glenn Morris
  0 siblings, 0 replies; 2+ messages in thread
From: Glenn Morris @ 2015-07-09 15:36 UTC (permalink / raw)
  To: 21017


Dupe of http://debbugs.gnu.org/16960





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-07-09 15:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-09  8:21 bug#21017: url-http: synchronous post and 302 error response not handled properly Vaidheeswaran C
2015-07-09 15:36 ` Glenn Morris

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.