diff --git a/plugins/psgi/psgi_loader.c b/plugins/psgi/psgi_loader.c index ee9f51e6..4ab90d94 100644 --- a/plugins/psgi/psgi_loader.c +++ b/plugins/psgi/psgi_loader.c @@ -228,6 +228,7 @@ xs_init(pTHX) void uwsgi_psgi_app() { struct stat stat_psgi; + int id = uwsgi_apps_cnt; if (uperl.psgi) { @@ -299,7 +300,25 @@ void uwsgi_psgi_app() { close(uperl.fd); } - uwsgi_log("PSGI app (%s) loaded at %p\n", uperl.psgi, uperl.psgi_main); + struct uwsgi_app *wi = &uwsgi_apps[id]; + memset(wi, 0, sizeof(struct uwsgi_app)); + + wi->modifier1 = 5; + wi->mountpoint = ""; + wi->mountpoint_len = 0; + + uwsgi_log("PSGI app %d (%s) loaded at %p\n", id, uperl.psgi, uperl.psgi_main); + + uwsgi_apps_cnt++; + + // check if we need to emulate fork() COW + int i; + if (uwsgi.mywid == 0) { + for(i=1;i<=uwsgi.numproc;i++) { + memcpy(&uwsgi.workers[i].apps[id], &uwsgi.workers[0].apps[id], sizeof(struct uwsgi_app)); + uwsgi.workers[i].apps_cnt = uwsgi_apps_cnt; + } + } }