Navigation


Changeset 706:4ffbc9f1e922 in freeDiameter for tests/testsctp.c


Ignore:
Timestamp:
Feb 9, 2011, 3:26:58 PM (13 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Large UNTESTED commit with the following changes:

  • Improved DiameterIdentity? handling (esp. interationalization issues), and improve efficiency of some string operations in peers, sessions, and dictionary modules (closes #7)
  • Cleanup in the session module to free only unreferenced sessions (#16)
  • Removed fd_cpu_flush_cache(), replaced by more robust alternatives.
  • Improved peer state machine algorithm to counter SCTP multistream race condition.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/testsctp.c

    r662 r706  
    5656        PASSTEST();
    5757#else /* DISABLE_SCTP */
    58         int sock, srvsock, clisock;
     58        struct cnxctx cli, srv; /* we use only their cc_socket & cc_state */
     59        int sock;
    5960        char buf1[]="abcdef";
    6061        char *buf2;
    6162        size_t sz;
    6263        struct fd_list eps = FD_LIST_INITIALIZER(eps);
    63         uint32_t status = 0;
    6464        uint16_t str;
    6565        int ev;
     
    8080        }
    8181       
     82        memset(&cli, 0, sizeof(cli));
     83        memset(&srv, 0, sizeof(srv));
     84       
    8285        /* First, initialize the daemon modules */
    8386        INIT_FD();
     
    9396       
    9497        /* Now, create the client socket */
    95         CHECK( 0, fd_sctp_client( &clisock, 0, TEST_PORT, &eps ));
     98        CHECK( 0, fd_sctp_client( &cli.cc_socket, 0, TEST_PORT, &eps ));
    9699       
    97100        /* Accept this connection */
    98         srvsock = accept(sock, NULL, NULL);
     101        srv.cc_socket = accept(sock, NULL, NULL);
    99102       
    100103        /* Send a first message */
    101         CHECK( 0, fd_sctp_sendstr(srvsock, 1, (uint8_t *)buf1, sizeof(buf1), &status) );
    102         CHECK( 0, status);
     104        CHECK( 0, fd_sctp_sendstr(&srv, 1, (uint8_t *)buf1, sizeof(buf1) ) );
     105        CHECK( 0, srv.cc_state);
    103106       
    104107        /* Receive this message */
    105108redo1:
    106         CHECK( 0, fd_sctp_recvmeta(clisock, &str, (uint8_t **)&buf2, &sz, &ev, &status) );
     109        CHECK( 0, fd_sctp_recvmeta(&cli, &str, (uint8_t **)&buf2, &sz, &ev) );
    107110        if (ev == FDEVP_CNX_EP_CHANGE)
    108111                goto redo1;
    109112        CHECK( FDEVP_CNX_MSG_RECV, ev);
    110         CHECK( 0, status);
     113        CHECK( 0, cli.cc_state);
    111114        CHECK( 1, str);
    112115        CHECK( sizeof(buf1), sz );
     
    115118       
    116119        /* Send in the other direction */
    117         CHECK( 0, fd_sctp_sendstr(clisock, 2, (uint8_t *)buf1, sizeof(buf1), &status) );
    118         CHECK( 0, status);
     120        CHECK( 0, fd_sctp_sendstr(&cli, 2, (uint8_t *)buf1, sizeof(buf1)) );
     121        CHECK( 0, cli.cc_state);
    119122       
    120123        /* Receive this message */
    121124redo2:
    122         CHECK( 0, fd_sctp_recvmeta(srvsock, &str, (uint8_t **)&buf2, &sz, &ev, &status) );
     125        CHECK( 0, fd_sctp_recvmeta(&srv, &str, (uint8_t **)&buf2, &sz, &ev) );
    123126        if (ev == FDEVP_CNX_EP_CHANGE)
    124127                goto redo2;
    125128        CHECK( FDEVP_CNX_MSG_RECV, ev);
    126         CHECK( 0, status);
     129        CHECK( 0, srv.cc_state);
    127130        CHECK( 2, str);
    128131        CHECK( sizeof(buf1), sz );
Note: See TracChangeset for help on using the changeset viewer.