Navigation


Changeset 1103:d8591b1c56cd in freeDiameter for libfdcore/cnxctx.c


Ignore:
Timestamp:
May 10, 2013, 7:48:57 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Implemented a few hooks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdcore/cnxctx.c

    r1102 r1103  
    228228        CHECK_SYS_DO( cli_sock = accept(serv->cc_socket, (sSA *)&ss, &ss_len), return NULL );
    229229       
    230         if (TRACE_BOOL(INFO)) {
    231                 char buf[1024];
    232                 sSA_DUMP_NODE( buf, sizeof(buf), &ss, NI_NUMERICHOST );
    233                 fd_log_debug("%s : accepted new client [%s].", fd_cnx_getid(serv), buf);
    234         }
    235        
    236230        CHECK_MALLOC_DO( cli = fd_cnx_init(1), { shutdown(cli_sock, SHUT_RDWR); close(cli_sock); return NULL; } );
    237231        cli->cc_socket = cli_sock;
     
    264258                        snprintf(cli->cc_remid, sizeof(cli->cc_remid), "[err:%s]", gai_strerror(rc));
    265259        }
     260       
     261        LOG_D("Incoming connection: '%s' <- '%s'   {%s}", fd_cnx_getid(serv), cli->cc_remid, cli->cc_id);
    266262
    267263#ifndef DISABLE_SCTP
     
    275271                        cli->cc_sctp_para.pairs = cli->cc_sctp_para.str_in;
    276272               
    277                 TRACE_DEBUG(FULL,"%s : client '%s' (SCTP:%d, %d/%d streams)", fd_cnx_getid(serv), fd_cnx_getid(cli), cli->cc_socket, cli->cc_sctp_para.str_in, cli->cc_sctp_para.str_out);
     273                LOG_A( "%s : client '%s' (SCTP:%d, %d/%d streams)", fd_cnx_getid(serv), fd_cnx_getid(cli), cli->cc_socket, cli->cc_sctp_para.str_in, cli->cc_sctp_para.str_out);
    278274        }
    279275#endif /* DISABLE_SCTP */
     
    287283        int sock = 0;
    288284        struct cnxctx * cnx = NULL;
     285        char sa_buf[sSA_DUMP_STRLEN];
    289286       
    290287        TRACE_ENTRY("%p %d", sa, addrlen);
    291288        CHECK_PARAMS_DO( sa && addrlen, return NULL );
     289       
     290        fd_sa_sdump_numeric(sa_buf, sa);
    292291       
    293292        /* Create the socket and connect, which can take some time and/or fail */
     
    295294                int ret = fd_tcp_client( &sock, sa, addrlen );
    296295                if (ret != 0) {
    297                         int lvl;
    298                         switch (ret) {
    299                                 case ECONNREFUSED:
    300 
    301                                         /* "Normal" errors */
    302                                         lvl = FULL;
    303                                         break;
    304                                 default:
    305                                         lvl = INFO;
    306                         }
    307                         /* Some errors are expected, we log at different level */
    308                         TRACE_DEBUG( lvl, "fd_tcp_client returned an error: %s", strerror(ret));
     296                        LOG_A("TCP connection to %s failed: %s", sa_buf, strerror(ret));
    309297                        return NULL;
    310298                }
    311         }
    312        
    313         if (TRACE_BOOL(INFO)) {
    314                 char buf[1024];
    315                 sSA_DUMP_NODE_SERV( buf, sizeof(buf), sa, NI_NUMERICSERV);
    316                 fd_log_debug("Connection established to server '%s' (TCP:%d).", buf, sock);
    317299        }
    318300       
     
    329311        /* Generate the names for the object */
    330312        {
    331                 char addrbuf[INET6_ADDRSTRLEN];
    332                 char portbuf[10];
    333313                int  rc;
    334314               
    335                 /* Numeric values for debug... */
    336                 rc = getnameinfo(sa, addrlen, addrbuf, sizeof(addrbuf), portbuf, sizeof(portbuf), NI_NUMERICHOST | NI_NUMERICSERV);
    337                 if (rc) {
    338                         snprintf(addrbuf, sizeof(addrbuf), "[err:%s]", gai_strerror(rc));
    339                         portbuf[0] = '\0';
    340                 }
    341                
    342                 snprintf(cnx->cc_id, sizeof(cnx->cc_id), "TCP to [%s]:%s (%d)", addrbuf, portbuf, cnx->cc_socket);
     315                snprintf(cnx->cc_id, sizeof(cnx->cc_id), "TCP,#%d->%s", cnx->cc_socket, sa_buf);
    343316               
    344317                /* ...Name for log messages */
     
    347320                        snprintf(cnx->cc_remid, sizeof(cnx->cc_remid), "[err:%s]", gai_strerror(rc));
    348321        }
     322       
     323        LOG_A("TCP connection to %s succeed (socket:%d).", sa_buf, sock);
    349324       
    350325        return cnx;
     
    362337        int sock = 0;
    363338        struct cnxctx * cnx = NULL;
     339        char sa_buf[sSA_DUMP_STRLEN];
    364340        sSS primary;
    365341       
    366342        TRACE_ENTRY("%p", list);
    367343        CHECK_PARAMS_DO( list && !FD_IS_LIST_EMPTY(list), return NULL );
     344       
     345        fd_sa_sdump_numeric(sa_buf, &((struct fd_endpoint *)(list->next))->sa);
    368346       
    369347        {
    370348                int ret = fd_sctp_client( &sock, no_ip6, port, list );
    371349                if (ret != 0) {
    372                         int lvl;
    373                         switch (ret) {
    374                                 case ECONNREFUSED:
    375 
    376                                         /* "Normal" errors */
    377                                         lvl = FULL;
    378                                         break;
    379                                 default:
    380                                         lvl = INFO;
    381                         }
    382                         /* Some errors are expected, we log at different level */
    383                         TRACE_DEBUG( lvl, "fd_sctp_client returned an error: %s", strerror(ret));
     350                        LOG_A("SCTP connection to [%s,...] failed: %s", sa_buf, strerror(ret));
    384351                        return NULL;
    385352                }
     
    403370                cnx->cc_sctp_para.pairs = cnx->cc_sctp_para.str_in;
    404371       
    405         if (TRACE_BOOL(INFO)) {
    406                 char buf[1024];
    407                 sSA_DUMP_NODE_SERV( buf, sizeof(buf), &primary, NI_NUMERICSERV);
    408                 fd_log_debug("Connection established to server '%s' (SCTP:%d, %d/%d streams).", buf, sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out);
    409         }
     372        fd_sa_sdump_numeric(sa_buf, (sSA *)&primary);
    410373       
    411374        /* Generate the names for the object */
    412375        {
    413                 char addrbuf[INET6_ADDRSTRLEN];
    414                 char portbuf[10];
    415376                int  rc;
    416377               
    417                 /* Numeric values for debug... */
    418                 rc = getnameinfo((sSA *)&primary, sSAlen(&primary), addrbuf, sizeof(addrbuf), portbuf, sizeof(portbuf), NI_NUMERICHOST | NI_NUMERICSERV);
    419                 if (rc) {
    420                         snprintf(addrbuf, sizeof(addrbuf), "[err:%s]", gai_strerror(rc));
    421                         portbuf[0] = '\0';
    422                 }
    423                
    424                 snprintf(cnx->cc_id, sizeof(cnx->cc_id), "SCTP to [%s]:%s (%d)", addrbuf, portbuf, cnx->cc_socket);
     378                snprintf(cnx->cc_id, sizeof(cnx->cc_id), "SCTP,#%d->%s", cnx->cc_socket, sa_buf);
    425379               
    426380                /* ...Name for log messages */
     
    429383                        snprintf(cnx->cc_remid, sizeof(cnx->cc_remid), "[err:%s]", gai_strerror(rc));
    430384        }
     385       
     386        LOG_A("SCTP connection to %s succeed (socket:%d, %d/%d streams).", sa_buf, sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out);
    431387       
    432388        return cnx;
     
    678634size_t fd_msg_pmdl_sizewithoverhead(size_t datalen)
    679635{
    680         return PMDL_PADDED(datalen);
     636        return PMDL_PADDED(datalen) + sizeof(struct fd_msg_pmdl);
    681637}
    682638
     
    698654        uint8_t * ret = NULL;
    699655       
    700         CHECK_MALLOC_DO(  ret = malloc( PMDL_PADDED(expected_len) ), return NULL );
     656        CHECK_MALLOC_DO(  ret = malloc( fd_msg_pmdl_sizewithoverhead(expected_len) ), return NULL );
    701657        CHECK_FCT_DO( fd_cnx_init_msg_buffer(ret, expected_len, pmdl), {free(ret); return NULL;} );
    702658        return ret;
     
    707663        uint8_t * ret = NULL;
    708664       
    709         CHECK_MALLOC_DO(  ret = realloc( buffer, PMDL_PADDED(expected_len) ), return NULL );
     665        CHECK_MALLOC_DO(  ret = realloc( buffer, fd_msg_pmdl_sizewithoverhead(expected_len) ), return NULL );
    710666        CHECK_FCT_DO( fd_cnx_init_msg_buffer(ret, expected_len, pmdl), {free(ret); return NULL;} );
    711667        return ret;
     
    762718                   || (rcv_data.length > DIAMETER_MSG_SIZE_MAX)) { /* to avoid too big mallocs */
    763719                        /* The message is suspect */
    764                         LOG_E( "Received suspect header [ver: %d, size: %zd], assuming disconnection", (int)header[0], rcv_data.length);
     720                        LOG_E( "Received suspect header [ver: %d, size: %zd] from '%s', assuming disconnection", (int)header[0], rcv_data.length, conn->cc_remid);
    765721                        fd_cnx_markerror(conn);
    766722                        goto out; /* Stop the thread, the recipient of the event will cleanup */
     
    1004960                   || (rcv_data.length > DIAMETER_MSG_SIZE_MAX)) { /* to avoid too big mallocs */
    1005961                        /* The message is suspect */
    1006                         LOG_E( "Received suspect header [ver: %d, size: %zd], assume disconnection", (int)header[0], rcv_data.length);
     962                        LOG_E( "Received suspect header [ver: %d, size: %zd] from '%s', assume disconnection", (int)header[0], rcv_data.length, conn->cc_remid);
    1007963                        fd_cnx_markerror(conn);
    1008964                        goto out;
Note: See TracChangeset for help on using the changeset viewer.