summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/apr/apr/0004-Fix-packet-discards-HTTP-redirect.patch
blob: 30fc07d4a0db4e6f20172830a94b035a9464a7d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From 7925eb1766a00ccee05c6e80b1d34f163a04b7b1 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 30 Jan 2018 09:43:34 +0800
Subject: [PATCH 4/7] Fix packet discards HTTP redirect.

Disconnect the connection by poll() timeout.
If timeout=0 and apr_wait_for_io_or_timeout()=APR_TIMEUP then
apr_socket_recv() returns EAGAIN.

Upstream-Status: Pending

Signed-off-by: Noriaki Yoshitane <yoshitane.nrs@cnt.ncos.nec.co.jp>
Signed-off-by: Li Wang <li.wang@windriver.com>

Rebase to 1.6.3

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 network_io/unix/sendrecv.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/network_io/unix/sendrecv.c b/network_io/unix/sendrecv.c
index 4c0e0a6..1bdafba 100644
--- a/network_io/unix/sendrecv.c
+++ b/network_io/unix/sendrecv.c
@@ -85,6 +85,10 @@ apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
                       && (sock->timeout > 0)) {
 do_select:
         arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
+        if ((arv == APR_TIMEUP) && (sock->timeout == 0)) {
+            *len = 0;
+            return EAGAIN;
+        }
         if (arv != APR_SUCCESS) {
             *len = 0;
             return arv;
-- 
1.8.3.1