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= ====