Changeset 581db2477ea3eaaf110a4a18e3cc68b74e03ca42

Show
Ignore:
Timestamp:
08/27/10 02:15:48 (4 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1282875348 +0000
git-parent:

[2ad45ba32f23135b7459830293b6998f013e58cb]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1282875348 +0000
Message:

fixes #311

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/stratcon_jlog_streamer.c

    rc6a5f68 r581db24  
    370370    ctx->state = JLOG_STREAMER_WANT_INITIATE; 
    371371    ctx->count = 0; 
     372    ctx->needs_chkpt = 0; 
    372373    ctx->bytes_read = 0; 
    373374    ctx->bytes_expected = 0; 
     
    412413        memcpy(&dummy.count, ctx->buffer, sizeof(u_int32_t)); 
    413414        ctx->count = ntohl(dummy.count); 
     415        ctx->needs_chkpt = 0; 
    414416        free(ctx->buffer); ctx->buffer = NULL; 
    415417        if(ctx->count < 0) 
     
    437439      case JLOG_STREAMER_WANT_BODY: 
    438440        FULLREAD(e, ctx, (unsigned long)ctx->header.message_len); 
    439         if(ctx->header.message_len > 0) 
     441        if(ctx->header.message_len > 0) { 
     442          ctx->needs_chkpt = 1; 
    440443          ctx->push(DS_OP_INSERT, &nctx->r.remote, nctx->remote_cn, 
    441444                    ctx->buffer, NULL); 
     445        } 
    442446        else if(ctx->buffer) 
    443447          free(ctx->buffer); 
     
    446450        ctx->count--; 
    447451        ctx->total_events++; 
    448         if(ctx->count == 0) { 
     452        if(ctx->count == 0 && ctx->needs_chkpt) { 
    449453          eventer_t completion_e; 
    450454          eventer_remove_fd(e->fd); 
     
    462466          noit_connection_disable_timeout(nctx); 
    463467          return 0; 
    464         } else 
     468        } 
     469        else if(ctx->count == 0) 
     470          ctx->state = JLOG_STREAMER_WANT_CHKPT; 
     471        else 
    465472          ctx->state = JLOG_STREAMER_WANT_HEADER; 
    466473        break; 
  • src/stratcon_jlog_streamer.h

    r61a5e1f r581db24  
    8787  } state; 
    8888  int count;            /* Number of jlog messages we need to read */ 
     89  int needs_chkpt; 
    8990  struct { 
    9091    jlog_id   chkpt;