Hi! Anyone?
Rivo On 2019-03-12 21:50, Rivo Nurges wrote: > Hi! > > Bump... > > Rivo > > On 3/6/19 10:57 PM, Rivo Nurges wrote: >> Hi! >> >> >> On 3/6/19 10:20 PM, Rivo Nurges wrote: >>> On 3/6/19 6:36 PM, Sebastian Benoit wrote: >>>>> Does something like this make sense? >>>> >>>> i think the seperator list needs to include '\t' >>>> because https://tools.ietf.org/html/rfc7230#appendix-B includes HTAB. >>>> >>>> And i dont think you can mix "," with " \t" seperators, >>>> because otherwise "Foo Upgrade, Bar" will match. >>>> >>>> Something more is needed to parse elements of a header. >>> >>> Oh yeah. I'll work on that. >> >> So here comes the next version. Works with both spaces and tabs. >> >> Index: usr.sbin/relayd/relay_http.c >> =================================================================== >> RCS file: /cvs/src/usr.sbin/relayd/relay_http.c,v >> retrieving revision 1.72 >> diff -u -p -r1.72 relay_http.c >> --- usr.sbin/relayd/relay_http.c 4 Mar 2019 21:25:03 -0000 1.72 >> +++ usr.sbin/relayd/relay_http.c 6 Mar 2019 20:53:59 -0000 >> @@ -36,6 +36,7 @@ >> #include <siphash.h> >> #include <imsg.h> >> #include <unistd.h> >> +#include <ctype.h> >> >> #include "relayd.h" >> #include "http.h" >> @@ -166,6 +167,7 @@ relay_read_http(struct bufferevent *bev, >> struct relay_http_priv *priv = con->se_priv; >> char *line = NULL, *key, *value; >> char *urlproto, *host, *path; >> + char *valuecopy, *valuepart; >> int action, unique, ret; >> const char *errstr; >> size_t size, linelen; >> @@ -399,10 +401,19 @@ relay_read_http(struct bufferevent *bev, >> >> if (cre->line != 1) { >> if (cre->dir == RELAY_DIR_REQUEST) { >> - if (strcasecmp("Connection", key) == 0 && >> - strcasecmp("Upgrade", value) == 0) >> - priv->http_upgrade_req |= >> - HTTP_CONNECTION_UPGRADE; >> + if (strcasecmp("Connection", key) == 0) { >> + valuecopy = strdup(value); >> + while ((valuepart = strsep(&valuecopy, >> + ",")) != NULL) { >> + while (isblank(*valuepart)) >> + valuepart = &valuepart[1]; >> + if (strcasecmp("Upgrade", valuepart) >> + == 0) >> + priv->http_upgrade_req |= >> + HTTP_CONNECTION_UPGRADE; >> + } >> + free(valuecopy); >> + } >> if (strcasecmp("Upgrade", key) == 0 && >> strcasecmp("websocket", value) == 0) >> priv->http_upgrade_req |= >> >> >> begin-base64 644 websocket3.diff >> SW5kZXg6IHVzci5zYmluL3JlbGF5ZC9yZWxheV9odHRwLmMKPT09PT09PT09PT09PT09PT09PT09 >> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog >> L2N2cy9zcmMvdXNyLnNiaW4vcmVsYXlkL3JlbGF5X2h0dHAuYyx2CnJldHJpZXZpbmcgcmV2aXNp >> b24gMS43MgpkaWZmIC11IC1wIC1yMS43MiByZWxheV9odHRwLmMKLS0tIHVzci5zYmluL3JlbGF5 >> ZC9yZWxheV9odHRwLmMJNCBNYXIgMjAxOSAyMToyNTowMyAtMDAwMAkxLjcyCisrKyB1c3Iuc2Jp >> bi9yZWxheWQvcmVsYXlfaHR0cC5jCTYgTWFyIDIwMTkgMjA6NTM6NTkgLTAwMDAKQEAgLTM2LDYg >> KzM2LDcgQEAKICNpbmNsdWRlIDxzaXBoYXNoLmg+CiAjaW5jbHVkZSA8aW1zZy5oPgogI2luY2x1 >> ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlICJyZWxheWQuaCIK >> ICNpbmNsdWRlICJodHRwLmgiCkBAIC0xNjYsNiArMTY3LDcgQEAgcmVsYXlfcmVhZF9odHRwKHN0 >> cnVjdCBidWZmZXJldmVudCAqYmV2LAogCXN0cnVjdCByZWxheV9odHRwX3ByaXYJKnByaXYgPSBj >> b24tPnNlX3ByaXY7CiAJY2hhcgkJCSpsaW5lID0gTlVMTCwgKmtleSwgKnZhbHVlOwogCWNoYXIJ >> CQkqdXJscHJvdG8sICpob3N0LCAqcGF0aDsKKwljaGFyCQkJKnZhbHVlY29weSwgKnZhbHVlcGFy >> dDsKIAlpbnQJCQkgYWN0aW9uLCB1bmlxdWUsIHJldDsKIAljb25zdCBjaGFyCQkqZXJyc3RyOwog >> CXNpemVfdAkJCSBzaXplLCBsaW5lbGVuOwpAQCAtMzk5LDEwICs0MDEsMTkgQEAgcmVsYXlfcmVh >> ZF9odHRwKHN0cnVjdCBidWZmZXJldmVudCAqYmV2LAogCiAJCWlmIChjcmUtPmxpbmUgIT0gMSkg >> ewogCQkJaWYgKGNyZS0+ZGlyID09IFJFTEFZX0RJUl9SRVFVRVNUKSB7Ci0JCQkJaWYgKHN0cmNh >> c2VjbXAoIkNvbm5lY3Rpb24iLCBrZXkpID09IDAgJiYKLQkJCQkgICAgc3RyY2FzZWNtcCgiVXBn >> cmFkZSIsIHZhbHVlKSA9PSAwKQotCQkJCQlwcml2LT5odHRwX3VwZ3JhZGVfcmVxIHw9Ci0JCQkJ >> CSAgICBIVFRQX0NPTk5FQ1RJT05fVVBHUkFERTsKKwkJCQlpZiAoc3RyY2FzZWNtcCgiQ29ubmVj >> dGlvbiIsIGtleSkgPT0gMCkgeworCQkJCSAgICB2YWx1ZWNvcHkgPSBzdHJkdXAodmFsdWUpOwor >> CQkJCSAgICB3aGlsZSAoKHZhbHVlcGFydCA9IHN0cnNlcCgmdmFsdWVjb3B5LAorCQkJCQkiLCIp >> KSAhPSBOVUxMKSB7CisJCQkJCXdoaWxlIChpc2JsYW5rKCp2YWx1ZXBhcnQpKQorCQkJCQkgICAg >> dmFsdWVwYXJ0ID0gJnZhbHVlcGFydFsxXTsKKwkJCQkgICAgCWlmIChzdHJjYXNlY21wKCJVcGdy >> YWRlIiwgdmFsdWVwYXJ0KQorCQkJCQkgICAgPT0gMCkKKwkJCQkJICAgIHByaXYtPmh0dHBfdXBn >> cmFkZV9yZXEgfD0KKwkJCQkJICAgIAlIVFRQX0NPTk5FQ1RJT05fVVBHUkFERTsKKwkJCQkgICAg >> fQorCQkJCSAgICBmcmVlKHZhbHVlY29weSk7CisJCQkJfQogCQkJCWlmIChzdHJjYXNlY21wKCJV >> cGdyYWRlIiwga2V5KSA9PSAwICYmCiAJCQkJICAgIHN0cmNhc2VjbXAoIndlYnNvY2tldCIsIHZh >> bHVlKSA9PSAwKQogCQkJCQlwcml2LT5odHRwX3VwZ3JhZGVfcmVxIHw9Cg== >> ==== >> > >