static int deal_with_read(struct iobuf *rbuf, struct slist *slist, struct cntr *cntr, uint8_t *end_flags) { int ret=0; switch(rbuf->cmd) { /* Incoming file request. */ case CMD_FILE: case CMD_METADATA: if(add_to_file_requests(slist, rbuf)) goto error; return 0; /* Incoming data block request. */ case CMD_DATA_REQ: if(add_to_data_requests(slist->blist, rbuf)) goto error; goto end; /* Incoming control/message stuff. */ case CMD_WRAP_UP: { int64_t wrap_up; struct blk *blk; struct blist *blist=slist->blist; from_base64(&wrap_up, rbuf->buf); for(blk=blist->head; blk; blk=blk->next) { if(blk->index==(uint64_t)wrap_up) { blist->last_requested=blk; blist->last_sent=blk; break; } } if(!blk) { logp("Could not find wrap up index: %016" PRIX64 "\n", wrap_up); // goto error; } goto end; } case CMD_MESSAGE: case CMD_WARNING: { log_recvd(rbuf, cntr, 0); goto end; } case CMD_GEN: if(!strcmp(rbuf->buf, "requests_end")) { (*end_flags)|=END_REQUESTS; goto end; } else if(!strcmp(rbuf->buf, "blk_requests_end")) { (*end_flags)|=END_BLK_REQUESTS; goto end; } else if(!strcmp(rbuf->buf, "backup_end")) { (*end_flags)|=END_BACKUP; goto end; } break; default: break; } iobuf_log_unexpected(rbuf, __func__); error: ret=-1; end: iobuf_free_content(rbuf); return ret; }
static int deal_with_read(struct iobuf *rbuf, struct slist *slist, struct blist *blist, struct conf *conf, int *backup_end, int *requests_end, int *blk_requests_end) { int ret=0; switch(rbuf->cmd) { /* Incoming file request. */ case CMD_FILE: if(add_to_file_requests(slist, rbuf, conf)) goto error; return 0; /* Incoming data block request. */ case CMD_DATA_REQ: if(add_to_data_requests(blist, rbuf)) goto error; goto end; /* Incoming control/message stuff. */ case CMD_WRAP_UP: { int64_t wrap_up; struct blk *blk; from_base64(&wrap_up, rbuf->buf); for(blk=blist->head; blk; blk=blk->next) { if(blk->index==(uint64_t)wrap_up) { blist->last_requested=blk; blist->last_sent=blk; break; } } if(!blk) { #ifdef HAVE_WIN32 logp("Could not find wrap up index: %016I64X\n", #else logp("Could not find wrap up index: %016lX\n", #endif wrap_up); logp("Could not find wrap up index: %d\n", wrap_up); // goto error; } goto end; } case CMD_WARNING: logp("WARNING: %s\n", rbuf->cmd); cntr_add(conf->cntr, rbuf->cmd, 0); goto end; case CMD_GEN: if(!strcmp(rbuf->buf, "requests_end")) { *requests_end=1; goto end; } else if(!strcmp(rbuf->buf, "blk_requests_end")) { *blk_requests_end=1; goto end; } else if(!strcmp(rbuf->buf, "backup_end")) { *backup_end=1; goto end; } break; }