add: atomic_set( &t->ref_cnt, 1);
context: struct trans* create_transaction( str *buf, struct peer *in_peer,										void (*timeout_f)(struct trans*) ){	struct trans *t;	t = (struct trans*)shm_malloc(sizeof(struct trans));	if (!t) {		LOG(L_ERR,"ERROR:create_in_transaction: no more free memory!\n");		goto error;	}	memset(t,0,sizeof(struct trans));	/* init the timer_link for timeout */	t->timeout.payload = t;	/* link the request buffer */	t->req = buf;	/* link the incoming peer */	t->in_peer = in_peer;	/* timeout handler */	t->timeout_f = timeout_f;	return t;error:	return 0;}