cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-17 Thread hgomez
hgomez  2004/03/17 09:02:38

  Modified:jk/native2/common jk_shm.c
  Log:
  Remove unused vars (thanks gcc -wall)

  

  no need to get name if it never used
  
  Revision  ChangesPath
  1.45  +1 -1  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- jk_shm.c  16 Mar 2004 09:03:12 -  1.44
  +++ jk_shm.c  17 Mar 2004 17:02:38 -  1.45
  @@ -433,8 +433,8 @@
   return JK_OK;
   }
   case SHM_DUMP: {
  -char *name=msg-getString( env, msg );
   #if 0
  +char *name=msg-getString( env, msg );
   /* XXX do we realy need that */
   jk2_shm_dump( env, shm, name );
   #endif
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-17 Thread hgomez
hgomez  2004/03/17 09:03:48

  Modified:jk/native2/common jk_shm.c
  Log:
  Security, init slot to NULL
  
  Revision  ChangesPath
  1.46  +1 -1  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- jk_shm.c  17 Mar 2004 17:02:38 -  1.45
  +++ jk_shm.c  17 Mar 2004 17:03:48 -  1.46
  @@ -236,7 +236,7 @@
   /* For now all slots are equal size
*/
   int i;
  -jk_shm_slot_t *slot;
  +jk_shm_slot_t *slot = NULL;
   
   if (shm-head != NULL) { 
   for (i = 0; i  shm-head-lastSlot; i++) {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-16 Thread hgomez
hgomez  2004/03/16 01:03:13

  Modified:jk/native2/common jk_shm.c
  Log:
  add the getAttribute feature to shm object

  

  Provider by Guenter/NormW
  
  Revision  ChangesPath
  1.44  +24 -1 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- jk_shm.c  15 Mar 2004 20:09:30 -  1.43
  +++ jk_shm.c  16 Mar 2004 09:03:12 -  1.44
  @@ -352,6 +352,25 @@
   
   }
   
  +static char *jk2_shm_getAttributeInfo[] = {file, size, slots, useMemory, 
NULL};
  +
  +static void * JK_METHOD jk2_shm_getAttribute(jk_env_t *env, jk_bean_t *mbean, char 
*name )
  +{
  +jk_shm_t *shm = (jk_shm_t *)mbean-object;
  +
  +if( strcmp( name, file )==0 ) {
  +return shm-fname;
  +} else if( strcmp( name, size ) == 0 ) {
  +return jk2_env_itoa( env, shm-size );
  +} else if( strcmp( name, slots ) == 0 ) {
  +return jk2_env_itoa( env, shm-slotMaxCount );
  +} else if( strcmp( name, useMemory ) == 0 ) {
  +return jk2_env_itoa( env, shm-inmem );
  +}
  +return NULL;
  +}
  +
  +
   /** Copy a chunk of data into a named slot
*/
   static int jk2_shm_writeSlot( jk_env_t *env, jk_shm_t *shm,
  @@ -444,7 +463,11 @@
   
   result-setAttribute = jk2_shm_setAttribute;
   result-setAttributeInfo = jk2_shm_setAttributeInfo;
  -/* result-getAttribute=jk2_shm_getAttribute; */
  +/* Add the following to this function - seems someone else */
  +/* thought of it based on the 'comment' previously there */
  +result-getAttributeInfo = jk2_shm_getAttributeInfo;
  +result-getAttribute = jk2_shm_getAttribute;
  +result-multiValueInfo = NULL;
   shm-mbean = result; 
   result-object = shm;
   result-invoke=jk2_shm_invoke;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-15 Thread mturk
mturk   2004/03/15 12:09:30

  Modified:jk/native2/common jk_shm.c
  Log:
  Supress duplicate initialization for shm, that causes duplicate shm initialization.
  There is also unneded call to shm-init inside the workerEnv-parentInit,
  since it is caled after workerEnv-init, but now it doesn't mater.
  
  Revision  ChangesPath
  1.43  +6 -0  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- jk_shm.c  13 Mar 2004 08:47:31 -  1.42
  +++ jk_shm.c  15 Mar 2004 20:09:30 -  1.43
  @@ -141,6 +141,12 @@
   
   int rv=JK_OK;
   
  +/* In case the shm has been initialized already
  + * for the current process.
  + */
  +if (shm-head  shm-image)
  +return rv;
  +
   shm-privateData = NULL;
   
   if (shm-fname == NULL) {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-15 Thread Kurt Miller
As of this commit my shm file rights problem on FreeBSD Apache/2.0.48
prefork is gone. ;-)

I've also tested both anon and file shm on OpenBSD Apache/1.3.29
successfully.

The new shm implementation is looking good to me.

-Kurt

- Original Message - 
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Monday, March 15, 2004 3:09 PM
Subject: cvs commit: jakarta-tomcat-connectors/jk/native2/common
jk_shm.c


 mturk   2004/03/15 12:09:30

   Modified:jk/native2/common jk_shm.c
   Log:
   Supress duplicate initialization for shm, that causes duplicate
shm initialization.
   There is also unneded call to shm-init inside the
workerEnv-parentInit,
   since it is caled after workerEnv-init, but now it doesn't mater.

   Revision  ChangesPath
   1.43  +6 -0
jakarta-tomcat-connectors/jk/native2/common/jk_shm.c

   Index: jk_shm.c

===
   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
   retrieving revision 1.42
   retrieving revision 1.43
   diff -u -r1.42 -r1.43
   --- jk_shm.c 13 Mar 2004 08:47:31 - 1.42
   +++ jk_shm.c 15 Mar 2004 20:09:30 - 1.43
   @@ -141,6 +141,12 @@

int rv=JK_OK;

   +/* In case the shm has been initialized already
   + * for the current process.
   + */
   +if (shm-head  shm-image)
   +return rv;
   +
shm-privateData = NULL;

if (shm-fname == NULL) {




 
-
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-13 Thread mturk
mturk   2004/03/13 00:47:31

  Modified:jk/native2/common jk_shm.c
  Log:
  Change the getSlot loop starting from index 0, not 1.
  
  Revision  ChangesPath
  1.42  +1 -1  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- jk_shm.c  13 Mar 2004 07:32:37 -  1.41
  +++ jk_shm.c  13 Mar 2004 08:47:31 -  1.42
  @@ -233,7 +233,7 @@
   jk_shm_slot_t *slot;
   
   if (shm-head != NULL) { 
  -for (i = 1; i  shm-head-lastSlot; i++) {
  +for (i = 0; i  shm-head-lastSlot; i++) {
   slot = shm-getSlot(env, shm, i);
   if (strncmp(slot-name, name, strlen(name)) == 0) {
   env-l-jkLog(env, env-l, JK_LOG_INFO, 
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-12 Thread mturk
mturk   2004/03/12 11:15:56

  Modified:jk/native2/common jk_shm.c
  Log:
  Total rewrite...
  Allows using anonymous shared memory or file based.
  Also allow usage of raw memory in case there is no shmem support.
  Added two new setup direcives: slots (manages max number of slots),
  and memory that when set uses malloc'd memory instead shmem.
  If the file name starts with 'anon' try using anonymous memory.
  Shmem uses create/attach mechanism so please test.
  
  Revision  ChangesPath
  1.40  +205 -370  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- jk_shm.c  11 Mar 2004 15:32:38 -  1.39
  +++ jk_shm.c  12 Mar 2004 19:15:56 -  1.40
  @@ -15,14 +15,6 @@
*/
   
   /**
  - * Scoreboard - used for communication on multi-process servers.
  - *
  - * This is an optional component - will be enabled only if APR is used. 
  - * The code is cutpasted from apache and mod_jserv.
  - *
  - * 
  - * 
  - * @author Jserv and Apache people
*/
   
   #include jk_global.h
  @@ -30,23 +22,11 @@
   #include jk_pool.h
   #include jk_shm.h
   
  -/* global.h will include apr.h. If APR and mmap is compiled in, we'll use
  -   it. If APR is not availalbe, we use mmap directly - the code worked fine
  -   for jserv.
  -*/
  -#if APR_HAS_MMAP
  -
  -#include apr_mmap.h
  -#include apr_file_io.h
  -#include apr_file_info.h
  +#include apr_shm.h
  +#include apr_rmm.h
  +#include apr_errno.h
   #include apr_general.h
  -
  -#elif defined(HAVE_MMAP)  !defined(WIN32)
  -
  -#include sys/mman.h
  -#include fcntl.h
  -
  -#endif
  +#include apr_lib.h 
   
   
   #define SHM_WRITE_SLOT 2
  @@ -54,276 +34,147 @@
   #define SHM_DUMP 6
   
   
  -#if (APR_HAS_MMAP == 1)
  -
  -static int JK_METHOD jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
  +static int JK_METHOD jk2_shm_destroy(jk_env_t *env, jk_shm_t *shmem)
   {
  -apr_mmap_t *aprShm=(apr_mmap_t *)shm-privateData;
  +apr_status_t rv = APR_SUCCESS;
  +#if APR_HAS_SHARED_MEMORY
  +apr_shm_t *shm = (apr_shm_t *)shmem-privateData;
  +
  +if (shm) {
  +if (shmem-attached)
  +rv = apr_shm_detach(shm);
  +else
  +rv = apr_shm_destroy(shm);
  +}
  +#endif
  +shmem-head = NULL;
  +shmem-image = NULL;
   
  -if( aprShm==NULL )
  -return JK_OK;
  -
  -return apr_mmap_delete(aprShm);
  +return rv == APR_SUCCESS ? JK_OK : JK_ERR;
   }
   
  -static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_create(jk_env_t *env, jk_shm_t *shmem)
   {
  -apr_status_t rc;
  -apr_file_t *file;
  -apr_finfo_t finfo;
  -apr_mmap_t *aprMmap;
  +apr_status_t rc = APR_EGENERAL;
  +apr_shm_t *shm = NULL;
   apr_pool_t *globalShmPool;
   
  -globalShmPool= (apr_pool_t *)env-getAprPool( env );
  +globalShmPool = (apr_pool_t *)env-getAprPool(env);
   
  -if( globalShmPool==NULL )
  +if (!globalShmPool) {
   return JK_ERR;
  -
  -/* Check if the scoreboard is in a note. That's the only way we
  -   can get HP-UX to work
  -*/
  -apr_pool_userdata_get(  shm-image, mod_jk_shm,globalShmPool );
  -if( shm-image!=NULL ) {
  -shm-head = (jk_shm_head_t *)shm-image;
  -
  -if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
  -  shm.create(): GLOBAL_SHM  %#lx\n, shm-image );
  -return JK_OK;
  -} else {
  -if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
  -  shm.create(): NO GLOBAL_SHM  %#lx\n, shm-image );
   }
   
  -
  -/* First make sure the file exists and is big enough
  - */
  -rc=apr_file_open( file, shm-fname,
  -  APR_READ | APR_WRITE | APR_CREATE | APR_BINARY,
  -  APR_OS_DEFAULT, globalShmPool);
  -if (rc) {
  -char error[256];
  -apr_strerror( rc, error, 256 );
  -
  -env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  shm.create(): error opening file %s %d %s\n,
  -  shm-fname, rc, error );
  -shm-privateData=NULL;
  -return JK_ERR;
  -} 
  -
  -rc=apr_file_info_get(finfo, APR_FINFO_SIZE, file);
  -
  -if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
  -  shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
(int) finfo.size );
  -
  -if( (int) finfo.size  shm-size ) {
  -char bytes[1024];
  -apr_size_t toWrite = (apr_size_t)(shm-size-finfo.size);
  -apr_off_t off=0;
  -
  -memset( bytes, 0, 1024 );
  -apr_file_seek( file, APR_END, off);

cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-12 Thread mturk
mturk   2004/03/12 23:32:37

  Modified:jk/native2/common jk_shm.c
  Log:
  Change memory directive to useMemory.
  
  Revision  ChangesPath
  1.41  +2 -2  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- jk_shm.c  12 Mar 2004 19:15:56 -  1.40
  +++ jk_shm.c  13 Mar 2004 07:32:37 -  1.41
  @@ -319,7 +319,7 @@
   
   static char *jk2_shm_setAttributeInfo[] = {resetEndpointStats,
  file, size,
  -   slots, memory,
  +   slots, useMemory,
  NULL};
   
   static int JK_METHOD jk2_shm_setAttribute(jk_env_t *env, jk_bean_t *mbean,
  @@ -334,7 +334,7 @@
   shm-size=atoi(value);
   } else if( strcmp( slots, name ) == 0 ) {
   shm-slotMaxCount=atoi(value);
  -} else if( strcmp( memory, name ) == 0 ) {
  +} else if( strcmp( useMemory, name ) == 0 ) {
   shm-inmem=atoi(value);
   } else if( strcmp( resetEndpointStats, name ) == 0 ) {
   if( strcmp( value, 1 )==0 )
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-03-11 Thread jfclere
jfclere 2004/03/11 07:32:38

  Modified:jk/native2/common jk_shm.c
  Log:
  Arrange some castings and check the total size.
  
  Revision  ChangesPath
  1.39  +16 -11jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- jk_shm.c  27 Feb 2004 14:25:32 -  1.38
  +++ jk_shm.c  11 Mar 2004 15:32:38 -  1.39
  @@ -68,7 +68,7 @@
   
   static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
   {
  -int rc;
  +apr_status_t rc;
   apr_file_t *file;
   apr_finfo_t finfo;
   apr_mmap_t *aprMmap;
  @@ -77,7 +77,7 @@
   globalShmPool= (apr_pool_t *)env-getAprPool( env );
   
   if( globalShmPool==NULL )
  -return JK_FALSE;
  +return JK_ERR;
   
   /* Check if the scoreboard is in a note. That's the only way we
  can get HP-UX to work
  @@ -102,7 +102,7 @@
   rc=apr_file_open( file, shm-fname,
 APR_READ | APR_WRITE | APR_CREATE | APR_BINARY,
 APR_OS_DEFAULT, globalShmPool);
  -if (rc!=JK_OK) {
  +if (rc) {
   char error[256];
   apr_strerror( rc, error, 256 );
   
  @@ -110,16 +110,16 @@
 shm.create(): error opening file %s %d %s\n,
 shm-fname, rc, error );
   shm-privateData=NULL;
  -return rc;
  +return JK_ERR;
   } 
   
   rc=apr_file_info_get(finfo, APR_FINFO_SIZE, file);
   
   if( shm-mbean-debug  0 )
   env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
  -  shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
finfo.size );
  +  shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
(int) finfo.size );
   
  -if( finfo.size  shm-size ) {
  +if( (int) finfo.size  shm-size ) {
   char bytes[1024];
   apr_size_t toWrite = (apr_size_t)(shm-size-finfo.size);
   apr_off_t off=0;
  @@ -151,15 +151,15 @@
   rc=apr_mmap_create( aprMmap,  file, (apr_off_t)0,
   (apr_size_t)finfo.size, APR_MMAP_READ | APR_MMAP_WRITE,
   globalShmPool );
  -if( rc!=JK_OK ) {
  +if( rc ) {
   char error[256];
   apr_strerror( rc, error, 256 );
   
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
 shm.create(): error creating %s %d %d %#lx %s\n,
  -  shm-fname, finfo.size, rc, globalShmPool, error );
  +  shm-fname, (int) finfo.size, (int) rc, globalShmPool, error 
);
   shm-privateData=NULL;
  -return rc;
  +return JK_ERR;
   }
   
   shm-privateData=aprMmap;
  @@ -404,11 +404,16 @@
*/
   jk_shm_slot_t * JK_METHOD jk2_shm_getSlot(struct jk_env *env, struct jk_shm *shm, 
int pos)
   {
  +char *ptr;
   if( pos==0 ) return NULL;
   if( shm-image==NULL ) return NULL;
   if( pos  shm-slotMaxCount ) return NULL;
  +if( pos * shm-slotSize  shm-size ) return NULL;
  +
   /* Pointer aritmethic, I hope it's right */
  -return (jk_shm_slot_t *)((long)shm-image + (pos * shm-slotSize));
  +ptr = (void *) shm-image;
  +ptr = ptr + (pos * shm-slotSize);
  +return ((jk_shm_slot_t *) ptr);
   }
   
   jk_shm_slot_t * JK_METHOD jk2_shm_createSlot(struct jk_env *env, struct jk_shm 
*shm, 
  @@ -559,7 +564,7 @@
   switch( code ) {
   case SHM_WRITE_SLOT: {
   char *instanceName=msg-getString( env, msg );
  -char *buf=msg-buf;
  +char *buf=(char *)msg-buf;
   int len=msg-len;
   
   return jk2_shm_writeSlot( env, shm, instanceName, buf, len );
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2004-02-27 Thread hgomez
hgomez  2004/02/27 06:25:32

  Modified:jk/native2/common jk_shm.c
  Log:
  Revert to old code until APR shm problem is fixed...
  
  Revision  ChangesPath
  1.38  +85 -0 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jk_shm.c  24 Feb 2004 08:44:40 -  1.37
  +++ jk_shm.c  27 Feb 2004 14:25:32 -  1.38
  @@ -179,6 +179,91 @@
   return JK_OK;
   }
   
  +#elif defined(HAVE_MMAP)  !defined(WIN32)
  +
  +static int JK_METHOD jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
  +{
  +caddr_t shmf=(caddr_t)shm-privateData;
  +
  +munmap(shmf, shm-size);
  +
  +return JK_OK;
  +}
  +
  +static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
  +{
  +int rc;
  +struct stat filestat;
  +
  +int fd = open(shm-fname, O_RDWR|O_CREAT, 0777);
  +
  +if (fd == -1) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't open %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +return JK_ERR;
  +}
  +
  +rc=stat( shm-fname, filestat);
  +if ( rc == -1) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't stat %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +return JK_ERR;
  +}
  +
  +if( shm-mbean-debug  0 )
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
  +  shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
filestat.st_size );
  +
  +if (filestat.st_size  shm-size ) {
  +char bytes[1024];
  +int toWrite=shm-size - filestat.st_size;
  +
  +memset( bytes, 0, 1024 );
  +lseek(fd, 0, SEEK_END);
  +
  +while( toWrite  0 ) {
  +int written;
  +written=write(fd, bytes, 1024);
  +if( written == -1 ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't write %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +return JK_ERR;
  +}
  +toWrite-=written;
  +}
  +
  +rc=stat( shm-fname, filestat);
  +if ( rc == -1) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't stat2 %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +return JK_ERR;
  + }
  +}
  +
  +shm-privateData = mmap(NULL, filestat.st_size, PROT_READ | PROT_WRITE, 
MAP_SHARED, fd, 0);
  +
  +if (shm-privateData == (caddr_t)-1 ||
  +shm-privateData == NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't mmap %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +
  +close(fd);
  +return JK_ERR;
  +}
  +
  +shm-image = (void *)shm-privateData;
  +shm-head = (jk_shm_head_t *)shm-image;
  +
  +close(fd);
  +
  +return JK_OK;
  +}
  +
   
   #else
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2003-03-03 Thread costin
costin  2003/03/03 23:18:05

  Modified:jk/native2/common jk_shm.c
  Log:
  Added a new attribute. Setting it will reset the stats. Hacky - but I getting methods
  to work from JMX is not yet done.
  
  Revision  ChangesPath
  1.33  +40 -3 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- jk_shm.c  4 Feb 2003 07:39:58 -   1.32
  +++ jk_shm.c  4 Mar 2003 07:18:04 -   1.33
  @@ -492,18 +492,54 @@
   return 0;
   }
   
  +static void jk2_shm_resetEndpointStats(jk_env_t *env, struct jk_shm *shm)
  +{
  +int i, j;
  +
  +if( shm==NULL || shm-head==NULL) {
  +return;
  +}
  +
  +for( i=1; i  shm-head-lastSlot; i++ ) {
  +jk_shm_slot_t *slot= shm-getSlot( env, shm, i );
  +
  +if( slot==NULL ) continue;
  +
  +if( strncmp( slot-name, epStat, 6 ) == 0 ) {
  +/* This is an endpoint slot */
  +void *data=slot-data;
  +
  +for( j=0; jslot-structCnt ; j++ ) {
  +jk_stat_t *statArray=(jk_stat_t *)data;
  +jk_stat_t *stat=statArray + j;
  +
  +stat-reqCnt=0;
  +stat-errCnt=0;
  +#ifdef HAS_APR
  +stat-totalTime=0;
  +stat-maxTime=0;
  +#endif
  +}
  +}
  +}
  +}
  +
   
  +static char *jk2_shm_setAttributeInfo[]={resetEndpointStats, file, size, NULL 
};
   
   static int JK_METHOD jk2_shm_setAttribute( jk_env_t *env, jk_bean_t *mbean, char 
*name, void *valueP ) {
   jk_shm_t *shm=(jk_shm_t *)mbean-object;
   char *value=(char *)valueP;
   
   if( strcmp( file, name ) == 0 ) {
  -shm-fname=value;
  +shm-fname=value;
   } else if( strcmp( size, name ) == 0 ) {
  -shm-size=atoi(value);
  +shm-size=atoi(value);
  +} else if( strcmp( resetEndpointStats, name ) == 0 ) {
  +if( strcmp( value, 1 )==0 )
  +jk2_shm_resetEndpointStats( env, shm );
   } else {
  -return JK_ERR;
  +return JK_ERR;
   }
   return JK_OK;   
   
  @@ -596,6 +632,7 @@
   shm-slotMaxCount=DEFAULT_SLOT_COUNT;
   
   result-setAttribute=jk2_shm_setAttribute;
  +result-setAttributeInfo=jk2_shm_setAttributeInfo;
   /* result-getAttribute=jk2_shm_getAttribute; */
   shm-mbean=result; 
   result-object=shm;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2003-01-23 Thread mturk
mturk   2003/01/23 04:15:42

  Modified:jk/native2/common jk_shm.c
  Log:
  Report the missing shm file as INFO not ERROR, cause it is
  obvious that the user didn't specify the [shm] in the config.
  
  Revision  ChangesPath
  1.31  +9 -7  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- jk_shm.c  27 Sep 2002 13:07:28 -  1.30
  +++ jk_shm.c  23 Jan 2003 12:15:42 -  1.31
  @@ -262,7 +262,7 @@
   int toWrite=shm-size - filestat.st_size;
   
   memset( bytes, 0, 1024 );
  - lseek(fd, 0, SEEK_END);
  +lseek(fd, 0, SEEK_END);
   
   while( toWrite  0 ) {
   int written;
  @@ -282,7 +282,7 @@
 shm.create(): Can't stat2 %s %d %s\n,
 shm-fname, errno, strerror( errno ));
   return JK_ERR;
  - }
  +}
   }
   
   shm-privateData = mmap(NULL, filestat.st_size, PROT_READ | PROT_WRITE, 
MAP_SHARED, fd, 0);
  @@ -293,7 +293,7 @@
 shm.create(): Can't mmap %s %d %s\n,
 shm-fname, errno, strerror( errno ));
   
  - close(fd);
  +close(fd);
   return JK_ERR;
   }
   
  @@ -330,7 +330,7 @@
   shm-privateData=NULL;
   
   if( shm-fname==NULL ) {
  -env-l-jkLog(env, env-l, JK_LOG_ERROR, shm.init(): No file\n);
  +env-l-jkLog(env, env-l, JK_LOG_INFO, shm.init(): shm file not 
specified\n);
   return JK_ERR;
   }
   
  @@ -471,6 +471,8 @@
   /* XXX interprocess sync */
   slotId=shm-head-lastSlot++;
   }
  +else
  +return NULL;
   slot=shm-getSlot( env, shm, slotId );
   
   if( slot==NULL ) return NULL;
  @@ -497,11 +499,11 @@
   char *value=(char *)valueP;
   
   if( strcmp( file, name ) == 0 ) {
  - shm-fname=value;
  +shm-fname=value;
   } else if( strcmp( size, name ) == 0 ) {
  - shm-size=atoi(value);
  +shm-size=atoi(value);
   } else {
  - return JK_ERR;
  +return JK_ERR;
   }
   return JK_OK;   
   
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-09-24 Thread hgomez

hgomez  2002/09/24 15:41:48

  Modified:jk/native2/common jk_shm.c
  Log:
  AS/400 back port from 1.2.0.
  
  BTW, the AS/400 code should be checked later, since we should know if 
  we have to convert from EBCDIC to ASCII here...
  
  Revision  ChangesPath
  1.29  +13 -1 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- jk_shm.c  8 Jul 2002 13:37:10 -   1.28
  +++ jk_shm.c  24 Sep 2002 22:41:48 -  1.29
  @@ -417,7 +417,19 @@
   
   if( name==NULL ) return JK_ERR;
   
  -f=fopen(name, a+);
  +/* 
  + * XXX
  + * To be checked later, AS400 may need no ccsid 
  + * conversions applied if pure binary, for now 
  + * I assume stream is EBCDIC and need to be converted 
  + * in standard ASCII using codepage 819
  + */
  +#ifdef AS400
  +f = fopen(name, a+, o_ccsid=819);
  +#else
  +f = fopen(name, a+);
  +#endif
  +
   fwrite( shm-head, 1, shm-size, f ); 
   fclose( f );
   
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-07-08 Thread mturk

mturk   2002/07/08 06:37:10

  Modified:jk/native2/common jk_shm.c
  Log:
  no message
  
  Revision  ChangesPath
  1.28  +8 -8  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- jk_shm.c  12 Jun 2002 12:40:17 -  1.27
  +++ jk_shm.c  8 Jul 2002 13:37:10 -   1.28
  @@ -128,12 +128,12 @@
   shm-head = (jk_shm_head_t *)shm-image;
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.create(): GLOBAL_SHM  %#lx\n, shm-image );
   return JK_OK;
   } else {
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.create(): NO GLOBAL_SHM  %#lx\n, shm-image );
   }
   
  @@ -157,7 +157,7 @@
   rc=apr_file_info_get(finfo, APR_FINFO_SIZE, file);
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
finfo.size );
   
   if( finfo.size  shm-size ) {
  @@ -254,7 +254,7 @@
   }
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
filestat.st_size );
   
   if (filestat.st_size  shm-size ) {
  @@ -342,7 +342,7 @@
   }
   
   if( shm-mbean-debug  0 ) {
  -env-l-jkLog(env, env-l, JK_LOG_INFO, shm.init(): file=%s size=%d\n,
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, shm.init(): file=%s size=%d\n,
 shm-fname, shm-size);
   }
   
  @@ -362,7 +362,7 @@
   }
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.create(): shm created %#lx\n, shm-head );
   
   return JK_OK;
  @@ -383,7 +383,7 @@
   shm-head-lastSlot = 1;
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO, shm.init() Reset %s %#lx\n,
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, shm.init() Reset %s %#lx\n,
 shm-fname, shm-image);
   
   return JK_OK;
  @@ -538,7 +538,7 @@
   jk_shm_t *shm=(jk_shm_t *)bean-object;
   
   if( shm-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +env-l-jkLog(env, env-l, JK_LOG_DEBUG, 
 shm.%d() \n, code);
   
   switch( code ) {
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c jk_workerEnv.c jk_worker_ajp13.c

2002-06-12 Thread jfclere

jfclere 2002/06/12 05:40:17

  Modified:jk/native2/common jk_shm.c jk_workerEnv.c jk_worker_ajp13.c
  Log:
  Prevent the core when getSlot() failed.
  
  Revision  ChangesPath
  1.27  +10 -8 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- jk_shm.c  10 Jun 2002 21:55:06 -  1.26
  +++ jk_shm.c  12 Jun 2002 12:40:17 -  1.27
  @@ -447,16 +447,18 @@
   int slotId;
   int i;
   jk_shm_slot_t *slot;
  -
  -for( i=1; ishm-head-lastSlot; i++ ) {
  -slot= shm-getSlot( env, shm, i );
  -if( strncmp( slot-name, name, strlen(name) ) == 0 ) {
  -return slot;
  +   
  +if (shm-head!=NULL) { 
  +for( i=1; ishm-head-lastSlot; i++ ) {
  +slot= shm-getSlot( env, shm, i );
  +if( strncmp( slot-name, name, strlen(name) ) == 0 ) {
  +return slot;
  +}
   }
  +/* New slot */
  +/* XXX interprocess sync */
  +slotId=shm-head-lastSlot++;
   }
  -/* New slot */
  -/* XXX interprocess sync */
  -slotId=shm-head-lastSlot++;
   slot=shm-getSlot( env, shm, slotId );
   
   if( slot==NULL ) return NULL;
  
  
  
  1.54  +3 -2  jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c
  
  Index: jk_workerEnv.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- jk_workerEnv.c10 Jun 2002 21:55:06 -  1.53
  +++ jk_workerEnv.c12 Jun 2002 12:40:17 -  1.54
  @@ -580,7 +580,8 @@
   wEnv-endpointMap-add( env, wEnv-endpointMap, ep-mbean-localName, ep );
   ep-mbean-id=pos;
   
  -ep-mbean-init( env, ep-mbean );
  +if (ep-mbean-init( env, ep-mbean )==JK_ERR)
  +return JK_ERR;
   
   return JK_OK;
   }
  
  
  
  1.32  +14 -5 jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c
  
  Index: jk_worker_ajp13.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- jk_worker_ajp13.c 10 Jun 2002 21:55:06 -  1.31
  +++ jk_worker_ajp13.c 12 Jun 2002 12:40:17 -  1.32
  @@ -561,6 +561,7 @@
   {
   jk_endpoint_t *e = NULL;
   jk_bean_t *jkb;
  +int ret;
   
   if( ajp13-secret ==NULL ) {
   }
  @@ -596,17 +597,23 @@

   *eP = e;
   
  -ajp13-workerEnv-addEndpoint( env, ajp13-workerEnv, e );
  +ret = ajp13-workerEnv-addEndpoint( env, ajp13-workerEnv, e );
   }
   if( ajp13-cs != NULL ) 
   ajp13-cs-unLock( env, ajp13-cs );
   
  -if( ajp13-mbean-debug  0 )
  -env-l-jkLog(env, env-l, JK_LOG_INFO,
  +if( ajp13-mbean-debug  0 ) {
  +if (ret==JK_OK)
  +env-l-jkLog(env, env-l, JK_LOG_INFO,
 ajp13.getEndpoint(): Created endpoint %s %s \n,
 ajp13-mbean-name, jkb-name);
  +else
  +env-l-jkLog(env, env-l, JK_LOG_INFO,
  +  ajp13.getEndpoint(): endpoint creation %s %s failed\n,
  +  ajp13-mbean-name, jkb-name);
  +}
   
  -return JK_OK;
  +return ret;
   }
   
   /*
  @@ -620,7 +627,9 @@
   jk_endpoint_t   *e;
   
   /* Get endpoint from the pool */
  -jk2_worker_ajp13_getEndpoint( env, w, e );
  +err=jk2_worker_ajp13_getEndpoint( env, w, e );
  +if  (err!=JK_OK)
  +  return err;
   
   #ifdef HAS_APR
   if( s-uriEnv!=NULL  s-uriEnv-timing == JK_TRUE ) {
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c jk_worker_ajp13.c jk_workerEnv.c

2002-06-08 Thread nacho

nacho   2002/06/08 17:50:49

  Modified:jk/native2/include jk_requtil.h
   jk/native2/common jk_shm.c jk_worker_ajp13.c jk_workerEnv.c
  Log:
  * No warnings
  
  Revision  ChangesPath
  1.7   +10 -0 jakarta-tomcat-connectors/jk/native2/include/jk_requtil.h
  
  Index: jk_requtil.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_requtil.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_requtil.h  19 Apr 2002 02:36:23 -  1.6
  +++ jk_requtil.h  9 Jun 2002 00:50:48 -   1.7
  @@ -189,6 +189,16 @@
   int jk_requtil_base64EncodeCert(char *encoded,
   const unsigned char *string, int len);
   
  +int jk2_serialize_postHead(jk_env_t *env, jk_msg_t   *msg,
  +   jk_ws_service_t  *r,
  +   jk_endpoint_t *ae);
  +
  +int jk2_serialize_request13(jk_env_t *env, jk_msg_t *msg,
  +jk_ws_service_t *s,
  +jk_endpoint_t *ae);
  +
  +
  +
   #ifdef __cplusplus
   }
   #endif /* __cplusplus */
  
  
  
  1.24  +0 -1  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- jk_shm.c  31 May 2002 19:19:45 -  1.23
  +++ jk_shm.c  9 Jun 2002 00:50:49 -   1.24
  @@ -536,7 +536,6 @@
   jk_msg_t *msg, int raw)
   {
   jk_shm_t *shm=(jk_shm_t *)bean-object;
  -int rc;
   
   if( shm-mbean-debug  0 )
   env-l-jkLog(env, env-l, JK_LOG_INFO, 
  
  
  
  1.29  +1 -2  jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c
  
  Index: jk_worker_ajp13.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- jk_worker_ajp13.c 31 May 2002 22:51:28 -  1.28
  +++ jk_worker_ajp13.c 9 Jun 2002 00:50:49 -   1.29
  @@ -72,6 +72,7 @@
   #include jk_service.h
   #include jk_env.h
   #include jk_objCache.h
  +#include jk_reqUtil.h
   #include jk_registry.h
   
   #define AJP_DEF_RETRY_ATTEMPTS(2)
  @@ -560,7 +561,6 @@
   {
   jk_endpoint_t *e = NULL;
   jk_bean_t *jkb;
  -int csOk;
   
   if( ajp13-secret ==NULL ) {
   }
  @@ -789,7 +789,6 @@
   {
   jk_worker_t *w=(jk_worker_t *)pool-calloc(env, pool, sizeof(jk_worker_t));
   jk_bean_t *jkb;
  -int i;
   
   if (name == NULL || w == NULL) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR,
  
  
  
  1.52  +1 -3  jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c
  
  Index: jk_workerEnv.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- jk_workerEnv.c31 May 2002 19:19:45 -  1.51
  +++ jk_workerEnv.c9 Jun 2002 00:50:49 -   1.52
  @@ -59,7 +59,7 @@
* Description: Workers controller *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
* Author:  Henri Gomez [EMAIL PROTECTED]   *
  - * Version: $Revision: 1.51 $   *
  + * Version: $Revision: 1.52 $   *
***/
   
   #include jk_env.h
  @@ -591,7 +591,6 @@
   {
   int err=JK_OK;
   jk_worker_t *oldW = NULL;
  -int csOk;
   
   w-workerEnv=wEnv;
   
  @@ -653,7 +652,6 @@
   {
   jk_workerEnv_t *wEnv;
   jk_bean_t *jkb;
  -int csOk;
   
   wEnv=(jk_workerEnv_t *)pool-calloc( env, pool, sizeof( jk_workerEnv_t ));
   
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-06-08 Thread nacho

nacho   2002/06/08 18:55:28

  Modified:jk/native2/common jk_shm.c
  Log:
  * No warnings
  
  Revision  ChangesPath
  1.25  +0 -2  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- jk_shm.c  9 Jun 2002 00:50:49 -   1.24
  +++ jk_shm.c  9 Jun 2002 01:55:28 -   1.25
  @@ -315,8 +315,6 @@
   
   static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
   {
  -int rc;
  -
   return JK_ERR;
   }
   
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-05-19 Thread nacho

nacho   02/05/19 10:37:08

  Modified:jk/native2/common jk_shm.c
  Log:
  * Fixed problems when creating the shm file, due to unsigned arithmetics.. 
1000-1024=4.356.357.838.652 :)
  
  Revision  ChangesPath
  1.18  +6 -2  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- jk_shm.c  16 May 2002 23:48:27 -  1.17
  +++ jk_shm.c  19 May 2002 17:37:08 -  1.18
  @@ -171,7 +171,11 @@
 shm-fname, errno, strerror( errno ));
   return JK_ERR;
   }
  -toWrite-=written;
  +if( toWrite  written  ){
  +toWrite=0;
  +}else{
  +toWrite-=written;
  +}
   }
   
   rc=apr_file_info_get(finfo, APR_FINFO_SIZE, file);
  @@ -248,7 +252,7 @@
   int toWrite=shm-size - filestat.st_size;
   
   memset( bytes, 0, 1024 );
  - lseek(fd, 0, SEEK_END);
  + lseek(fd, 0, SEEK_END);
   
   while( toWrite  0 ) {
   int written;
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-05-16 Thread costin

costin  02/05/16 14:02:44

  Modified:jk/native2/common jk_shm.c
  Log:
  Refactoring of jk_shm, using apr_mmap instead of apr_shm.
  
  Also added code for apache1.3 ( or if apr is not compiled ) - it's cutpaste
  from jserv, it work wherever jserv worked.
  
  While apr_shm may work on more platforms, I think it's better to use
  mmap since JDK1.4 will have this built-in and most platforms do
  have it.
  
  If mmap is not available - we just loose the ability to report
  statistics, and the eventual shm channel ( but jk will still work ).
  
  Revision  ChangesPath
  1.16  +261 -153  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- jk_shm.c  15 May 2002 19:45:45 -  1.15
  +++ jk_shm.c  16 May 2002 21:02:44 -  1.16
  @@ -71,30 +71,24 @@
   #include jk_pool.h
   #include jk_shm.h
   
  -#ifdef HAS_APR
  +/* global.h will include apr.h. If APR and mmap is compiled in, we'll use
  +   it. If APR is not availalbe, we use mmap directly - the code worked fine
  +   for jserv.
  +*/
  +#if APR_HAS_MMAP
  +
  +#include apr_mmap.h
  +#include apr_file_io.h
  +#include apr_file_info.h
  +static apr_pool_t *globalShmPool;
   
  -#include apr.h
  -#include apr_strings.h
  -#include apr_general.h
  -#include apr_portable.h
  -#include apr_lib.h
  +#elif defined(HAVE_MMAP)  !defined(WIN32)
   
  -#define APR_WANT_STRFUNC
  -#include apr_want.h
  +#include sys/mman.h
  +#include fcntl.h
   
  -#if APR_HAVE_SYS_TYPES_H
  -#include sys/types.h
   #endif
   
  -#if APR_HAS_SHARED_MEMORY
  -
  -#include apr_shm.h
  -#include apr_atomic.h
  -
  -/* Inter-process synchronization - to create the slots */
  -#include apr_proc_mutex.h
  -
  -static apr_pool_t *globalShmPool;
   
   #define SHM_SET_ATTRIBUTE 0
   #define SHM_WRITE_SLOT 2
  @@ -102,32 +96,265 @@
   #define SHM_DETACH 4
   #define SHM_RESET 5
   #define SHM_DUMP 6
  -#define SHM_DESTROY 7
   
   
  +#ifdef APR_HAS_MMAP
  +
   static int jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
   {
  -apr_shm_t *aprShm=(apr_shm_t *)shm-privateData;
  +apr_mmap_t *aprShm=(apr_mmap_t *)shm-privateData;
   
  -return apr_shm_destroy(aprShm);
  +if( aprShm==NULL )
  +return JK_OK;
  +
  +return apr_mmap_delete(aprShm);
   }
   
  -static int JK_METHOD jk2_shm_detach(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
   {
  -apr_shm_t *aprShm=(apr_shm_t *)shm-privateData;
  +int rc;
  +apr_file_t *file;
  +apr_finfo_t finfo;
  +apr_size_t size;
  +apr_mmap_t *aprMmap;
  +
  +/* We don't want to have to recreate the scoreboard after
  + * restarts, so we'll create a global pool and never clean it.
  + */
  +if( globalShmPool==NULL ) {
  +/* Make sure apr is initialized */
  +apr_initialize(); 
  +rc = apr_pool_create(globalShmPool, NULL);
  +if (rc != APR_SUCCESS || globalShmPool==NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  Unable to create global pool for jk_shm\n);
  +return rc;
  +}
  +}
  +
  +/* First make sure the file exists and is big enough
  + */
  +rc=apr_file_open( file, shm-fname,
  +  APR_READ | APR_WRITE | APR_CREATE | APR_BINARY,
  +  APR_OS_DEFAULT, globalShmPool);
  +if (rc!=JK_OK) {
  +char error[256];
  +apr_strerror( rc, error, 256 );
  +
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): error opening file %s %d %s\n,
  +  shm-fname, rc, error );
  +shm-privateData=NULL;
  +return rc;
  +} 
  +
  +rc=apr_file_info_get(finfo, APR_FINFO_SIZE, file);
  +
  +if( shm-mbean-debug  0 )
  +env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +  shm.create(): file open %s %d %d\n, shm-fname, shm-size, 
finfo.size );
  +
  +if( finfo.size  shm-size ) {
  +char bytes[1024];
  +int toWrite=shm-size-finfo.size;
  +apr_off_t off=0;
  +
  +memset( bytes, 0, 1024 );
  +apr_file_seek( file, APR_END, off);
   
  -return apr_shm_detach(aprShm);
  +while( toWrite  0 ) {
  +apr_size_t written;
  +rc=apr_file_write_full(file, bytes, 1024, written);
  +if( rc!=APR_SUCCESS ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): Can't write %s %d %s\n,
  +  shm-fname, errno, strerror( errno ));
  +return JK_ERR;
  +}
  +toWrite-=written;
  +}
  +
  +

cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-05-13 Thread nacho

nacho   02/05/13 01:57:56

  Modified:jk/native2/common jk_shm.c
  Log:
  * Fixed initialization of APR, this must be done in every place we use APR.
  
  Revision  ChangesPath
  1.14  +2 -0  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- jk_shm.c  12 May 2002 01:07:10 -  1.13
  +++ jk_shm.c  13 May 2002 08:57:56 -  1.14
  @@ -75,6 +75,7 @@
   
   #include apr.h
   #include apr_strings.h
  +#include apr_general.h
   #include apr_portable.h
   #include apr_lib.h
   
  @@ -202,6 +203,7 @@
   /* We don't want to have to recreate the scoreboard after
* restarts, so we'll create a global pool and never clean it.
*/
  +apr_initialize(); 
   rv = apr_pool_create(globalShmPool, NULL);
   
   if (rv != APR_SUCCESS) {
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-29 Thread costin

costin  02/04/29 12:32:01

  Modified:jk/native2/common jk_shm.c
  Log:
  One more step.
  
  Revision  ChangesPath
  1.7   +36 -7 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_shm.c  25 Apr 2002 19:18:39 -  1.6
  +++ jk_shm.c  29 Apr 2002 19:32:01 -  1.7
  @@ -96,7 +96,7 @@
   static apr_pool_t *globalShmPool;
   
   #define SHM_SET_ATTRIBUTE 0
  -#define SHM_REGISTER_TOMCAT 2
  +#define SHM_WRITE_SLOT 2
   #define SHM_ATTACH 3
   #define SHM_DETACH 4
   
  @@ -257,10 +257,19 @@
   {
   /* For now all slots are equal size
*/
  -/* XXX interprocess sync */
  -int slotId=shm-head-lastSlot++;
  +int slotId;
  +jk_shm_slot_t *slot;
   
  -jk_shm_slot_t *slot= (void *)shm-image + slotId * shm-slotSize;
  +for( i=1; ishm-head-lastSlot; i++ ) {
  +slot= shm-getSlot( env, shm, i );
  +if( strncmp( slot-name, name ) == 0 ) {
  +return slot;
  +}
  +}
  +/* New slot */
  +/* XXX interprocess sync */
  +slotId=shm-head-lastSlot++;
  +slot=shm-getSlot( env, shm, slotId );
   
   env-l-jkLog(env, env-l, JK_LOG_INFO, 
 shm.createSlot() Create %d %p %p\n, slotId, shm-image, slot );
  @@ -327,11 +336,31 @@
   
   return JK_OK;
   }
  -case SHM_REGISTER_TOMCAT: {
  -
  +case SHM_WRITE_SLOT: {
  +char *instanceName=msg-getString( env, msg );
  +jk_shm_slot *slot;
  +
  +env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +  shm.registerTomcat() %s %d\n,
  +  instanceName, msg-len );
  +if( msg-len  shm-slotSize ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.registerTomcat() Packet too large %d %d\n,
  +  shm-slotSize, msg-len );
  +return JK_ERR;
  +}
  +slot=shm-createSlot( env, shm, instanceName, 0 );
  +
  +/*  Copy the body in the slot */
  +memcpy( slot-data, msg-buf, msg-len );
  +slot-size=msg-len;
  +slot-ver++;
  +/* Update the head lb version number - that would triger
  +   reconf on the next request */
  +shm-head-lbVer++;
   return JK_OK;
   }
  -}
  +}/* switch */
   return JK_ERR;
   }
   
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-29 Thread costin

costin  02/04/29 18:01:03

  Modified:jk/native2/common jk_shm.c
  Log:
  Fix previous commit.
  
  Revision  ChangesPath
  1.8   +3 -2  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- jk_shm.c  29 Apr 2002 19:32:01 -  1.7
  +++ jk_shm.c  30 Apr 2002 01:01:03 -  1.8
  @@ -258,11 +258,12 @@
   /* For now all slots are equal size
*/
   int slotId;
  +int i;
   jk_shm_slot_t *slot;
   
   for( i=1; ishm-head-lastSlot; i++ ) {
   slot= shm-getSlot( env, shm, i );
  -if( strncmp( slot-name, name ) == 0 ) {
  +if( strncmp( slot-name, name, strlen(name) ) == 0 ) {
   return slot;
   }
   }
  @@ -338,7 +339,7 @@
   }
   case SHM_WRITE_SLOT: {
   char *instanceName=msg-getString( env, msg );
  -jk_shm_slot *slot;
  +jk_shm_slot_t *slot;
   
   env-l-jkLog(env, env-l, JK_LOG_INFO, 
 shm.registerTomcat() %s %d\n,
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-25 Thread costin

costin  02/04/25 12:18:40

  Modified:jk/native2/common jk_shm.c
  Log:
  Many small fixes and changes to allow it to be used from C and java.
  
  Revision  ChangesPath
  1.6   +181 -131  jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jk_shm.c  18 Apr 2002 22:47:18 -  1.5
  +++ jk_shm.c  25 Apr 2002 19:18:39 -  1.6
  @@ -88,85 +88,69 @@
   #if APR_HAS_SHARED_MEMORY
   
   #include apr_shm.h
  +#include apr_atomic.h
   
   /* Inter-process synchronization - to create the slots */
   #include apr_proc_mutex.h
   
  -struct jk_shm_buffer {
  -/** Incremented after each modification */
  -int generation;
  -/** 1 if the buffer is in an unstable state.
  - *  XXX Shouldn't happen
  - */
  -int busy;
  -
  -/** Pid of the owning process */
  -int owner;
  -
  -int id;
  -char name[64];
  -
  -char *data;
  -};
  -
  -struct jk_shm_head {
  -int size;
  -int bufferCount;
  -
  -int objCount;
  -int lastId;
  -
  -struct jk_shm_buffer buffers[1];
  -};
  -
  -
  -typedef struct jk_shm_private {
  -apr_size_t size;
  -apr_shm_t *aprShm;
  +static apr_pool_t *globalShmPool;
   
  -struct jk_shm_head *image;
  -} jk_shm_private_t;
  +#define SHM_SET_ATTRIBUTE 0
  +#define SHM_REGISTER_TOMCAT 2
  +#define SHM_ATTACH 3
  +#define SHM_DETACH 4
   
  -static apr_pool_t *globalShmPool;
   
   static int jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
   {
  -jk_shm_private_t *shmP=shm-privateData;
  -
  -return apr_shm_destroy(shmP-aprShm);
  +apr_shm_t *aprShm=(apr_shm_t *)shm-privateData;
  +
  +return apr_shm_destroy(aprShm);
   }
   
   static int jk2_shm_detach(jk_env_t *env, jk_shm_t *shm)
   {
  -jk_shm_private_t *shmP=shm-privateData;
  +apr_shm_t *aprShm=(apr_shm_t *)shm-privateData;
   
  -return apr_shm_detach(shmP-aprShm);
  +return apr_shm_detach(aprShm);
   }
   
   static int jk2_shm_attach(jk_env_t *env, jk_shm_t *shm)
   {
  -jk_shm_private_t *shmP=shm-privateData;
  -
  -return apr_shm_attach(shmP-aprShm, shm-fname, globalShmPool );
  +return apr_shm_attach((apr_shm_t **)shm-privateData, shm-fname, 
globalShmPool );
   }
   
   
   /* Create or reinit an existing scoreboard. The MPM can control whether
* the scoreboard is shared across multiple processes or not
*/
  -int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
  -{
  -apr_status_t rv;
  -jk_shm_private_t *shmP=shm-privateData;
  +static int  jk2_shm_init(struct jk_env *env, jk_shm_t *shm) {
  +apr_status_t rv=APR_SUCCESS;
  +jk_shm_head_t *head;
  +
  +if( shm-fname==NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, shm.init(): No file\n);
  +return JK_ERR;
  +}
   
  -/* The config says to create a name-based shmem */
  -if ( shm-fname == NULL ) {
  +if( shm-size == 0  ) {
  +shm-size = shm-slotSize * shm-slotMaxCount;
  +}
  +
  +/* We don't want to have to recreate the scoreboard after
  + * restarts, so we'll create a global pool and never clean it.
  + */
  +rv = apr_pool_create(globalShmPool, NULL);
  +
  +if (rv != APR_SUCCESS) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  No name for jk_shm\n);
  -return JK_ERR;
  +  Unable to create global pool for jk_shm\n);
  +return rv;
   }
   
  -rv=apr_shm_attach(shmP-aprShm, shm-fname, globalShmPool );
  +shm-privateData=NULL;
  +
  +rv=apr_shm_attach((apr_shm_t **)shm-privateData, shm-fname, globalShmPool );
   if( rv ) {
   char error[256];
   apr_strerror( rv, error, 256 );
  @@ -174,8 +158,20 @@
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
 shm.create(): error attaching shm, will create %s %d %p 
%s\n,
 shm-fname, rv, globalShmPool, error );
  -shmP-aprShm=NULL;
  +shm-privateData=NULL;
   } else {
  +env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +  shm.create(): attaching to existing shm %s\n,
  +  shm-fname );
  +/* Get the base address, initialize it */
  +shm-image = apr_shm_baseaddr_get( (apr_shm_t *)shm-privateData);
  +shm-head = (jk_shm_head_t *)shm-image;
  +
  +if( shm-image==NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): No base memory %s\n, shm-fname);
  +return JK_ERR;
  +}
   return JK_OK;
   }
   
  @@ -192,7 +188,7 @@
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
 shm.create(): error removing 

cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-18 Thread costin

costin  02/04/18 15:47:18

  Modified:jk/native2/common jk_shm.c
  Log:
  Fix few silly errors.
  
  Now jk scoreboard is loaded ok from apache side.
  
  Revision  ChangesPath
  1.5   +39 -6 jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jk_shm.c  17 Apr 2002 22:52:14 -  1.4
  +++ jk_shm.c  18 Apr 2002 22:47:18 -  1.5
  @@ -154,7 +154,7 @@
   /* Create or reinit an existing scoreboard. The MPM can control whether
* the scoreboard is shared across multiple processes or not
*/
  -static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
  +int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
   {
   apr_status_t rv;
   jk_shm_private_t *shmP=shm-privateData;
  @@ -163,15 +163,42 @@
   if ( shm-fname == NULL ) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
 No name for jk_shm\n);
  -return JK_FALSE;
  +return JK_ERR;
   }
   
  +rv=apr_shm_attach(shmP-aprShm, shm-fname, globalShmPool );
  +if( rv ) {
  +char error[256];
  +apr_strerror( rv, error, 256 );
  +
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): error attaching shm, will create %s %d %p 
%s\n,
  +  shm-fname, rv, globalShmPool, error );
  +shmP-aprShm=NULL;
  +} else {
  +return JK_OK;
  +}
  +
   /* make sure it's an absolute pathname */
   /*  fname = ap_server_root_relative(pconf, ap_scoreboard_fname); */
   
   /* The shared memory file must not exist before we create the
* segment. */
  -apr_file_remove(shm-fname, globalShmPool ); /* ignore errors */
  +rv = apr_file_remove(shm-fname, globalShmPool ); /* ignore errors */
  +if (rv) {
  +char error[256];
  +apr_strerror( rv, error, 256 );
  +
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): error removing shm %s %d %s\n,
  +  shm-fname, rv, error );
  +shmP-aprShm=NULL;
  +return rv;
  +} else {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.create(): file removed ok\n);
  +}
  +
   
   rv = apr_shm_create(shmP-aprShm, shmP-size, shm-fname, globalShmPool);
   
  @@ -180,7 +207,8 @@
   apr_strerror( rv, error, 256 );
   
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  shm.create(): error creating named scoreboard %s %d %s\n,
  +  shm.create(): error creating shm %d %s %d %s\n,
  +  shmP-size, 
 shm-fname, rv, error );
   shmP-aprShm=NULL;
   return rv;
  @@ -225,14 +253,14 @@
   char error[256];
   apr_strerror( rv, error, 256 );
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  Unable to attach to %s %d %s\n, shm-fname, rv, error);
  +  Unable to attach  %s %d %s\n, shm-fname, rv, error);
   }
   
   rv=jk2_shm_create( env, shm );
   
   if( rv || shmP-aprShm==NULL ) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  Unable to create to %s %d\n, shm-fname, rv);
  +  Unable to create %s %d\n, shm-fname, rv);
   return JK_FALSE;
   }
   
  @@ -246,6 +274,11 @@
   }
   
   memset(shmP-image, 0, shmP-size);
  +strcpy(shmP-image, Hello From Apache);
  +
  +env-l-jkLog(env, env-l, JK_LOG_INFO, 
  +  shm.init() Initalized %s %p\n,
  +  shm-fname, shmP-image);
   
   return JK_TRUE;
   }
  
  
  

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-17 Thread costin

costin  02/04/17 15:52:14

  Modified:jk/native2/common jk_shm.c
  Log:
  More work on the shm object.
  
  Revision  ChangesPath
  1.4   +85 -26jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_shm.c  12 Apr 2002 22:53:56 -  1.3
  +++ jk_shm.c  17 Apr 2002 22:52:14 -  1.4
  @@ -89,6 +89,9 @@
   
   #include apr_shm.h
   
  +/* Inter-process synchronization - to create the slots */
  +#include apr_proc_mutex.h
  +
   struct jk_shm_buffer {
   /** Incremented after each modification */
   int generation;
  @@ -120,52 +123,42 @@
   typedef struct jk_shm_private {
   apr_size_t size;
   apr_shm_t *aprShm;
  -apr_pool_t *aprPool;
   
   struct jk_shm_head *image;
   } jk_shm_private_t;
   
   static apr_pool_t *globalShmPool;
   
  -static int jk_shm_destroy(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_destroy(jk_env_t *env, jk_shm_t *shm)
   {
   jk_shm_private_t *shmP=shm-privateData;
   
   return apr_shm_destroy(shmP-aprShm);
   }
   
  -static int jk_shm_detach(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_detach(jk_env_t *env, jk_shm_t *shm)
   {
   jk_shm_private_t *shmP=shm-privateData;
   
   return apr_shm_detach(shmP-aprShm);
   }
   
  -static int jk_shm_attach(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_attach(jk_env_t *env, jk_shm_t *shm)
   {
  +jk_shm_private_t *shmP=shm-privateData;
   
  +return apr_shm_attach(shmP-aprShm, shm-fname, globalShmPool );
   }
   
   
   /* Create or reinit an existing scoreboard. The MPM can control whether
* the scoreboard is shared across multiple processes or not
*/
  -static int jk_shm_createScoreboard(jk_env_t *env, jk_shm_t *shm)
  +static int jk2_shm_create(jk_env_t *env, jk_shm_t *shm)
   {
   apr_status_t rv;
   jk_shm_private_t *shmP=shm-privateData;
   
  -/* We don't want to have to recreate the scoreboard after
  - * restarts, so we'll create a global pool and never clean it.
  - */
  -rv = apr_pool_create(globalShmPool, NULL);
  -
  -if (rv != APR_SUCCESS) {
  -env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  Unable to create global pool for jk_shm\n);
  -return rv;
  -}
  -
   /* The config says to create a name-based shmem */
   if ( shm-fname == NULL ) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  @@ -183,12 +176,67 @@
   rv = apr_shm_create(shmP-aprShm, shmP-size, shm-fname, globalShmPool);
   
   if (rv) {
  +char error[256];
  +apr_strerror( rv, error, 256 );
  +
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  -  shm.create(): error creating named scoreboard %s %d\n,
  -  shm-fname, rv);
  +  shm.create(): error creating named scoreboard %s %d %s\n,
  +  shm-fname, rv, error );
  +shmP-aprShm=NULL;
   return rv;
   }
   
  +return JK_OK;
  +}
  +
  +#define DEFAULT_SHM_SIZE 1024 * 1024 * 8
  +
  +static int  jk2_shm_init(struct jk_env *env, jk_shm_t *shm) {
  +apr_status_t rv;
  +jk_shm_private_t *shmP=shm-privateData;
  +
  +if( shm-fname==NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  shm.init(): No file\n);
  +return JK_FALSE;
  +}
  +
  +if( shmP-size == 0  ) {
  +shmP-size = DEFAULT_SHM_SIZE;
  +}
  +
  +/* We don't want to have to recreate the scoreboard after
  + * restarts, so we'll create a global pool and never clean it.
  + */
  +rv = apr_pool_create(globalShmPool, NULL);
  +
  +if (rv != APR_SUCCESS) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  Unable to create global pool for jk_shm\n);
  +return rv;
  +}
  +
  +shmP-aprShm=NULL;
  +
  +/* Try to attach */
  +rv=jk2_shm_attach( env, shm );
  +
  +if( rv || shmP-aprShm==NULL ) {
  +char error[256];
  +apr_strerror( rv, error, 256 );
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  Unable to attach to %s %d %s\n, shm-fname, rv, error);
  +}
  +
  +rv=jk2_shm_create( env, shm );
  +
  +if( rv || shmP-aprShm==NULL ) {
  +env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  +  Unable to create to %s %d\n, shm-fname, rv);
  +return JK_FALSE;
  +}
  +
  +/* Get the base address, initialize it */
   shmP-image = apr_shm_baseaddr_get( shmP-aprShm);
   if( shmP-image==NULL ) {
   env-l-jkLog(env, env-l, JK_LOG_ERROR, 
  @@ -202,30 +250,41 @@
   return JK_TRUE;
   }
   
  -static int  jk2_shm_init(struct jk_env *env, jk_shm_t *shm) {
  -

cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_shm.c

2002-04-10 Thread costin

costin  02/04/10 16:44:56

  Modified:jk/native2/common jk_shm.c
  Added:   jk/native2/include jk_shm.h
  Log:
  A bit more code in the shm area.
  
  Revision  ChangesPath
  1.1  jakarta-tomcat-connectors/jk/native2/include/jk_shm.h
  
  Index: jk_shm.h
  ===
  /* = *
   *   *
   * The Apache Software License,  Version 1.1 *
   *   *
   *  Copyright (c) 1999-2001 The Apache Software Foundation.  *
   *   All rights reserved.*
   *   *
   * = *
   *   *
   * Redistribution and use in source and binary forms,  with or without modi- *
   * fication, are permitted provided that the following conditions are met:   *
   *   *
   * 1. Redistributions of source code  must retain the above copyright notice *
   *notice, this list of conditions and the following disclaimer.  *
   *   *
   * 2. Redistributions  in binary  form  must  reproduce the  above copyright *
   *notice,  this list of conditions  and the following  disclaimer in the *
   *documentation and/or other materials provided with the distribution.   *
   *   *
   * 3. The end-user documentation  included with the redistribution,  if any, *
   *must include the following acknowlegement: *
   *   *
   *   This product includes  software developed  by the Apache  Software *
   *Foundation http://www.apache.org/.  *
   *   *
   *Alternately, this acknowlegement may appear in the software itself, if *
   *and wherever such third-party acknowlegements normally appear. *
   *   *
   * 4. The names  The  Jakarta  Project,  Jk,  and  Apache  Software *
   *Foundation  must not be used  to endorse or promote  products derived *
   *from this  software without  prior  written  permission.  For  written *
   *permission, please contact [EMAIL PROTECTED].*
   *   *
   * 5. Products derived from this software may not be called Apache nor may *
   *Apache appear in their names without prior written permission of the *
   *Apache Software Foundation.*
   *   *
   * THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES *
   * INCLUDING, BUT NOT LIMITED TO,  THE IMPLIED WARRANTIES OF MERCHANTABILITY *
   * AND FITNESS FOR  A PARTICULAR PURPOSE  ARE DISCLAIMED.  IN NO EVENT SHALL *
   * THE APACHE  SOFTWARE  FOUNDATION OR  ITS CONTRIBUTORS  BE LIABLE  FOR ANY *
   * DIRECT,  INDIRECT,   INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL *
   * DAMAGES (INCLUDING,  BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE GOODS *
   * OR SERVICES;  LOSS OF USE,  DATA,  OR PROFITS;  OR BUSINESS INTERRUPTION) *
   * HOWEVER CAUSED AND  ON ANY  THEORY  OF  LIABILITY,  WHETHER IN  CONTRACT, *
   * STRICT LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
   * ANY  WAY  OUT OF  THE  USE OF  THIS  SOFTWARE,  EVEN  IF  ADVISED  OF THE *
   * POSSIBILITY OF SUCH DAMAGE.   *
   *   *
   * = *
   *   *
   * This software  consists of voluntary  contributions made  by many indivi- *
   * duals on behalf of the  Apache Software Foundation.  For more information *
   * on the Apache Software Foundation, please see http://www.apache.org/.   *
   *   *
   * = */
  
  #ifndef JK_SHM_H
  #define JK_SHM_H
  
  #include jk_global.h
  #include jk_env.h
  #include jk_logger.h
  #include