diff options
author | tenox <as@tenoware.com> | 2016-08-18 00:27:11 -0700 |
---|---|---|
committer | tenox <as@tenoware.com> | 2016-08-18 00:27:11 -0700 |
commit | 374af96b209b39ec5578e5fe8caffc655acf8ad1 (patch) | |
tree | 5295f3c0c0e7230dc224889a574b22b054eee450 /cgic.c | |
parent | d104daea0969f5b3c9b55c769193da6d8ea99de1 (diff) | |
download | wfm-374af96b209b39ec5578e5fe8caffc655acf8ad1.tar.gz |
small fixes for SHM and upload status
Diffstat (limited to 'cgic.c')
-rw-r--r-- | cgic.c | 17 |
1 files changed, 8 insertions, 9 deletions
@@ -69,9 +69,9 @@ char *cgiAccept; char *cgiUserAgent; char *cgiReferrer; -char *shm_addr='\0'; -int shm_key=0; -int shm_id=0; +char *shm_addr=NULL; +int shm_key=-1; +int shm_id=-1; #define SHM_SIZE 16 @@ -129,7 +129,7 @@ static int cgiStrBeginsNc(char *s1, char *s2); /* Dirty little hack to get file upload progress - Part 4: SHM Cleanup */ void shmcleanup(void) { - if(shm_id) + if(shm_id>=0) shmctl(shm_id, IPC_RMID, NULL); } @@ -537,12 +537,11 @@ static cgiParseResultType cgiParsePostMultipartInput() { } outf = fopen(tfileName, "w+b"); /* Dirty little hack to get file upload progress - Part 1: Initialize */ - if (cgiFormInteger("upload_id", &shm_key, 0) == cgiFormSuccess && shm_key) { - if ((shm_id = shmget(shm_key, 16, IPC_CREAT | 0666)) > 0) { + if (cgiFormInteger("upload_id", &shm_key, -1) == cgiFormSuccess && shm_key) { + if ((shm_id = shmget(shm_key, 16, IPC_CREAT | 0666)) >= 0) { for(sig=1; sig<=31; sig++) signal(sig, (void*)shmcleanup); - if ((shm_addr = shmat(shm_id, NULL, 0)) > 0) - *shm_addr='\0'; + shm_addr = shmat(shm_id, NULL, 0); } } } else { @@ -553,7 +552,7 @@ static cgiParseResultType cgiParsePostMultipartInput() { /* Dirty little hack to get file upload progress - Part 2: Clean up */ if(shm_addr) shmdt(shm_addr); - if(shm_id) + if(shm_id>=0) shmctl(shm_id, IPC_RMID, NULL); if (result != cgiParseSuccess) { /* Lack of a boundary here is an error. */ |