unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Darren Hoo <darren.hoo@gmail.com>
To: guile-user@gnu.org
Subject: An http session that ends with a TCP Reset sent by the server
Date: Thu, 13 Jun 2013 16:33:49 +0800	[thread overview]
Message-ID: <m2r4g6wgsy.fsf@gmail.com> (raw)


I use the web client module to access a web service as what follows 

scheme@(guile-user)> (use-modules (web client))
scheme@(guile-user)> (http-get "http://172.18.23.123/")
ERROR: In procedure get-bytevector-n!:
ERROR: In procedure fport_fill_input: Connection reset by peer

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]> ,bt
In web/client.scm:
   230:12  4 (request "http://172.18.23.123/" #:body #f #:port #<input-output: socket 11> #:method "GET" #:version (1 . 1) #:keep-alive? #f #:headers () #:decode-body? #t # #f # #)
In web/response.scm:
    310:2  3 (read-response-body #<<response> version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((cache-control no-cache) (connection close) (content-type text/html) (cont…>)
In unknown file:
           2 (get-bytevector-all #<input: r6rs-custom-binary-input-port 10b454c30>)
In web/response.scm:
    249:4  1 (read! #vu8(60 104 116 109 108 62 13 10 60 104 101 97 100 62 13 10 60 115 99 114 105 112 116 32 116 121 112 101 61 34 116 101 120 116 47 106 97 118 97 115 99 114 …) …)
In unknown file:
           0 (get-bytevector-n! #<input-output: socket 11> #vu8(60 104 116 109 108 62 13 10 60 104 101 97 100 62 13 10 60 115 99 114 105 112 116 32 116 121 112 101 61 34 116 # …) …)
scheme@(guile-user) [1]> 

tcpdump shows that the server ends the http session abruptly with a RST:

16:07:31.060489 IP 192.168.199.228.57353 > 172.18.23.123.80: Flags [S], seq 3473013508, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 931410271 ecr 0,sackOK,eol], length 0
16:07:31.064571 IP 172.18.23.123.80 > 192.168.199.228.57353: Flags [S.], seq 4261252364, ack 3473013509, win 1024, options [mss 1024], length 0
16:07:31.064635 IP 192.168.199.228.57353 > 172.18.23.123.80: Flags [.], ack 1, win 65535, length 0
16:07:31.064923 IP 192.168.199.228.57353 > 172.18.23.123.80: Flags [P.], seq 1:60, ack 1, win 65535, length 59
16:07:31.066022 IP 172.18.23.123.80 > 192.168.199.228.57353: Flags [P.], seq 1:521, ack 60, win 1024, length 520
16:07:31.066075 IP 192.168.199.228.57353 > 172.18.23.123.80: Flags [.], ack 521, win 65015, length 0
16:07:31.068523 IP 172.18.23.123.80 > 192.168.199.228.57353: Flags [R], seq 4261252885, win 1024, length 0

This seems compliant with RFC 1122:

         4.2.2.13  Closing a Connection: RFC-793 Section 3.5

            A TCP connection may terminate in two ways: 
            (1) the normal TCP close sequence using a FIN handshake, and 
            (2) an "abort" in which one or more RST segments are sent and 
            the connection state is immediately discarded. 

The server responds with a body that contains an http redirect information but
ends with a RST packet which is case (2).

My question is how I can I handle this, ie, read the response body and ignore the RST
in Guile without changing anything in libguile?





             reply	other threads:[~2013-06-13  8:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-13  8:33 Darren Hoo [this message]
2013-06-14 16:21 ` An http session that ends with a TCP Reset sent by the server Mark H Weaver
2013-06-16  3:17   ` Darren Hoo
  -- strict thread matches above, loose matches on Subject: below --
2013-06-13 10:23 Darren Hoo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2r4g6wgsy.fsf@gmail.com \
    --to=darren.hoo@gmail.com \
    --cc=guile-user@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).