rem: DBG(">>>>> new lat_activ_time %d\n",p->last_activ_time);
context: void dispatch_message( struct peer *p, str *buf){	struct trans *tr;	unsigned int code;	int          event;	/* reset the inactivity time */	p->last_activ_time = get_ticks();	DBG(">>>>> new lat_activ_time %d\n",p->last_activ_time);	/* get message code */	code = ((unsigned int*)buf->s)[1]&MASK_MSG_CODE;	/* check the message code */	switch ( code ) {		case CE_MSG_CODE:			event = CER_RECEIVED;			break;		case DW_MSG_CODE:			event = DWR_RECEIVED;			break;		case DP_MSG_CODE:			event = DPR_RECEIVED;			break;		default:			/* it's a session message -> put the message into the queue */			put_in_queue( buf, p );			return;	}	/* is request or reply? */	if (buf->s[VER_SIZE+MESSAGE_LENGTH_SIZE]&0x80) {		/* request */		peer_state_machine( p, event, buf);	} else {		/* response -> find its transaction and remove it from 		 * hash table (search and remove is an atomic operation) */		tr = transaction_lookup( p, ((unsigned int*)buf->s)[4],			((unsigned int*)buf->s)[3]);		if (!tr) {			LOG(L_ERR,"ERROR:dispatch_message: respons received, but no"				" transaction found!\n");		} else {			/* destroy the transaction */			destroy_transaction( tr );			/* make from a request event a response event */			event++;			/* call the peer machine */			peer_state_machine( p, event, buf );		}	}	/* free the message buffer */	shm_free( buf->s );}