Changeset 850


Ignore:
Timestamp:
Aug 29, 2017, 10:52:39 AM (5 years ago)
Author:
djay
Message:

Fix various memory leaks and enhance the callback support. Add the prohibited keyword to the callback section to avoid calling callback for such services.

Location:
branches/prototype-v0/zoo-project/zoo-kernel
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/prototype-v0/zoo-project/zoo-kernel/main_conf_read.y

    r839 r850  
    8787 ;
    8888
    89 pair: PAIR {curr_key=zStrdup($1);}
     89pair: PAIR {if(curr_key!=NULL) free(curr_key);curr_key=zStrdup($1);}
    9090| EPAIR {
    9191  if(current_content==NULL)
     
    101101  curr_key=NULL;
    102102  }
    103 | SPAIR  {curr_key=zStrdup($1);if(debug) printf("SPAIR FOUND !!\n"); }
     103| SPAIR  {if(curr_key!=NULL) free(curr_key);curr_key=zStrdup($1);if(debug) printf("SPAIR FOUND !!\n"); }
    104104 ;
    105105
  • branches/prototype-v0/zoo-project/zoo-kernel/meta_sql.c

    r845 r850  
    144144      if(strlen(tmp)>0)
    145145        if(*ap==NULL){
    146           *ap=createMap(fields[i],tmp);
     146          (*ap)=createMap(fields[i],tmp);
    147147          addToMap(*ap,"fromDb","true");
    148148        }
     
    306306  // Extract metadata
    307307  fillMetadata(conf,&res->metadata,input->GetFieldAsString( 0 ));
     308  res->additional_parameters=NULL;
    308309  fillAdditionalParameters(conf,&res->additional_parameters,input->GetFieldAsString( 0 ));
    309310  res->defaults=NULL;
     
    401402      if(minimal==1){
    402403        OGRFeature::DestroyFeature( poFeature );
     404        cleanFetchSql(conf,0,res);
    403405        return s;
    404406      }
     
    410412      while( (input = inputs->GetNextFeature()) != NULL ){
    411413        elements* in=extractInput(conf,input);
    412         addToElements(&s->inputs,in);
    413         freeElements(&in);
    414         free(in);       
     414        if(in!=NULL){
     415          if(s->inputs==NULL)
     416            s->inputs=dupElements(in);
     417          else
     418            addToElements(&s->inputs,in);
     419          freeElements(&in);
     420          free(in);
     421        }
    415422        OGRFeature::DestroyFeature( input );
    416423      }
     
    424431      while( (output = outputs->GetNextFeature()) != NULL ){
    425432        elements* in=extractOutput(conf,output);
    426         addToElements(&s->outputs,in);
     433        if(s->outputs==NULL)
     434          s->outputs=dupElements(in);
     435        else
     436          addToElements(&s->outputs,in);
    427437        freeElements(&in);
    428438        free(in);
     
    463473    poFeature = res->GetNextFeature();
    464474    while( poFeature != NULL ){
    465       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    466       fflush(stderr);
    467475      service* s=extractServiceFromDb(conf,poFeature->GetFieldAsString( 1 ),minimal);
    468476#ifdef USE_HPC
    469477      addNestedOutputs(&s);
    470478#endif
    471       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    472       fflush(stderr);
    473       dumpMap(s->content);
    474       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    475       fflush(stderr);
    476479      func(reg,conf,doc,n,s);
    477       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    478       fflush(stderr);
    479480      freeService(&s);
    480       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    481       fflush(stderr);
    482481      free(s);
    483482      OGRFeature::DestroyFeature( poFeature );
    484483      poFeature = res->GetNextFeature();
    485484      result++;
    486       fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    487       fflush(stderr);
    488     }
    489   }
    490   fprintf(stderr,"************************* %s %d\n\n",__FILE__,__LINE__);
    491   fflush(stderr);
     485    }
     486    cleanFetchSql(conf,0,res);
     487  }
    492488  return result;
    493489}
  • branches/prototype-v0/zoo-project/zoo-kernel/response_print.c

    r839 r850  
    339339      }
    340340      else{
    341         nc4 = xmlNewNode(ns_ows, BAD_CAST "Language");
    342         xmlAddChild(nc4,xmlNewText(BAD_CAST buff));
    343341        if(dcount==0){
    344342          if(vid==0){
     343            nc4 = xmlNewNode(ns_ows, BAD_CAST "Language");
     344            xmlAddChild(nc4,xmlNewText(BAD_CAST buff));
    345345            xmlAddChild(nc2,nc4);
    346346            xmlAddChild(nc1,nc2);
     
    867867        }
    868868      }else{
    869         xmlNodePtr nc2 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameter");
    870         xmlNodePtr nc3 = xmlNewNode(ns_ows, BAD_CAST "Name");
    871         xmlAddChild(nc3,xmlNewText(BAD_CAST meta->name));
    872         xmlAddChild(nc2,nc3);
    873         if(fromDb<0){
    874           char *mptr;
    875           char* meta_values=strtok_r(meta->value,",",&mptr);
    876           while(meta_values!=NULL){
     869        if(strncasecmp(meta->name,"length",6)!=0 && strncasecmp(meta->name,"fromDb",6)!=0){
     870          xmlNodePtr nc2 = xmlNewNode(ns_ows, BAD_CAST "AdditionalParameter");
     871          xmlNodePtr nc3 = xmlNewNode(ns_ows, BAD_CAST "Name");
     872          xmlAddChild(nc3,xmlNewText(BAD_CAST meta->name));
     873          xmlAddChild(nc2,nc3);
     874          if(fromDb<0){
     875            char *mptr;
     876            char* meta_values=strtok_r(meta->value,",",&mptr);
     877            while(meta_values!=NULL){
     878              xmlNodePtr nc4 = xmlNewNode(ns_ows, BAD_CAST "Value");
     879              xmlAddChild(nc4,xmlNewText(BAD_CAST meta_values));
     880              xmlAddChild(nc2,nc4);
     881              meta_values=strtok_r(NULL,",",&mptr);
     882            }
     883          }else{
    877884            xmlNodePtr nc4 = xmlNewNode(ns_ows, BAD_CAST "Value");
    878             xmlAddChild(nc4,xmlNewText(BAD_CAST meta_values));
     885            xmlAddChild(nc4,xmlNewCDataBlock(doc,BAD_CAST meta->value,strlen(meta->value)));
    879886            xmlAddChild(nc2,nc4);
    880             meta_values=strtok_r(NULL,",",&mptr);
    881           }
    882         }else{
    883           xmlNodePtr nc4 = xmlNewNode(ns_ows, BAD_CAST "Value");
    884           xmlAddChild(nc4,xmlNewCDataBlock(doc,BAD_CAST meta->value,strlen(meta->value)));
    885           xmlAddChild(nc2,nc4);
    886         }
    887         xmlAddChild(nc1,nc2);
     887          }
     888          xmlAddChild(nc1,nc2);
     889        }
    888890        hasTitle=-1;
    889891      }
     
    892894        xmlAddChild(nc,nc1);
    893895        hasValue=1;
    894       }
     896      }else
     897        free(ctitle);
    895898    }
    896899    if(oMeta!=NULL && hasValue<0 && nc1!=NULL){
     
    14041407                }
    14051408                else
    1406                   xmlFree(nc9);
     1409                  xmlFreeNode(nc9);
    14071410                if(strcasecmp(tmp1->name,"uom")==0)
    14081411                  hasUOM1=true;
     
    16011604                  xmlAddChild(nc5,nc6);
    16021605                else
    1603                   xmlFree(nc6);
     1606                  xmlFreeNode(nc6);
    16041607              }
    16051608              else
    1606                 xmlFree(nc6);
     1609                xmlFreeNode(nc6);
    16071610            }
    16081611            tmp1=tmp1->next;
     
    16311634            }
    16321635            else{
     1636              xmlFreeNode(nc4);
    16331637              xmlAddChild(nc3,nc5);
    16341638            }
    16351639          }
    16361640          else
    1637             if(datatype!=1)
     1641            if(datatype!=1){
     1642              xmlFreeNode(nc4);
    16381643              xmlAddChild(nc3,nc5);
     1644            }
    16391645
    16401646        _tmp=_tmp->next;
     
    16541660        }
    16551661        else{
     1662          xmlFreeNode(nc4);
    16561663          xmlAddChild(nc3,nc5);
    16571664        }
     
    16731680    }
    16741681    if(e->child!=NULL && vid==0){
     1682      xmlFreeNode(nc3);
    16751683      elements* children=dupElements(e->child);
    16761684      elements* cursor=children;
     
    16781686        char* tmp=strdup(cursor->name);
    16791687        free(cursor->name);
    1680         cursor->name=(char*)malloc((strlen(cursor->name)+strlen(e->name)+2)*sizeof(char));
     1688        cursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char));
    16811689        sprintf(cursor->name,"%s.%s",e->name,tmp);
    16821690        cursor=cursor->next;
  • branches/prototype-v0/zoo-project/zoo-kernel/server_internal.c

    r839 r850  
    460460        if(cSize!=NULL){
    461461          length=atoi(cSize->value);
    462         }
     462        }else
     463          length=strlen(cValue->value);
    463464        writeFile(val,cValue->value,length);
    464465        addToMap(cMap,"cache_file",val);
  • branches/prototype-v0/zoo-project/zoo-kernel/service.c

    r839 r850  
    417417    if(tmp->format!=NULL)
    418418      free(tmp->format);
     419    freeElements(&tmp->child);
    419420    if(tmp->child!=NULL){
    420       freeElements(&tmp->child);
    421421      free(tmp->child);
    422422    }
     
    453453    if(tmp->metadata!=NULL)
    454454      free(tmp->metadata);
     455    freeMap(&tmp->additional_parameters);
     456    if(tmp->additional_parameters!=NULL)
     457      free(tmp->additional_parameters);
    455458    freeElements(&tmp->inputs);
    456459    if(tmp->inputs!=NULL)
     
    11601163  elements* cursor=e;
    11611164  elements* tmp=NULL;
    1162   if(cursor!=NULL && e->name!=NULL){
     1165  if(cursor!=NULL && cursor->name!=NULL){
    11631166#ifdef DEBUG
    11641167    fprintf(stderr,">> %s %i\n",__FILE__,__LINE__);
     
    11671170#endif
    11681171    tmp=(elements*)malloc(ELEMENTS_SIZE);
    1169     tmp->name=zStrdup(e->name);
     1172    tmp->name=zStrdup(cursor->name);
    11701173    tmp->content=NULL;
    11711174    addMapToMap(&tmp->content,e->content);
     
    12281231  elements* tmp=e;
    12291232  if(*m==NULL){
    1230     *m=dupElements(tmp);
     1233    (*m)=dupElements(tmp);
    12311234  }else{
    12321235    addToElements(&(*m)->next,tmp);
  • branches/prototype-v0/zoo-project/zoo-kernel/service.h

    r839 r850  
    139139 * The memory size to create an elements
    140140 */
    141 #define ELEMENTS_SIZE (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+(((2*sizeof(char*))+sizeof(iotype*))*2)+(2*sizeof(elements*)))
     141#define ELEMENTS_SIZE (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+((sizeof(map*) + sizeof(iotype*))*2)+(2*sizeof(elements*)))
    142142/**
    143143 * The memory size to create a map
  • branches/prototype-v0/zoo-project/zoo-kernel/service_callback.c

    r846 r850  
    3535#endif
    3636
     37  /**
     38   * Check if a service name is prohibited, meaning that we don't have to invoke
     39   * the callback for this specific service.
     40   *
     41   */
     42  bool isProhibited(maps* conf,const char* serviceName){
     43    map* plist=getMapFromMaps(conf,"callback","prohibited");
     44    if(plist!=NULL){
     45      char *tmp=plist->value;
     46      char *tmpS=strtok(tmp,",");
     47      while(tmpS!=NULL){
     48        if(strcmp(serviceName,tmpS)==0)
     49          return true;
     50        tmpS=strtok(NULL,",");
     51      }
     52    }
     53    return false;
     54  }
     55 
    3756  /**
    3857   * Invoke the callback in case there is a [callback] section containing a url parameter
     
    5776    if(url==NULL)
    5877      return false;
    59 
     78     
    6079    maps* lenv=getMaps(m,"lenv");
    61 
     80    map* sname=getMap(lenv->content,"identifier");
     81    if(sname!=NULL && isProhibited(m,sname->value))
     82      return false;
     83     
    6284    json_object *res=json_object_new_object();
    6385
     
    87109      maps* curs=inputs;
    88110     
    89       char *keys[4][2]={
     111      char *keys[8][2]={
    90112        {
    91113          "href",
     
    103125          "size",
    104126          "size"
    105         }
     127        },
     128        {
     129          "ref_wms_link",
     130          "ref_wms_link"
     131        },
     132        {
     133          "ref_wcs_link",
     134          "ref_wcs_link"
     135        },
     136        {
     137          "ref_wfs_link",
     138          "ref_wfs_link"
     139        },
     140        {
     141          "datatype",
     142          "datatype"
     143        }       
    106144      };
    107145      json_object *res1=json_object_new_object();
    108146      while(curs!=NULL){
    109147        map* tmpMap=getMap(curs->content,"cache_file");
    110         if(tmpMap!=NULL){
     148        sid=getMap(curs->content,"ref_wms_link");
     149        if(tmpMap!=NULL && sid==NULL){
    111150          addToMap(curs->content,"generated_file",tmpMap->value);
    112151          tmpMap=getMap(curs->content,"fmimeType");
     
    121160        int i=0;
    122161        int hasRef=-1;
    123         for(;i<4;i++){
     162        for(;i<8;i++){
    124163          sid=getMap(curs->content,keys[i][0]);
    125164          if(sid!=NULL){
  • branches/prototype-v0/zoo-project/zoo-kernel/service_internal_hpc.c

    r846 r850  
    8080          }
    8181          free(tmp[i]->name);
     82          if(tmp[i]->format!=NULL)
     83            free(tmp[i]->format);
    8284          tmp[i]->format=zStrdup("ComplexData");
    8385          freeMap(&tmp[i]->content);
     
    160162    cur=cur->next;
    161163  }
     164  //dumpElements((*s)->outputs);
    162165}
    163166
     
    351354  }
    352355 
    353   fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    354   fflush(stderr);
    355   invokeCallback(m,inputs,NULL,3,0);
    356   fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    357   fflush(stderr);
    358 
    359356  // Produce the SBATCH File locally
    360357  char *scriptPath=(char*)malloc((strlen(s->name)+strlen(tmpPath->value)+strlen(uuid->value)+10)*sizeof(char));
     
    489486      setMapInMaps(*main_conf,"lenv","message",_("Unable to fetch the remote error log file"));
    490487    tmpPath=getMapFromMaps(*main_conf,"lenv","message");
     488    fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     489    fflush(stderr);
    491490    invokeCallback(m,NULL,NULL,7,1);
     491    fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     492    fflush(stderr);
    492493    sprintf(tmpS, "Cannot execute the HPC ZOO-Service %s: %s", s->name, tmpPath->value);
    493494    errorException(m,tmpS,"NoApplicableCode",NULL);
     
    533534        sleep(1);
    534535        setMapInMaps(*main_conf,"lenv","message",_("Read closed"));
     536        invokeCallback(m,NULL,NULL,7,1);
    535537        return -1;
    536538      }else{
    537539        if(rc<0){
    538540          setMapInMaps(*main_conf,"lenv","message",_("Read error"));
     541          invokeCallback(m,NULL,NULL,7,1);
    539542          return -1;
    540543        }
     
    543546      res=atoi(buf);
    544547      unlink(sname);
    545       //free(sname); 
     548      //free(sname);
    546549
    547550      if(res==3){
     
    597600          input=input->next;
    598601        }
     602        fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     603        fflush(stderr);
     604        invokeCallback(m,NULL,outputs,5,1);
     605        fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     606        fflush(stderr);
    599607      }
    600608      //free(buf);
     
    607615    }
    608616  }
     617  fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     618  fflush(stderr);
    609619  ssh_close(*main_conf);
     620  fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     621  fflush(stderr);
    610622  return res;
    611623}
  • branches/prototype-v0/zoo-project/zoo-kernel/service_internal_ms.c

    r839 r850  
    194194
    195195  char* webService_url=(char*)malloc((strlen(msUrl->value)+strlen(format->value)+strlen(tmpI->name)+strlen(width->value)+strlen(height->value)+strlen(extent->value)+256)*sizeof(char));
    196 
     196  map* datatype=getMap(tmpI->content,"datatype");
     197 
     198  sprintf(webService_url,
     199          "%s?map=%s/%s_%s.map&request=%s&service=%s&version=%s&%s&format=%s&bbox=%s&crs=%s",
     200          msUrl->value,
     201          dataPath->value,
     202          tmpI->name,
     203          sid->value,
     204          options[proto][2],
     205          options[proto][0],
     206          protoVersion,
     207          layers,
     208          rformat->value,
     209          extent->value,
     210          crs->value
     211          );
    197212  if(proto>0){
    198     sprintf(webService_url,
    199             "%s?map=%s/%s_%s.map&request=%s&service=%s&version=%s&%s&format=%s&bbox=%s&crs=%s",
    200             msUrl->value,
    201             dataPath->value,
    202             tmpI->name,
    203             sid->value,
    204             options[proto][2],
    205             options[proto][0],
    206             protoVersion,
    207             layers,
    208             rformat->value,
    209             extent->value,
    210             crs->value
    211             );
     213    addToMap(tmpI->content,"Reference",webService_url);
     214    proto=0;
     215    rformat=createMap("mimeType","image/png");
    212216  }
    213217  else{
    214     sprintf(webService_url,
    215             "%s?map=%s/%s_%s.map&request=%s&service=%s&version=%s&%s&width=%s&height=%s&format=%s&bbox=%s&crs=%s",
    216             msUrl->value,
    217             dataPath->value,
    218             tmpI->name,
    219             sid->value,
    220             options[proto][2],
    221             options[proto][0],
    222             protoVersion,
    223             layers,
    224             width->value,
    225             height->value,
    226             rformat->value,
    227             extent->value,
    228             crs->value
    229             );
    230   }
     218    if(datatype!=NULL && strncasecmp(datatype->value,"raster",6)==0){
     219      proto=2;
     220      rformat=createMap("mimeType","image/tiff");
     221    }
     222    else{
     223      proto=1;
     224      rformat=createMap("mimeType","text/xml");
     225    }
     226  }
     227  if(datatype!=NULL && strncasecmp(datatype->value,"raster",6)==0){
     228    addToMap(tmpI->content,"ref_wcs_link",webService_url);
     229  }
     230  else{
     231    addToMap(tmpI->content,"ref_wfs_link",webService_url);
     232  }
     233  protoVersion=options[proto][1];
     234  extent=getMap(tmpI->content,options[proto][4]);
     235  memset(webService_url,0,strlen(webService_url));
     236  sprintf(webService_url,
     237          "%s?map=%s/%s_%s.map&request=%s&service=%s&version=%s&%s&width=%s&height=%s&format=%s&bbox=%s&crs=%s",
     238          msUrl->value,
     239          dataPath->value,
     240          tmpI->name,
     241          sid->value,
     242          options[proto][2],
     243          options[proto][0],
     244          protoVersion,
     245          layers,
     246          width->value,
     247          height->value,
     248          rformat->value,
     249          extent->value,
     250          crs->value
     251          );
     252  if(proto>0){
     253    addToMap(tmpI->content,"Reference",webService_url);
     254  }
     255  addToMap(tmpI->content,"ref_wms_link",webService_url);
    231256  if(hasCRS==0){
    232257    freeMap(&crs);
    233258    free(crs);
    234259  }
    235   addToMap(tmpI->content,"Reference",webService_url);
    236260  free(webService_url);
    237261}
     
    531555  free(sdsName);
    532556  free(dsName);
    533 
     557 
    534558  OGRDataSourceH poDS = NULL;
    535559  OGRSFDriverH *poDriver = NULL;
     
    548572  }
    549573
     574  addToMap(output->content,"datatype","vector");
    550575  int iLayer = 0;
    551576  for( iLayer=0; iLayer < OGR_DS_GetLayerCount(poDS); iLayer++ ){
     
    757782#endif
    758783
     784  addToMap(output->content,"datatype","raster");
    759785  /**
    760786   * Add a new layer set name, data
  • branches/prototype-v0/zoo-project/zoo-kernel/sqlapi.c

    r839 r850  
    396396char* _getStatus(maps* conf,char* pid){
    397397  int zoo_ds_nb=getCurrentId(conf);
     398  int created=-1;
    398399  map *schema=getMapFromMaps(conf,"database","schema");
    399400  char *sqlQuery=(char*)malloc((strlen(schema->value)+strlen(pid)+58+1)*sizeof(char));
     
    408409    init_sql(conf);
    409410    zoo_ds_nb++;
     411    created=1;
    410412  }
    411413  execSql(conf,zoo_ds_nb-1,sqlQuery);
  • branches/prototype-v0/zoo-project/zoo-kernel/ulinet.c

    r846 r850  
    286286          int length=strlen(token)+6;
    287287          char* tmp1=(char*)malloc(length*sizeof(char));
     288          map* tmpMap;
    288289          snprintf(tmp1,6,"HTTP_");
    289290          int j;
     
    296297          }
    297298          fprintf(stderr,"%s %d %s \n",__FILE__,__LINE__,tmp1);
    298           map* tmpMap = getMapFromMaps(conf,"renv",tmp1);
    299           if(tmpMap!=NULL)         
    300             AddMissingHeaderEntry(&handle->ihandle[i],token,tmpMap->value);
     299          if(strncmp(tmp1,"HTTP_COOKIE",11)!=0){           
     300            tmpMap = getMapFromMaps(conf,"renv",tmp1);
     301            if(tmpMap!=NULL)
     302              AddMissingHeaderEntry(&handle->ihandle[i],token,tmpMap->value);
     303          }
    301304          free(tmp1);
    302305          if(handle->ihandle[i].header!=NULL)
  • branches/prototype-v0/zoo-project/zoo-kernel/zoo_service_loader.c

    r839 r850  
    304304      {
    305305        char* extn = strstr(dp->d_name, ".zcfg");
    306         if(dp->d_name[0] != '.' && extn != NULL && strlen(extn) == 5)
     306        if(dp->d_name[0] != '.' && extn != NULL && strlen(extn) == 5 && strlen(dp->d_name)>6)
    307307          {
    308308            int t;
     
    311311            snprintf (tmps1, 1024, "%s/%s", conf_dir, dp->d_name);
    312312
    313             char *tmpsn = zStrdup (dp->d_name);
    314             tmpsn[strlen (tmpsn) - 5] = 0;
     313            char *tmpsn = (char*)malloc((strlen(dp->d_name)-4)*sizeof(char));//zStrdup (dp->d_name);
     314            memset (tmpsn, 0, strlen(dp->d_name)-4);
     315            snprintf(tmpsn,strlen(dp->d_name)-4,"%s",dp->d_name);
    315316           
    316317            map* import = getMapFromMaps (m, IMPORTSERVICE, tmpsn);
     
    11811182  };
    11821183  r_inputs = getMap (request_inputs, "Request");
    1183   REQUEST = zStrdup (r_inputs->value);
     1184  fprintf(stderr," ** DEBUG %s %d \n",__FILE__,__LINE__);
     1185  fflush(stderr);
     1186  dumpMap(r_inputs);
     1187  fprintf(stderr," ** DEBUG %s %d \n",__FILE__,__LINE__);
     1188  fflush(stderr);
     1189  if(r_inputs!=NULL)
     1190    REQUEST = zStrdup (r_inputs->value);
     1191  fprintf(stderr," ** DEBUG %s %d \n",__FILE__,__LINE__);
     1192  fflush(stderr);
    11841193  int reqId=-1;
    11851194  if (strncasecmp (REQUEST, "GetCapabilities", 15) != 0){
     
    11881197    for(j=0;j<nbSupportedRequests;j++){
    11891198      if(requests[vid][j]!=NULL && requests[vid][j+1]!=NULL){
    1190         if(j<nbReqIdentifier && strncasecmp(REQUEST,requests[vid][j+1],strlen(REQUEST))==0){
     1199        if(j<nbReqIdentifier && strncasecmp(REQUEST,requests[vid][j+1],strlen(requests[vid][j+1]))==0){
    11911200          checkValidValue(request_inputs,&err,"identifier",NULL,1);
    11921201          reqId=j+1;
     
    11951204        else
    11961205          if(j>=nbReqIdentifier && j<nbReqIdentifier+nbReqJob &&
    1197              strncasecmp(REQUEST,requests[vid][j+1],strlen(REQUEST))==0){
     1206             strncasecmp(REQUEST,requests[vid][j+1],strlen(requests[vid][j+1]))==0){
    11981207            checkValidValue(request_inputs,&err,"jobid",NULL,1);
    11991208            reqId=j+1;
     
    13581367      r_inputs = getMap (request_inputs, "JobId");
    13591368      if(reqId>nbReqIdentifier){
    1360         if (strncasecmp (REQUEST, "GetStatus", strlen(REQUEST)) == 0 ||
    1361             strncasecmp (REQUEST, "GetResult", strlen(REQUEST)) == 0){
     1369        if (strncasecmp (REQUEST, "GetStatus", 9) == 0 ||
     1370            strncasecmp (REQUEST, "GetResult", 9) == 0){
    13621371          runGetStatus(m,r_inputs->value,REQUEST);
     1372#ifdef RELY_ON_DB
     1373          map* dsNb=getMapFromMaps(m,"lenv","ds_nb");
     1374          if(dsNb!=NULL && atoi(dsNb->value)>1)
     1375            close_sql(m,1);
     1376          close_sql(m,0);
     1377#endif
     1378         
    13631379          freeMaps (&m);
    13641380          free(m);
     
    21602176    addToMap (_tmpMaps->content, "soap", "false");
    21612177
    2162   // Parse the session file and add it to the main maps
     2178  // Parse the session file and add it to the main maps
     2179  char* originalCookie=NULL;
    21632180  if (cgiCookie != NULL && strlen (cgiCookie) > 0)
    21642181    {
     
    22522269  _tmpMaps = createMaps("renv");
    22532270  for (; s; ei++) {
     2271    int len=strlen(s);
    22542272    char* tmpName=zStrdup(s);
    22552273    char* tmpValue=strstr(s,"=")+1;
    2256     char* tmpName1=(char*)malloc((1+(strlen(tmpName)-strlen(tmpValue)))*sizeof(char));
    2257     snprintf(tmpName1,(strlen(tmpName)-strlen(tmpValue)),"%s",tmpName);
     2274    char* tmpName1=(char*)malloc((1+(len-strlen(tmpValue)))*sizeof(char));
     2275    snprintf(tmpName1,(len-strlen(tmpValue))+1,"%s",tmpName);
    22582276    if(_tmpMaps->content == NULL)
    22592277      _tmpMaps->content = createMap (tmpName1,tmpValue);
     
    22632281    free(tmpName1);
    22642282    s = *(orig+ei);
     2283  }
     2284  if(_tmpMaps->content!=NULL && getMap(_tmpMaps->content,"HTTP_COOKIE")!=NULL){
     2285    /*map* tmpMap1=getMap(_tmpMaps->content,"HTTP_COOKIE");
     2286    free(tmpMap1->value);
     2287    tmpMap1->value=zStrdup(cgiCookie);*/
     2288    fprintf(stderr,"[%s]\n",cgiCookie);
     2289    addToMap(_tmpMaps->content,"HTTP_COOKIE1",&cgiCookie[0]);
     2290    dumpMap(_tmpMaps->content);
    22652291  }
    22662292  addMapsToMaps (&m, _tmpMaps);
     
    22922318  }
    22932319#endif
    2294   fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    2295   invokeCallback(m,NULL,NULL,0,0);
    2296   fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    22972320
    22982321  char *fbkp, *fbkpid, *fbkpres, *fbkp1, *flog;
     
    24462469          recordServiceStatus(m);
    24472470#endif
     2471          fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     2472          invokeCallback(m,NULL,NULL,0,0);
     2473          fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    24482474          if(vid==0){
    24492475            /**
     
    25132539            return -1;
    25142540          }
     2541          fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
     2542          invokeCallback(m,request_input_real_format,NULL,1,1);
     2543          fprintf(stderr,"************************* %s %d \n\n",__FILE__,__LINE__);
    25152544          setMapInMaps(m,"lenv","ds_nb","1");
    25162545          loadServiceAndRun (&m, s1, request_inputs,
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png