Changeset 652 for trunk/zoo-project/zoo-kernel/zoo_service_loader.c
- Timestamp:
- Jun 11, 2015, 3:07:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/zoo-project/zoo-kernel/zoo_service_loader.c
r640 r652 1669 1669 } 1670 1670 1671 1672 // Define each env variable in runing environment 1671 1673 maps *curs = getMaps (m, "env"); 1672 1674 if (curs != NULL) … … 1728 1730 #endif 1729 1731 1730 /** 1731 * Need to check if we need to fork to load a status enabled 1732 */ 1732 // Need to check if we need to fork to load a status enabled 1733 1733 r_inputs = NULL; 1734 1734 map *store = getMap (request_inputs, "storeExecuteResponse"); … … 1787 1787 _tmpMaps->name = zStrdup ("lenv"); 1788 1788 char tmpBuff[100]; 1789 semid lid = getShmLockId (NULL, 1);1790 lockShm (lid);1791 1789 struct ztimeval tp; 1792 1790 if (zGettimeofday (&tp, NULL) == 0) … … 1794 1792 else 1795 1793 sprintf (tmpBuff, "%i", (cpid + (int) time (NULL))); 1796 unlockShm (lid); 1797 removeShmLock (NULL, 1); 1798 _tmpMaps->content = createMap ("usid", tmpBuff); 1794 _tmpMaps->content = createMap ("osid", tmpBuff); 1799 1795 _tmpMaps->next = NULL; 1800 1796 sprintf (tmpBuff, "%i", cpid); … … 1802 1798 char* tmpUuid=get_uuid(); 1803 1799 addToMap (_tmpMaps->content, "uusid", tmpUuid); 1800 addToMap (_tmpMaps->content, "usid", tmpUuid); 1804 1801 free(tmpUuid); 1805 1802 addToMap (_tmpMaps->content, "status", "0"); … … 1910 1907 } 1911 1908 #endif 1912 char *fbkp, *fbkp 1;1909 char *fbkp, *fbkpid, *fbkp1, *flog; 1913 1910 FILE *f0, *f1; 1914 1911 if (status != NULL) … … 1977 1974 * process answer to http client. 1978 1975 */ 1979 #ifndef WIN32 1980 zSleep (1); 1981 #endif 1982 r_inputs = getMapFromMaps (m, "lenv", "usid"); 1976 map* usid = getMapFromMaps (m, "lenv", "uusid"); 1977 r_inputs = getMapFromMaps (m, "lenv", "osid"); 1983 1978 int cpid = atoi (r_inputs->value); 1984 1979 r_inputs = getMapFromMaps (m, "main", "tmpPath"); 1985 //map *r_inputs1 = getMap (s1->content, "ServiceProvider"); 1986 map* r_inputs1 = createMap("ServiceName", s1->name); 1987 1980 map* r_inputs1 = createMap("ServiceName", s1->name); 1981 1982 // Create PID file referencing the OS process identifier 1983 fbkpid = 1984 (char *) 1985 malloc ((strlen (r_inputs->value) + 1986 strlen (usid->value) + 7) * sizeof (char)); 1987 sprintf (fbkpid, "%s/%s.pid", r_inputs->value, usid->value); 1988 1989 f0 = freopen (fbkpid, "w+", stdout); 1990 fprintf(stdout,"%d",getpid()); 1991 fflush(stdout); 1992 1993 // Create SID file referencing the semaphore name 1988 1994 fbkp = 1989 1995 (char *) 1990 1996 malloc ((strlen (r_inputs->value) + strlen (r_inputs1->value) + 1991 1024) * sizeof (char)); 1992 sprintf (fbkp, "%s/%s_%d.xml", r_inputs->value, r_inputs1->value, 1993 cpid); 1994 char *flog = 1997 strlen (usid->value) + 7) * sizeof (char)); 1998 sprintf (fbkp, "%s/%s.sid", r_inputs->value, usid->value); 1999 2000 FILE* f2 = fopen (fbkp, "w+"); 2001 map* tmpm=getMapFromMaps (m, "lenv", "osid"); 2002 fprintf(f2,"%s",tmpm->value); 2003 fflush(f2); 2004 fclose(f2); 2005 free(fbkp); 2006 2007 fbkp = 1995 2008 (char *) 1996 2009 malloc ((strlen (r_inputs->value) + strlen (r_inputs1->value) + 1997 1024) * sizeof (char)); 1998 sprintf (flog, "%s/%s_%d_error.log", r_inputs->value, 1999 r_inputs1->value, cpid); 2010 strlen (usid->value) + 7) * sizeof (char)); 2011 sprintf (fbkp, "%s/%s_%s.xml", r_inputs->value, r_inputs1->value, 2012 usid->value); 2013 flog = 2014 (char *) 2015 malloc ((strlen (r_inputs->value) + strlen (r_inputs1->value) + 2016 strlen (usid->value) + 13) * sizeof (char)); 2017 sprintf (flog, "%s/%s_%s_error.log", r_inputs->value, 2018 r_inputs1->value, usid->value); 2000 2019 #ifdef DEBUG 2001 2020 fprintf (stderr, "RUN IN BACKGROUND MODE \n"); … … 2005 2024 #endif 2006 2025 freopen (flog, "w+", stderr); 2007 semid lid = getShmLockId (m, 1);2008 2026 fflush (stderr); 2009 if (lid < 0)2010 {2011 return errorException (m, _("Lock failed"),2012 "InternalError", NULL);2013 }2014 else2015 {2016 if (lockShm (lid) < 0)2017 {2018 return errorException (m, _("Lock failed"),2019 "InternalError", NULL);2020 }2021 }2022 2027 f0 = freopen (fbkp, "w+", stdout); 2023 2028 rewind (stdout); … … 2036 2041 request_output_real_format); 2037 2042 fflush (stdout); 2038 unlockShm (lid); 2043 #ifdef RELY_ON_DB 2044 init_sql(m); 2045 recordServiceStatus(m); 2046 recordResponse(m,fbkp); 2047 #endif 2039 2048 fflush (stderr); 2040 2049 fbkp1 = 2041 2050 (char *) 2042 2051 malloc ((strlen (r_inputs->value) + strlen (r_inputs1->value) + 2043 1024) * sizeof (char));2044 sprintf (fbkp1, "%s/%s_final_% d.xml", r_inputs->value,2045 r_inputs1->value, cpid);2052 strlen (usid->value) + 13) * sizeof (char)); 2053 sprintf (fbkp1, "%s/%s_final_%s.xml", r_inputs->value, 2054 r_inputs1->value, usid->value); 2046 2055 2047 2056 f1 = freopen (fbkp1, "w+", stdout); 2048 free (flog);2049 2057 2050 2058 if(validateRequest(&m,s1,request_inputs, &request_input_real_format,&request_output_real_format,&hInternet)<0){ … … 2062 2070 free (tmpmaps); 2063 2071 fflush (stdout); 2064 unlockShm (lid);2065 2072 fflush (stderr); 2073 unhandleStatus (m); 2066 2074 return -1; 2067 2075 } … … 2073 2081 else 2074 2082 { 2075 2076 2077 2078 2083 /** 2084 * error server don't accept the process need to output a valid 2085 * error response here !!! 2086 */ 2079 2087 eres = -1; 2080 2088 errorException (m, _("Unable to run the child process properly"), … … 2109 2117 fclose (stdout); 2110 2118 fclose (stderr); 2111 /**2112 * Dump back the final file fbkp1 to fbkp2113 */2119 /** 2120 * Dump back the final file fbkp1 to fbkp 2121 */ 2114 2122 fclose (f0); 2115 2123 fclose (f1); 2116 2124 FILE *f2 = fopen (fbkp1, "rb"); 2125 #ifndef RELY_ON_DB 2117 2126 semid lid = getShmLockId (m, 1); 2118 2127 if (lid < 0) 2119 2128 return -1; 2120 2129 lockShm (lid); 2130 #endif 2121 2131 FILE *f3 = fopen (fbkp, "wb+"); 2122 2132 free (fbkp); … … 2129 2139 fclose (f2); 2130 2140 fclose (f3); 2131 unlockShm (lid); 2141 unlink (fbkpid); 2142 #ifndef RELY_ON_DB 2143 removeShmLock (m, 1); 2144 #else 2145 recordResponse(m,fbkp1); 2146 #endif 2132 2147 unlink (fbkp1); 2148 unlink (flog); 2149 unhandleStatus (m); 2150 free(fbkpid); 2151 free (flog); 2133 2152 free (fbkp1); 2134 2153 free (tmps1); 2135 unhandleStatus (m);2136 2154 } 2137 2155
Note: See TracChangeset
for help on using the changeset viewer.