Skip to content

Commit

Permalink
Merge pull request #2547 from xrmx/2.0.22-backports
Browse files Browse the repository at this point in the history
2.0.22 backports
  • Loading branch information
xrmx committed Jul 25, 2023
2 parents 509104e + c46262c commit aba6903
Show file tree
Hide file tree
Showing 11 changed files with 142 additions and 110 deletions.
17 changes: 11 additions & 6 deletions .github/workflows/compile-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,21 @@ on:
jobs:
build:

runs-on: ubuntu-18.04
runs-on: ubuntu-20.04

steps:
- name: remove sury php ppa that does not ship libphpX.Y-embed
run: |
sudo add-apt-repository --remove ppa:ondrej/php
sudo apt remove php7.4-dev php7.4 php7.4-common
- name: Install dependencies
run: |
sudo apt update -qq
sudo apt install --no-install-recommends -qqyf python3.6-dev \
sudo apt install --no-install-recommends -qqyf python3.8-dev \
libxml2-dev libpcre3-dev libcap2-dev \
php7.2-dev libphp7.2-embed libargon2-0-dev libsodium-dev \
liblua5.1-0-dev ruby2.5-dev \
libargon2-0-dev libsodium-dev \
php7.4-dev libphp7.4-embed \
liblua5.1-0-dev ruby2.7-dev \
libjansson-dev libldap2-dev libpq-dev \
libpam0g-dev libsqlite3-dev libyaml-dev \
libzmq3-dev libmatheval-dev libperl-dev \
Expand All @@ -27,12 +32,12 @@ jobs:
libboost-thread-dev libboost-filesystem-dev \
libssl-dev libacl1-dev python-greenlet-dev \
libcurl4-openssl-dev \
openjdk-8-jdk libgloox-dev gccgo \
openjdk-11-jdk libgloox-dev gccgo \
cli-common-dev mono-devel mono-mcs uuid-dev \
curl check
- uses: actions/checkout@v2
- name: Build kitchensink uWSGI binary
run: UWSGICONFIG_PHPPATH=php-config7.2 /usr/bin/python3 uwsgiconfig.py --build travis
run: UWSGICONFIG_PHPPATH=php-config7.4 /usr/bin/python3 uwsgiconfig.py --build travis
- name: Build uWSGI binary
run: |
/usr/bin/python3 uwsgiconfig.py --build base
Expand Down
18 changes: 6 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,22 @@ on:
jobs:
python:

runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
test-suite: [unittest, python, deadlocks]
steps:
- name: Add deadnakes ppa
run: |
sudo apt install -qqyf software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
run: sudo add-apt-repository ppa:deadsnakes/ppa -y
- name: Install dependencies
run: |
sudo apt update -qq
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-dev \
libpcre3-dev libjansson-dev libcap2-dev \
curl check
- name: Install distutils
if: contains(fromJson('["3.8","3.9","3.10","3.11"]'), matrix.python-version)
if: contains(fromJson('["3.6","3.7","3.8","3.9","3.10","3.11"]'), matrix.python-version)
run: |
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-distutils \
- uses: actions/checkout@v2
Expand All @@ -52,20 +50,16 @@ jobs:
rack:

runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
rack-version: ["251"]
rack-version: ["270"]
steps:
- name: Add deadnakes ppa
run: |
sudo apt install -qqyf software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
- name: Install dependencies
run: |
sudo apt update -qq
sudo apt install --no-install-recommends -qqyf python3-dev \
libpcre3-dev libjansson-dev libcap2-dev \
libpcre3-dev libjansson-dev libcap2-dev ruby2.7-dev \
curl check
- uses: actions/checkout@v2
- name: Run unit tests
Expand Down
48 changes: 35 additions & 13 deletions apache2/mod_proxy_uwsgi.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,27 +315,25 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_
apr_bucket_brigade *pass_bb = apr_brigade_create(r->pool, c->bucket_alloc);

len = ap_getline(buffer, sizeof(buffer), rp, 1);

if (len <= 0) {
// oops
/* invalid or empty */
return HTTP_INTERNAL_SERVER_ERROR;
}

backend->worker->s->read += len;

if (len >= sizeof(buffer)-1) {
// oops
if ((apr_size_t)len >= sizeof(buffer)) {
/* too long */
return HTTP_INTERNAL_SERVER_ERROR;
}

/* Position of http status code */
int status_start;
if (apr_date_checkmask(buffer, "HTTP/#.# ###*")) {
status_start = 9;
} else if (apr_date_checkmask(buffer, "HTTP/# ###*")) {
status_start = 7;
} else {
// oops
return HTTP_INTERNAL_SERVER_ERROR;
/* not HTTP */
return HTTP_BAD_GATEWAY;
}
int status_end = status_start + 3;

Expand All @@ -354,17 +352,41 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_
}
r->status_line = apr_pstrdup(r->pool, &buffer[status_start]);

// start parsing headers;
/* parse headers */
while ((len = ap_getline(buffer, sizeof(buffer), rp, 1)) > 0) {
if ((apr_size_t)len >= sizeof(buffer)) {
/* too long */
len = -1;
break;
}
value = strchr(buffer, ':');
// invalid header skip
if (!value) continue;
*value = '\0';
++value;
if (!value) {
/* invalid header */
len = -1;
break;
}
*value++ = '\0';
if (*ap_scan_http_token(buffer)) {
/* invalid name */
len = -1;
break;
}
while (apr_isspace(*value)) ++value;
for (end = &value[strlen(value)-1]; end > value && apr_isspace(*end); --end) *end = '\0';
if (*ap_scan_http_field_content(value)) {
/* invalid value */
len = -1;
break;
}
apr_table_add(r->headers_out, buffer, value);
}
if (len < 0) {
/* Reset headers, but not to NULL because things below the chain expect
* this to be non NULL e.g. the ap_content_length_filter.
*/
r->headers_out = apr_table_make(r->pool, 1);
return HTTP_BAD_GATEWAY;
}

if ((buf = apr_table_get(r->headers_out, "Content-Type"))) {
ap_set_content_type(r, apr_pstrdup(r->pool, buf));
Expand Down
2 changes: 1 addition & 1 deletion buildconf/travis.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[uwsgi]
main_plugin = psgi,rack,lua,python,gevent,php,cgi,pty,xslt,msgpack,geoip,v8,pam,ldap,mono,jvm,ring,jwsgi,servlet,pypy,airbrake,alarm_curl,alarm_xmpp,asyncio,cheaper_backlog2,clock_monotonic,clock_realtime,cplusplus,curl_cron,dumbloop,dummy,echo,emperor_amqp,emperor_pg,emperor_zeromq,example,exception_log,fiber,forkptyrouter,graylog2,legion_cache_fetch,libffi,logcrypto,logpipe,logzmq,matheval,notfound,rbthreads,router_access,router_radius,router_spnego,router_xmldir,sqlite3,ssi,stats_pusher_file,stats_pusher_statsd,tornado,transformation_toupper,tuntap,webdav,xattr,zabbix
main_plugin = psgi,rack,lua,python,gevent,php,cgi,pty,xslt,msgpack,geoip,pam,ldap,mono,jvm,ring,jwsgi,servlet,pypy,airbrake,alarm_curl,asyncio,cheaper_backlog2,clock_monotonic,clock_realtime,cplusplus,curl_cron,dumbloop,dummy,echo,emperor_amqp,emperor_pg,emperor_zeromq,example,exception_log,fiber,forkptyrouter,graylog2,legion_cache_fetch,libffi,logcrypto,logpipe,logzmq,matheval,notfound,rbthreads,router_access,router_radius,router_spnego,router_xmldir,sqlite3,ssi,stats_pusher_file,stats_pusher_statsd,tornado,transformation_toupper,tuntap,webdav,xattr,zabbix
inherit = base
4 changes: 2 additions & 2 deletions core/offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,11 +236,11 @@ static void uwsgi_offload_close(struct uwsgi_thread *ut, struct uwsgi_offload_re
close(uor->pipe[0]);
}

free(uor);

#ifdef UWSGI_DEBUG
uwsgi_log("[offload] destroyed session %p\n", uor);
#endif

free(uor);
}

static void uwsgi_offload_append(struct uwsgi_thread *ut, struct uwsgi_offload_request *uor) {
Expand Down
23 changes: 13 additions & 10 deletions plugins/jvm/uwsgiplugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,20 @@
JVM_INCPATH = ['-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include"', '-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include/win32"']
JVM_LIBPATH = ['-L"/cygdrive/c/Program Files/Java/jdk1.7.0_17/jre/bin/server"']
else:
known_jvms = ('/usr/lib/jvm/java-7-openjdk', '/usr/local/openjdk7', '/usr/lib/jvm/java-6-openjdk', '/usr/local/openjdk', '/usr/java', '/usr/lib/jvm/java/', '/usr/lib/jvm/java-8-openjdk-%s' % arch)
known_jvms = ('/usr/lib/jvm/java-7-openjdk', '/usr/local/openjdk7', '/usr/lib/jvm/java-6-openjdk', '/usr/local/openjdk', '/usr/java', '/usr/lib/jvm/java/', '/usr/lib/jvm/java-8-openjdk-%s' % arch, '/usr/lib/jvm/java-11-openjdk-%s' % arch)
for jvm in known_jvms:
if os.path.exists(jvm + '/include'):
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
break
if os.path.exists("%s-%s/include" % (jvm, arch)):
jvm = "%s-%s" % (jvm, arch)
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
break
if os.path.exists(jvm + '/include'):
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
if os.path.exists("%s/jre"):
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
else:
JVM_LIBPATH = ["-L%s/lib/server" % (jvm,)]
break
if os.path.exists("%s-%s/include" % (jvm, arch)):
jvm = "%s-%s" % (jvm, arch)
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
break

try:
JVM_INCPATH = ['-I"' + os.environ['UWSGICONFIG_JVM_INCPATH'] + '"']
Expand Down
Loading

0 comments on commit aba6903

Please sign in to comment.