You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2001/09/16 02:56:15 UTC
cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
dougm 01/09/15 17:56:15
Modified: src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
Log:
init ids for ithread Perls
Revision Changes Path
1.69 +6 -2 modperl-2.0/src/modules/perl/mod_perl.c
Index: mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- mod_perl.c 2001/09/15 22:26:57 1.68
+++ mod_perl.c 2001/09/16 00:56:15 1.69
@@ -354,10 +354,14 @@
static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
{
+ modperl_perl_ids_t ids;
+ modperl_perl_ids_get(&ids);
#ifdef USE_ITHREADS
- /*XXX*/
+ modperl_interp_mip_walk_servers(NULL, s,
+ modperl_perl_init_ids_mip,
+ (void*)&ids);
#else
- modperl_perl_init_ids(aTHX);
+ modperl_perl_init_ids(aTHX_ &ids);
#endif
}
1.2 +28 -8 modperl-2.0/src/modules/perl/modperl_perl.c
Index: modperl_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- modperl_perl.c 2001/09/15 22:25:29 1.1
+++ modperl_perl.c 2001/09/16 00:56:15 1.2
@@ -4,17 +4,37 @@
* others (larger tweaks) are in their own modules, e.g. modperl_env.c
*/
-void modperl_perl_init_ids(pTHX)
+void modperl_perl_ids_get(modperl_perl_ids_t *ids)
{
- sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32)getpid());
-
+ ids->pid = (I32)getpid();
#ifndef WIN32
- PL_uid = (int)getuid();
- PL_euid = (int)geteuid();
- PL_gid = (int)getgid();
- PL_egid = (int)getegid();
+ ids->uid = getuid();
+ ids->euid = geteuid();
+ ids->gid = getgid();
+ ids->gid = getegid();
+
MP_TRACE_g(MP_FUNC,
"uid=%d, euid=%d, gid=%d, egid=%d\n",
- PL_uid, PL_euid, PL_gid, PL_egid);
+ (int)ids->uid, (int)ids->euid,
+ (int)ids->gid, (int)ids->egid);
#endif
+}
+
+void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids)
+{
+ sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), ids->pid);
+
+#ifndef WIN32
+ PL_uid = ids->uid;
+ PL_euid = ids->euid;
+ PL_gid = ids->gid;
+ PL_egid = ids->egid;
+#endif
+}
+
+apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
+ void *data)
+{
+ modperl_perl_init_ids(aTHX_ (modperl_perl_ids_t *)data);
+ return APR_SUCCESS;
}
1.2 +12 -1 modperl-2.0/src/modules/perl/modperl_perl.h
Index: modperl_perl.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- modperl_perl.h 2001/09/15 22:25:29 1.1
+++ modperl_perl.h 2001/09/16 00:56:15 1.2
@@ -1,6 +1,17 @@
#ifndef MODPERL_PERL_H
#define MODPERL_PERL_H
-void modperl_perl_init_ids(pTHX);
+typedef struct {
+ I32 pid;
+ Uid_t uid, euid;
+ Gid_t gid, egid;
+} modperl_perl_ids_t;
+
+void modperl_perl_ids_get(modperl_perl_ids_t *ids);
+
+void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids);
+
+apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
+ void *data);
#endif /* MODPERL_PERL_H */