void stor_fwrite_req_free(struct _stor_fwrite_req *ptr){ if(ptr->data != NULL){ osapi_free(ptr->data); ptr->data = NULL; ptr->data_len = 0; } osapi_free(ptr); }
void stor_fread_rsp_free(struct _stor_fread_rsp *ptr){ if(ptr->data != NULL){ osapi_free(ptr->data); ptr->data = NULL; ptr->data_len = 0; } osapi_free(ptr); }
void stor_fmoveto_req_free(struct _stor_fmoveto_req *ptr){ if(ptr->fname != NULL){ osapi_free(ptr->fname); ptr->fname = NULL; } osapi_free(ptr); }
void fixbuffer_free(fixbuffer_t *fb){ if(fb == NULL) return ; if(fb->buffer != NULL){ osapi_free(fb->buffer); fb->buffer = NULL; } osapi_free(fb); }
int stor_fmoveto_req_unmash(void *ptr, cmp_reader reader, cmp_writer writer, struct _stor_fmoveto_req **out){ struct _stor_fmoveto_req *o; cmp_ctx_t cmp; cmp_init(&cmp, ptr, reader, writer); o = (struct _stor_fmoveto_req*)osapi_malloc(sizeof(*o)); if(o == NULL) return -ENOMEM; memset(o, 0, sizeof(*o)); cmp_read_long(&cmp,&o->fid); cmp_read_long(&cmp,&o->folder); { uint32_t size; cmp_read_str_size(&cmp, &size); if(size == 0){ o->fname = NULL; }else{ o->fname = (char*)osapi_malloc(size+1); if(o->fname == NULL){ osapi_free(o); return -ENOMEM; } reader(&cmp, o->fname, size); o->fname[size] = 0; } } *out = o; return 0; }
void stor_lookup_next_rsp_free(struct _stor_lookup_next_rsp *ptr){ if(ptr->rfiles != NULL){ fixarray_destroy(ptr->rfiles); ptr->rfiles = NULL; } osapi_free(ptr); }
int spie_fini(sharepie_t *sp){ if(sp->rdir != NULL){ osapi_free(sp->rdir); sp->rdir = NULL; } return 0; }
static int header_unpack(struct evbuffer *in, spie_header_t **buf){ spie_header_t *pro; int16_t nsize = SPIE_HEADER_LEN; int len; int evlen; ev_ssize_t es; evlen = evbuffer_get_length(in); if(evlen == 0){ return -SPIE_ECODE_INVAL; } if(evlen < SPIE_HEADER_LEN){ log_warn("evbuffer - buffer is to small:%d\n", evlen); return -SPIE_ECODE_INVAL; } // get the payload size es = evbuffer_copyout(in, &nsize, sizeof(nsize)); if(es != sizeof(nsize)){ log_warn("evbuffer read command size fail!\n"); return -SPIE_ECODE_INVAL; } len = ntohs(nsize) + SPIE_HEADER_LEN; evlen = evbuffer_get_length(in); if(evlen < len){ return -SPIE_ECODE_INVAL; } pro = osapi_malloc(len); if(pro == NULL){ log_warn("no enough memory for unpack protocols\n"); return -SPIE_ECODE_NOMEM; } memset(pro, 0, len); es = evbuffer_copyout(in, pro, len); if(es != len){ log_warn("read whole package from buffer fail:%d", es); osapi_free(pro); return -SPIE_ECODE_INVAL; } evbuffer_drain(in, len); pro->size = ntohs(pro->size); pro->sesid = ntohl(pro->sesid); pro->seqid = ntohl(pro->seqid); pro->cred = ntohl(pro->cred); *buf = pro; return 0; }
void stor_fstat_rsp_free(struct _stor_fstat_rsp *ptr){ if(ptr->fname != NULL){ osapi_free(ptr->fname); ptr->fname = NULL; } if(ptr->folder != NULL){ osapi_free(ptr->folder); ptr->folder = NULL; } if(ptr->snap != NULL){ osapi_free(ptr->snap); ptr->snap = NULL; ptr->snap_len = 0; } osapi_free(ptr); }
fixbuffer_t *fixbuffer_new(){ fixbuffer_t *fb; fb = osapi_malloc(sizeof(*fb)); if(fb == NULL){ return NULL; } fb->len = FIXBUFFER_DEFAULT_BUFFER_LEN; fb->start = 0; fb->end = 0; fb->buffer = osapi_malloc(fb->len); if(fb->buffer == NULL){ osapi_free(fb); return NULL; } return fb; }
int fixbuffer_expand(fixbuffer_t *fb, size_t len){ void *buffer, *temp; size_t new_len; new_len = fb->len + len; new_len = FIXBUFFER_ALIGN(new_len, FIXBUFFER_DEFAULT_BUFFER_LEN); buffer = osapi_malloc(new_len); if(buffer == NULL){ return -1; } memcpy(buffer, fb->buffer + fb->start, fb->end - fb->start); temp = fb->buffer; fb->buffer = buffer; fb->end = fb->end - fb->start; fb->start = 0; fb->len = new_len; osapi_free(temp); return 0; }
void stor_fread_req_free(struct _stor_fread_req *ptr){ osapi_free(ptr); }
int stor_lookup_next_rsp_unmash(void *ptr, cmp_reader reader, cmp_writer writer, struct _stor_lookup_next_rsp **out){ struct _stor_lookup_next_rsp *o; cmp_ctx_t cmp; cmp_init(&cmp, ptr, reader, writer); o = (struct _stor_lookup_next_rsp*)osapi_malloc(sizeof(*o)); if(o == NULL) return -ENOMEM; memset(o, 0, sizeof(*o)); cmp_read_long(&cmp,&o->luid); { stor_fstat_rsp_t *obj; uint32_t size; int i; cmp_read_array(&cmp, &size); fixarray_create(size, &o->rfiles); for (i = 0; i < size; i++){ obj = osapi_malloc(sizeof(*obj)); if(obj == NULL) { osapi_free(o); return -ENOMEM; } cmp_read_long(&cmp,&obj->fid); { uint32_t size; cmp_read_str_size(&cmp, &size); if(size == 0){ obj->fname = NULL; }else{ obj->fname = (char*)osapi_malloc(size+1); if(obj->fname == NULL){ osapi_free(o); return -ENOMEM; } reader(&cmp, obj->fname, size); obj->fname[size] = 0; } } { uint32_t size; cmp_read_str_size(&cmp, &size); if(size == 0){ obj->folder = NULL; }else{ obj->folder = (char*)osapi_malloc(size+1); if(obj->folder == NULL){ osapi_free(o); return -ENOMEM; } reader(&cmp, obj->folder, size); obj->folder[size] = 0; } } cmp_read_int(&cmp, &obj->type); cmp_read_long(&cmp,&obj->fatime); cmp_read_long(&cmp,&obj->fmtime); cmp_read_long(&cmp,&obj->fctime); cmp_read_long(&cmp,&obj->fsize); cmp_read_bin_size(&cmp, &obj->snap_len); if(obj->snap_len == 0){ obj->snap = NULL; }else{ obj->snap = osapi_malloc(obj->snap_len); if(obj->snap == NULL){ return -ENOMEM; } reader(ptr, obj->snap, obj->snap_len); } fixarray_set(o->rfiles, i, obj); } } *out = o; return 0; }
void stor_lookup_next_req_free(struct _stor_lookup_next_req *ptr){ osapi_free(ptr); }
void stor_fclose_req_free(struct _stor_fclose_req *ptr){ osapi_free(ptr); }
void stor_fcreate_rsp_free(struct _stor_fcreate_rsp *ptr){ osapi_free(ptr); }
void stor_lookup_create_rsp_free(struct _stor_lookup_create_rsp *ptr){ osapi_free(ptr); }
void stor_fmoveto_rsp_free(struct _stor_fmoveto_rsp *ptr){ osapi_free(ptr); }
int stor_fstat_rsp_unmash(void *ptr, cmp_reader reader, cmp_writer writer, struct _stor_fstat_rsp **out){ struct _stor_fstat_rsp *o; cmp_ctx_t cmp; cmp_init(&cmp, ptr, reader, writer); o = (struct _stor_fstat_rsp*)osapi_malloc(sizeof(*o)); if(o == NULL) return -ENOMEM; memset(o, 0, sizeof(*o)); cmp_read_long(&cmp,&o->fid); { uint32_t size; cmp_read_str_size(&cmp, &size); if(size == 0){ o->fname = NULL; }else{ o->fname = (char*)osapi_malloc(size+1); if(o->fname == NULL){ osapi_free(o); return -ENOMEM; } reader(&cmp, o->fname, size); o->fname[size] = 0; } } { uint32_t size; cmp_read_str_size(&cmp, &size); if(size == 0){ o->folder = NULL; }else{ o->folder = (char*)osapi_malloc(size+1); if(o->folder == NULL){ osapi_free(o); return -ENOMEM; } reader(&cmp, o->folder, size); o->folder[size] = 0; } } cmp_read_int(&cmp, &o->type); cmp_read_long(&cmp,&o->fatime); cmp_read_long(&cmp,&o->fmtime); cmp_read_long(&cmp,&o->fctime); cmp_read_long(&cmp,&o->fsize); cmp_read_bin_size(&cmp, &o->snap_len); if(o->snap_len == 0){ o->snap = NULL; }else{ o->snap = osapi_malloc(o->snap_len); if(o->snap == NULL){ stor_fstat_rsp_free(o); return -ENOMEM; } reader(&cmp, o->snap, o->snap_len); } *out = o; return 0; }
void stor_ftruncate_req_free(struct _stor_ftruncate_req *ptr){ osapi_free(ptr); }
void stor_fdelete_rsp_free(struct _stor_fdelete_rsp *ptr){ osapi_free(ptr); }
void stor_fdelete_req_free(struct _stor_fdelete_req *ptr){ osapi_free(ptr); }
void stor_lookup_destroy_rsp_free(struct _stor_lookup_destroy_rsp *ptr){ osapi_free(ptr); }
void stor_fopen_rsp_free(struct _stor_fopen_rsp *ptr){ osapi_free(ptr); }