Ignore:
File:
1 edited

Legend:

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

    ra1a101d rb243da3  
    8383
    8484        if (oflags == tcp_open_nonblock) {
     85                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_open -> %p", nconn);
    8586                *conn = nconn;
    8687                return TCP_EOK;
     
    234235tcp_error_t tcp_uc_close(tcp_conn_t *conn)
    235236{
    236         log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_close()", conn->name);
     237        log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_close(%p)", conn->name,
     238            conn);
    237239
    238240        fibril_mutex_lock(&conn->lock);
    239241
    240242        if (conn->cstate == st_closed) {
     243                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - ENOTEXIST");
    241244                fibril_mutex_unlock(&conn->lock);
    242245                return TCP_ENOTEXIST;
    243246        }
    244247
     248        if (conn->cstate == st_listen || conn->cstate == st_syn_sent) {
     249                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - listen/syn_sent");
     250                tcp_conn_reset(conn);
     251                tcp_conn_remove(conn);
     252                return TCP_EOK;
     253        }
     254
    245255        if (conn->snd_buf_fin) {
     256                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - ECLOSING");
    246257                fibril_mutex_unlock(&conn->lock);
    247258                return TCP_ECLOSING;
    248259        }
    249260
     261        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - set snd_buf_fin");
    250262        conn->snd_buf_fin = true;
    251263        tcp_tqueue_new_data(conn);
     
    298310        tcp_conn_t *conn;
    299311
    300         log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_as_segment_arrived(f:(%x,%u), l:(%x,%u))",
    301             sp->foreign.addr.ipv4, sp->foreign.port,
    302             sp->local.addr.ipv4, sp->local.port);
     312        log_msg(LOG_DEFAULT, LVL_DEBUG,
     313            "tcp_as_segment_arrived(f:(%u), l:(%u))",
     314            sp->foreign.port, sp->local.port);
    303315
    304316        conn = tcp_conn_find_ref(sp);
     
    319331        }
    320332
    321         if (conn->ident.foreign.addr.ipv4 == TCP_IPV4_ANY)
    322                 conn->ident.foreign.addr.ipv4 = sp->foreign.addr.ipv4;
     333        if (inet_addr_is_any(&conn->ident.foreign.addr))
     334                conn->ident.foreign.addr = sp->foreign.addr;
     335       
    323336        if (conn->ident.foreign.port == TCP_PORT_ANY)
    324337                conn->ident.foreign.port = sp->foreign.port;
    325         if (conn->ident.local.addr.ipv4 == TCP_IPV4_ANY)
    326                 conn->ident.local.addr.ipv4 = sp->local.addr.ipv4;
     338       
     339        if (inet_addr_is_any(&conn->ident.local.addr))
     340                conn->ident.local.addr = sp->local.addr;
    327341
    328342        tcp_conn_segment_arrived(conn, seg);
Note: See TracChangeset for help on using the changeset viewer.