]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
- merge from ronnie
authorAndrew Tridgell <tridge@samba.org>
Wed, 16 May 2007 08:10:26 +0000 (18:10 +1000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 16 May 2007 08:10:26 +0000 (18:10 +1000)
- fixed a memory leak found by dmitry

(This used to be ctdb commit ae87bf0005666b50850161c3843d6bc7cb5c8971)

1  2 
ctdb/common/ctdb_call.c
ctdb/common/ctdb_client.c
ctdb/include/ctdb_private.h

index 5416e711ff67e971501ef990cab20af342a7c6da,5416e711ff67e971501ef990cab20af342a7c6da..caeec8dc69d2c5ed590b772a7196eb42005532d5
@@@ -48,8 -48,8 +48,8 @@@
    local version of ctdb_call
  */
  int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call,
--                  struct ctdb_ltdb_header *header, TDB_DATA *data,
--                  uint32_t caller)
++                  struct ctdb_ltdb_header *header, TALLOC_CTX *mem_ctx,
++                  TDB_DATA *data, uint32_t caller)
  {
        struct ctdb_call_info *c;
        struct ctdb_registered_call *fn;
@@@ -322,12 -322,12 +322,10 @@@ static void ctdb_become_dmaster(struct 
                return;
        }
  
--      ctdb_call_local(ctdb_db, &state->call, &header, &data, ctdb->vnn);
++      ctdb_call_local(ctdb_db, &state->call, &header, state, &data, ctdb->vnn);
  
        ctdb_ltdb_unlock(ctdb_db, state->call.key);
  
--      talloc_steal(state, state->call.reply_data.dptr);
--
        state->state = CTDB_CALL_DONE;
        if (state->async.fn) {
                state->async.fn(state);
@@@ -477,7 -477,7 +475,7 @@@ void ctdb_request_call(struct ctdb_cont
                return;
        }
  
--      ctdb_call_local(ctdb_db, &call, &header, &data, c->hdr.srcnode);
++      ctdb_call_local(ctdb_db, &call, &header, hdr, &data, c->hdr.srcnode);
  
        ctdb_ltdb_unlock(ctdb_db, call.key);
  
        r->datalen       = call.reply_data.dsize;
        if (call.reply_data.dsize) {
                memcpy(&r->data[0], call.reply_data.dptr, call.reply_data.dsize);
--              talloc_free(call.reply_data.dptr);
        }
  
        ctdb_queue_packet(ctdb, &r->hdr);
@@@ -694,8 -694,8 +691,7 @@@ struct ctdb_call_state *ctdb_call_local
        state->call = *call;
        state->ctdb_db = ctdb_db;
  
--      ret = ctdb_call_local(ctdb_db, &state->call, header, data, ctdb->vnn);
--      talloc_steal(state, state->call.reply_data.dptr);
++      ret = ctdb_call_local(ctdb_db, &state->call, header, state, data, ctdb->vnn);
  
        event_add_timed(ctdb->ev, state, timeval_zero(), call_local_trigger, state);
  
index 044e38558e8095df5f2aea5fb1c4db59273c98bc,c178aa13ec17e7d5726373482f82a4be4374c081..d31ddd5861ecd29e9cb1a5de7d9351062189ca01
@@@ -264,8 -264,8 +264,7 @@@ static struct ctdb_client_call_state *c
        state->call = *call;
        state->ctdb_db = ctdb_db;
  
--      ret = ctdb_call_local(ctdb_db, &state->call, header, data, ctdb->vnn);
--      talloc_steal(state, state->call.reply_data.dptr);
++      ret = ctdb_call_local(ctdb_db, &state->call, header, state, data, ctdb->vnn);
  
        return state;
  }
index 6710cd26f2621654b9b81a17a1f3cdcf32d6bc41,25097729c3c12828a9399943608cd07d6f13ffef..ca045c18d1a17525516567d655e955508fb9ee80
@@@ -680,7 -681,7 +681,7 @@@ struct ctdb_call_state *ctdb_daemon_cal
  void ctdb_request_finished(struct ctdb_context *ctdb, struct ctdb_req_header *hdr);
  
  int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call,
--                  struct ctdb_ltdb_header *header, TDB_DATA *data,
++                  struct ctdb_ltdb_header *header, TALLOC_CTX *mem_ctx, TDB_DATA *data,
                    uint32_t caller);
  
  #define ctdb_reqid_find(ctdb, reqid, type)    (type *)_ctdb_reqid_find(ctdb, reqid, #type, __location__)