fix bugs about file_length wrong
This commit is contained in:
@@ -29,13 +29,14 @@ typedef struct
|
||||
{
|
||||
uint8_t send_type; // OFFLINE_SEND
|
||||
char uuid[UUID_LENGTH+1];
|
||||
uint16_t content_len;
|
||||
char filename[NAME_SIZE];
|
||||
uint16_t content_len; // content length in current packet
|
||||
char filename[NAME_SIZE];
|
||||
struct nirvana_streaming_ctx *ctx;
|
||||
uint8_t next_flag;
|
||||
uint64_t file_len;
|
||||
uchar curdir;
|
||||
uint id;
|
||||
uint8_t next_flag; // 1: next packet contains separator
|
||||
// 0: not contain
|
||||
uint64_t *file_len; // file length
|
||||
uchar curdir;
|
||||
uint id; // same like file count , from 0 to start
|
||||
}qq_pme_info,*qq_pme_info_p;
|
||||
|
||||
typedef struct
|
||||
@@ -57,6 +58,7 @@ typedef struct
|
||||
uint id;
|
||||
char filename[NAME_SIZE];
|
||||
struct nirvana_streaming_ctx *ctx;
|
||||
uint64_t *file_len; // file length
|
||||
}file_info;
|
||||
|
||||
uint capture_file_cnt = 0;
|
||||
@@ -112,6 +114,7 @@ int parse_separator(char **payload,int payload_len,struct_separator_feature sepa
|
||||
}
|
||||
qq_pme_info_p qq_pme = *pme;
|
||||
strncpy(qq_pme->uuid,(*payload) + separator_feature.uuid_deviation,uuid_len);
|
||||
qq_pme->uuid[uuid_len+1] = '\0';
|
||||
//printf("this uuid:%s\n",qq_pme->uuid);
|
||||
|
||||
(*payload)+=separator_feature.content_deviation;
|
||||
@@ -283,12 +286,18 @@ int match_uuid(qq_pme_info **pme)
|
||||
// new file create
|
||||
file_info *newfile;
|
||||
newfile = (file_info *)malloc(sizeof(file_info));
|
||||
sprintf(qq_pme->filename,"%s/%d-%s",save_directory,capture_file_cnt,qq_pme->uuid);
|
||||
|
||||
qq_pme->id = capture_file_cnt;
|
||||
newfile->id = capture_file_cnt;
|
||||
capture_file_cnt++;
|
||||
newfile->id = qq_pme->id;
|
||||
sprintf(qq_pme->filename,"%s/%d-%s",save_directory,qq_pme->id,qq_pme->uuid);
|
||||
|
||||
strncpy(newfile->filename,qq_pme->filename,strlen(qq_pme->filename));
|
||||
qq_pme->file_len = 0;
|
||||
|
||||
uint64_t *file_len = (uint64_t *)malloc(sizeof(uint64_t));
|
||||
*file_len = 0;
|
||||
qq_pme->file_len = file_len;
|
||||
newfile->file_len = file_len;
|
||||
#ifdef NIRVANA
|
||||
// nirvana section
|
||||
struct nirvana_streaming_ctx *ctx;
|
||||
@@ -323,7 +332,7 @@ int match_uuid(qq_pme_info **pme)
|
||||
newfile->ctx = ctx;
|
||||
#endif
|
||||
MESA_handle_runtime_log(runtime_log,RLOG_LV_INFO,"match","create %d file\tuuid:%s ",qq_pme->id,qq_pme->uuid);
|
||||
MESA_htable_add(file_htable,(u_char *) qq_pme->uuid, strlen(qq_pme->uuid), (void *)newfile);
|
||||
MESA_htable_add(file_htable,(u_char *) qq_pme->uuid, UUID_LENGTH, (void *)newfile);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
@@ -331,6 +340,7 @@ int match_uuid(qq_pme_info **pme)
|
||||
// there is a file point in htable
|
||||
// so change the pme
|
||||
qq_pme->id = thisfile->id;
|
||||
qq_pme->file_len = thisfile->file_len;
|
||||
MESA_handle_runtime_log(runtime_log,RLOG_LV_INFO,"match","file %d existed,uuid:%s",qq_pme->id,qq_pme->uuid);
|
||||
strncpy(qq_pme->filename,thisfile->filename,strlen(thisfile->filename));
|
||||
#ifdef NIRVANA
|
||||
@@ -455,7 +465,8 @@ uchar qq_file_send_entry(stSessionInfo* session_info,void **pme,int thread_seq,s
|
||||
content_len = qq_pme->content_len;
|
||||
match_uuid(&qq_pme);
|
||||
}
|
||||
qq_pme->file_len += content_len;
|
||||
*(qq_pme->file_len) += content_len;
|
||||
MESA_handle_runtime_log(runtime_log,RLOG_LV_DEBUG,"match","file %d saved %d Bytes, content_len:%d",qq_pme->id,*(qq_pme->file_len),content_len);
|
||||
if(locally_save == 1)
|
||||
{
|
||||
//save file to disk
|
||||
@@ -484,6 +495,7 @@ int suggestion_inform_callback(struct suggest_receive_info *info, struct nirvana
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void nirvana_client_init()
|
||||
{
|
||||
struct nirvana_parameter *parameter;
|
||||
|
||||
Reference in New Issue
Block a user