Navigation


Changeset 1181:22de21feec64 in freeDiameter for libfdcore/server.c


Ignore:
Timestamp:
Jun 5, 2013, 8:22:26 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Preparing for DTLS support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdcore/server.c

    r1136 r1181  
    5454        struct cnxctx * conn;           /* server connection context (listening socket) */
    5555        int             proto;          /* IPPROTO_TCP or IPPROTO_SCTP */
    56         int             secur;          /* TLS is started immediatly after connection ? */
     56        int             secur;          /* TLS is started immediatly after connection ? 0: no; 1: yes (TLS/TCP or DTLS/SCTP); 2: yes (TLS/TCP or TLS/SCTP) */
    5757       
    5858        pthread_t       thr;            /* The thread listening for new connections */
     
    105105               
    106106                if (details) {
    107                         CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "{server}(@%p)'%s': %s, %s, %s", s, fd_cnx_getid(s->conn),
     107                        CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "{server}(@%p)'%s': %s, %s(%d), %s", s, fd_cnx_getid(s->conn),
    108108                                        IPPROTO_NAME( s->proto ),
    109                                         s->secur ? "Secur" : "NotSecur",
     109                                        s->secur ? "Secur" : "NotSecur", s->secur,
    110110                                        (st == NOT_CREATED) ? "Thread not created" :
    111111                                        ((st == RUNNING) ? "Thread running" :
     
    147147        TRACE_ENTRY("%p", c);
    148148       
     149        memset(&rcv_data, 0, sizeof(rcv_data));
     150       
    149151        CHECK_PARAMS_DO(c && c->conn && c->chain.head, goto fatal_error );
     152       
    150153       
    151154        s = c->chain.head->o;
     
    156159        /* Handshake if we are a secure server port, or start clear otherwise */
    157160        if (s->secur) {
    158                 int ret = fd_cnx_handshake(c->conn, GNUTLS_SERVER, NULL, NULL);
     161                int ret = fd_cnx_handshake(c->conn, GNUTLS_SERVER, (s->secur == 1) ? ALGO_HANDSHAKE_DEFAULT : ALGO_HANDSHAKE_3436, NULL, NULL);
    159162                if (ret != 0) {
    160163                        char buf[1024];
     
    360363                        CHECK_MALLOC( s = new_serv(IPPROTO_SCTP, 1) );
    361364                        CHECK_MALLOC( s->conn = fd_cnx_serv_sctp(fd_g_config->cnf_port_tls, empty_conf_ep ? NULL : &fd_g_config->cnf_endpoints) );
     365                        fd_list_insert_before( &FD_SERVERS, &s->chain );
     366                        CHECK_POSIX( pthread_create( &s->thr, NULL, serv_th, s ) );
     367                }
     368               
     369                /* Create the other server on 3436 secure port */
     370                if (fd_g_config->cnf_port_3436) {
     371                        CHECK_MALLOC( s = new_serv(IPPROTO_SCTP, 2) );
     372                        CHECK_MALLOC( s->conn = fd_cnx_serv_sctp(fd_g_config->cnf_port_3436, empty_conf_ep ? NULL : &fd_g_config->cnf_endpoints) );
    362373                        fd_list_insert_before( &FD_SERVERS, &s->chain );
    363374                        CHECK_POSIX( pthread_create( &s->thr, NULL, serv_th, s ) );
Note: See TracChangeset for help on using the changeset viewer.