Changeset 2f19103 in mainline for uspace/srv/net/tcp/service.c


Ignore:
Timestamp:
2015-05-22T07:21:37Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
58e9dec
Parents:
bf7587b0
Message:

TCP and UDP servers can make use of inet/endpoint.h types internally.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tcp/service.c

    rbf7587b0 r2f19103  
    108108        tcp_clst_t *clst;
    109109        tcp_cconn_t *cconn;
     110        inet_ep2_t epp;
    110111        int rc;
    111112        tcp_error_t trc;
     
    145146        /* Replenish sentinel connection */
    146147
    147         trc = tcp_uc_open(&clst->elocal, NULL, ap_passive, tcp_open_nonblock,
     148        inet_ep2_init(&epp);
     149        epp.local = clst->elocal;
     150
     151        trc = tcp_uc_open(&epp, ap_passive, tcp_open_nonblock,
    148152            &conn);
    149153        if (trc != TCP_EOK) {
     
    331335        tcp_conn_t *conn;
    332336        tcp_cconn_t *cconn;
    333         tcp_sock_t local;
    334         tcp_sock_t remote;
    335         inet_addr_t local_addr;
     337        inet_ep2_t cepp;
    336338        int rc;
    337339        tcp_error_t trc;
     
    340342
    341343        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl");
     344
     345        cepp = *epp;
    342346
    343347        /* Fill in local address? */
     
    345349                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl: "
    346350                    "determine local address");
    347                 rc = inet_get_srcaddr(&epp->remote.addr, 0, &local_addr);
     351                rc = inet_get_srcaddr(&epp->remote.addr, 0, &cepp.local.addr);
    348352                if (rc != EOK) {
    349353                        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl: "
     
    354358                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl: "
    355359                    "local address specified");
    356                 local_addr = epp->local.addr;
    357360        }
    358361
    359362        /* Allocate local port? */
    360         if (epp->local.port == 0) {
    361                 epp->local.port = 49152; /* XXX */
    362         }
    363 
    364         local.addr = local_addr;
    365         local.port = epp->local.port;
    366         remote.addr = epp->remote.addr;
    367         remote.port = epp->remote.port;
    368 
    369         inet_addr_format(&local_addr, &slocal);
    370         inet_addr_format(&remote.addr, &sremote);
     363        if (cepp.local.port == 0) {
     364                cepp.local.port = 49152; /* XXX */
     365                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl: "
     366                    "allocated local port %" PRIu16, cepp.local.port);
     367        } else {
     368                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create_impl: "
     369                    "local port %" PRIu16 " specified", cepp.local.port);
     370        }
     371
     372        inet_addr_format(&cepp.local.addr, &slocal);
     373        inet_addr_format(&cepp.remote.addr, &sremote);
    371374        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_conn_create: local=%s remote=%s",
    372375            slocal, sremote);
    373 
    374         trc = tcp_uc_open(&local, &remote, ap_active, tcp_open_nonblock, &conn);
     376        free(slocal);
     377        free(sremote);
     378
     379        trc = tcp_uc_open(&cepp, ap_active, tcp_open_nonblock, &conn);
    375380        if (trc != TCP_EOK)
    376381                return EIO;
     
    386391        tcp_uc_set_cb(conn, &tcp_service_cb, cconn);
    387392
    388 //      assoc->cb = &udp_cassoc_cb;
    389 //      assoc->cb_arg = cassoc;
    390 
    391393        *rconn_id = cconn->id;
    392394        return EOK;
     
    415417        tcp_conn_t *conn;
    416418        tcp_clst_t *clst;
    417         tcp_sock_t local;
     419        inet_ep2_t epp;
    418420        int rc;
    419421        tcp_error_t trc;
     
    421423        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_listener_create_impl");
    422424
    423         local.addr = ep->addr;
    424         local.port = ep->port;
    425 
    426         trc = tcp_uc_open(&local, NULL, ap_passive, tcp_open_nonblock, &conn);
     425        inet_ep2_init(&epp);
     426        epp.local.addr = ep->addr;
     427        epp.local.port = ep->port;
     428
     429        trc = tcp_uc_open(&epp, ap_passive, tcp_open_nonblock, &conn);
    427430        if (trc != TCP_EOK)
    428431                return EIO;
     
    435438        }
    436439
    437         clst->elocal = local;
     440        clst->elocal = epp.local;
    438441
    439442        /* XXX Is there a race here (i.e. the connection is already active)? */
Note: See TracChangeset for help on using the changeset viewer.