Hi!

Without text mangling this time...

Rivo

Index: usr.sbin/relayd/relay.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relay.c,v
retrieving revision 1.236
diff -u -p -r1.236 relay.c
--- usr.sbin/relayd/relay.c     28 Nov 2017 01:51:47 -0000      1.236
+++ usr.sbin/relayd/relay.c     13 Dec 2017 00:05:33 -0000
@@ -723,7 +723,8 @@ relay_connected(int fd, short sig, void 
                relay_tls_connected(out);
 
        bufferevent_settimeout(bev,
-           rlay->rl_conf.timeout.tv_sec, rlay->rl_conf.timeout.tv_sec);
+           con->se_out.writeonly ? 0 : rlay->rl_conf.timeout.tv_sec,
+           rlay->rl_conf.timeout.tv_sec);
        bufferevent_setwatermark(bev, EV_WRITE,
                RELAY_MIN_PREFETCHED * proto->tcpbufsiz, 0);
        bufferevent_enable(bev, EV_READ|EV_WRITE);
Index: usr.sbin/relayd/relay_http.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relay_http.c,v
retrieving revision 1.70
diff -u -p -r1.70 relay_http.c
--- usr.sbin/relayd/relay_http.c        27 Nov 2017 16:25:50 -0000      1.70
+++ usr.sbin/relayd/relay_http.c        13 Dec 2017 00:05:33 -0000
@@ -439,6 +439,10 @@ relay_read_http(struct bufferevent *bev,
                case HTTP_METHOD_OPTIONS:
                case HTTP_METHOD_POST:
                case HTTP_METHOD_PUT:
+                       con->se_out.writeonly = 1;
+                       if(cre->dst->state == STATE_CONNECTED)
+                               bufferevent_settimeout(bev,
+                                   0, rlay->rl_conf.timeout.tv_sec); 
                case HTTP_METHOD_RESPONSE:
                /* WebDAV methods */
                case HTTP_METHOD_PROPFIND:
@@ -569,6 +573,9 @@ relay_read_httpcontent(struct buffereven
                                goto fail;
                        cre->toread -= size;
                }
+               if (cre->dst->writeonly && cre->dst->state != STATE_CONNECTED)
+                       if (relay_connect(con) == -1)
+                               goto fail;
                DPRINTF("%s: done, size %lu, to read %lld", __func__,
                    size, cre->toread);
        }
Index: usr.sbin/relayd/relayd.h
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relayd.h,v
retrieving revision 1.248
diff -u -p -r1.248 relayd.h
--- usr.sbin/relayd/relayd.h    28 Nov 2017 18:25:53 -0000      1.248
+++ usr.sbin/relayd/relayd.h    13 Dec 2017 00:05:33 -0000
@@ -218,6 +218,7 @@ struct ctl_relay_event {
        int                      line;
        int                      done;
        int                      timedout;
+       int                      writeonly;
        enum relay_state         state;
        enum direction           dir;
 


begin-base64 644 relayd_put.diff
SW5kZXg6IHVzci5zYmluL3JlbGF5ZC9yZWxheS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
c3JjL3Vzci5zYmluL3JlbGF5ZC9yZWxheS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIzNgpk
aWZmIC11IC1wIC1yMS4yMzYgcmVsYXkuYwotLS0gdXNyLnNiaW4vcmVsYXlkL3JlbGF5LmMJMjgg
Tm92IDIwMTcgMDE6NTE6NDcgLTAwMDAJMS4yMzYKKysrIHVzci5zYmluL3JlbGF5ZC9yZWxheS5j
CTEzIERlYyAyMDE3IDAwOjA1OjMzIC0wMDAwCkBAIC03MjMsNyArNzIzLDggQEAgcmVsYXlfY29u
bmVjdGVkKGludCBmZCwgc2hvcnQgc2lnLCB2b2lkIAogCQlyZWxheV90bHNfY29ubmVjdGVkKG91
dCk7CiAKIAlidWZmZXJldmVudF9zZXR0aW1lb3V0KGJldiwKLQkgICAgcmxheS0+cmxfY29uZi50
aW1lb3V0LnR2X3NlYywgcmxheS0+cmxfY29uZi50aW1lb3V0LnR2X3NlYyk7CisJICAgIGNvbi0+
c2Vfb3V0LndyaXRlb25seSA/IDAgOiBybGF5LT5ybF9jb25mLnRpbWVvdXQudHZfc2VjLAorCSAg
ICBybGF5LT5ybF9jb25mLnRpbWVvdXQudHZfc2VjKTsKIAlidWZmZXJldmVudF9zZXR3YXRlcm1h
cmsoYmV2LCBFVl9XUklURSwKIAkJUkVMQVlfTUlOX1BSRUZFVENIRUQgKiBwcm90by0+dGNwYnVm
c2l6LCAwKTsKIAlidWZmZXJldmVudF9lbmFibGUoYmV2LCBFVl9SRUFEfEVWX1dSSVRFKTsKSW5k
ZXg6IHVzci5zYmluL3JlbGF5ZC9yZWxheV9odHRwLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9zcmMvdXNyLnNiaW4vcmVsYXlkL3JlbGF5X2h0dHAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS43MApkaWZmIC11IC1wIC1yMS43MCByZWxheV9odHRwLmMKLS0tIHVzci5zYmluL3JlbGF5ZC9y
ZWxheV9odHRwLmMJMjcgTm92IDIwMTcgMTY6MjU6NTAgLTAwMDAJMS43MAorKysgdXNyLnNiaW4v
cmVsYXlkL3JlbGF5X2h0dHAuYwkxMyBEZWMgMjAxNyAwMDowNTozMyAtMDAwMApAQCAtNDM5LDYg
KzQzOSwxMCBAQCByZWxheV9yZWFkX2h0dHAoc3RydWN0IGJ1ZmZlcmV2ZW50ICpiZXYsCiAJCWNh
c2UgSFRUUF9NRVRIT0RfT1BUSU9OUzoKIAkJY2FzZSBIVFRQX01FVEhPRF9QT1NUOgogCQljYXNl
IEhUVFBfTUVUSE9EX1BVVDoKKwkJCWNvbi0+c2Vfb3V0LndyaXRlb25seSA9IDE7CisJCQlpZihj
cmUtPmRzdC0+c3RhdGUgPT0gU1RBVEVfQ09OTkVDVEVEKQorCQkJCWJ1ZmZlcmV2ZW50X3NldHRp
bWVvdXQoYmV2LAorCQkJCSAgICAwLCBybGF5LT5ybF9jb25mLnRpbWVvdXQudHZfc2VjKTsgCiAJ
CWNhc2UgSFRUUF9NRVRIT0RfUkVTUE9OU0U6CiAJCS8qIFdlYkRBViBtZXRob2RzICovCiAJCWNh
c2UgSFRUUF9NRVRIT0RfUFJPUEZJTkQ6CkBAIC01NjksNiArNTczLDkgQEAgcmVsYXlfcmVhZF9o
dHRwY29udGVudChzdHJ1Y3QgYnVmZmVyZXZlbgogCQkJCWdvdG8gZmFpbDsKIAkJCWNyZS0+dG9y
ZWFkIC09IHNpemU7CiAJCX0KKwkJaWYgKGNyZS0+ZHN0LT53cml0ZW9ubHkgJiYgY3JlLT5kc3Qt
PnN0YXRlICE9IFNUQVRFX0NPTk5FQ1RFRCkKKwkJCWlmIChyZWxheV9jb25uZWN0KGNvbikgPT0g
LTEpCisJCQkJZ290byBmYWlsOwogCQlEUFJJTlRGKCIlczogZG9uZSwgc2l6ZSAlbHUsIHRvIHJl
YWQgJWxsZCIsIF9fZnVuY19fLAogCQkgICAgc2l6ZSwgY3JlLT50b3JlYWQpOwogCX0KSW5kZXg6
IHVzci5zYmluL3JlbGF5ZC9yZWxheWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy91
c3Iuc2Jpbi9yZWxheWQvcmVsYXlkLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ4CmRpZmYg
LXUgLXAgLXIxLjI0OCByZWxheWQuaAotLS0gdXNyLnNiaW4vcmVsYXlkL3JlbGF5ZC5oCTI4IE5v
diAyMDE3IDE4OjI1OjUzIC0wMDAwCTEuMjQ4CisrKyB1c3Iuc2Jpbi9yZWxheWQvcmVsYXlkLmgJ
MTMgRGVjIDIwMTcgMDA6MDU6MzMgLTAwMDAKQEAgLTIxOCw2ICsyMTgsNyBAQCBzdHJ1Y3QgY3Rs
X3JlbGF5X2V2ZW50IHsKIAlpbnQJCQkgbGluZTsKIAlpbnQJCQkgZG9uZTsKIAlpbnQJCQkgdGlt
ZWRvdXQ7CisJaW50CQkJIHdyaXRlb25seTsKIAllbnVtIHJlbGF5X3N0YXRlCSBzdGF0ZTsKIAll
bnVtIGRpcmVjdGlvbgkJIGRpcjsKIAo=
====

Reply via email to