Navigation


Changeset 1238:8f9684264fe0 in freeDiameter for libfdcore/p_psm.c


Ignore:
Timestamp:
Oct 10, 2013, 11:08:46 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Change management of the p_reqin_count counter to be updated only on routable messages. This should limit the errors in the counter value resulting from rejected or discarded link-local messages.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdcore/p_psm.c

    r1198 r1238  
    527527                        CHECK_FCT_DO( fd_msg_answ_associate( msg, req ), goto psm_end );
    528528                       
    529                 } else {
    530                         /* Mark the incoming request so that we know we have pending answers for this peer */
    531                         CHECK_POSIX_DO( pthread_mutex_lock(&peer->p_state_mtx), goto psm_end  );
    532                         peer->p_reqin_count++;
    533                         CHECK_POSIX_DO( pthread_mutex_unlock(&peer->p_state_mtx), goto psm_end  );
    534529                }
    535530               
     
    560555                                        CHECK_FCT_DO( fd_msg_source_setrr( msg, peer->p_hdr.info.pi_diamid, peer->p_hdr.info.pi_diamidlen, fd_g_config->cnf_dict ), goto psm_end);
    561556
     557                                        if ((hdr->msg_flags & CMD_FLAG_REQUEST)) {
     558                                                /* Mark the incoming request so that we know we have pending answers for this peer */
     559                                                CHECK_POSIX_DO( pthread_mutex_lock(&peer->p_state_mtx), goto psm_end  );
     560                                                peer->p_reqin_count++;
     561                                                CHECK_POSIX_DO( pthread_mutex_unlock(&peer->p_state_mtx), goto psm_end  );
     562                                        }
     563                                               
    562564                                        /* Requeue to the global incoming queue */
    563565                                        CHECK_FCT_DO(fd_fifo_post(fd_g_incoming, &msg), goto psm_end );
     
    601603                                if (msg == NULL) {
    602604                                        /* Send the error back to the peer */
    603                                         CHECK_FCT_DO( ret = fd_out_send(&error, NULL, peer),  );
     605                                        CHECK_FCT_DO( ret = fd_out_send(&error, NULL, peer, 0),  );
    604606                                        if (error) {
    605607                                                char buf[256];
     
    655657
    656658                                                /* Send the answer */
    657                                                 CHECK_FCT_DO( fd_out_send(&msg, peer->p_cnxctx, peer), break );
     659                                                CHECK_FCT_DO( fd_out_send(&msg, peer->p_cnxctx, peer, 0), break );
    658660                                        } while (0);
    659661                                } else {
Note: See TracChangeset for help on using the changeset viewer.