Ignore:
File:
1 edited

Legend:

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

    r5441670 ra1a101d  
    7676        nconn = tcp_conn_new(lsock, fsock);
    7777        tcp_conn_add(nconn);
    78         tcp_conn_lock(nconn);
    7978
    8079        if (acpass == ap_active) {
     
    8483
    8584        if (oflags == tcp_open_nonblock) {
    86                 tcp_conn_unlock(nconn);
    87                 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_open -> %p", nconn);
    8885                *conn = nconn;
    8986                return TCP_EOK;
     
    9289        /* Wait for connection to be established or reset */
    9390        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_open: Wait for connection.");
     91        fibril_mutex_lock(&nconn->lock);
    9492        while (nconn->cstate == st_listen ||
    9593            nconn->cstate == st_syn_sent ||
     
    10199                log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_open: Connection was reset.");
    102100                assert(nconn->cstate == st_closed);
    103                 tcp_conn_unlock(nconn);
     101                fibril_mutex_unlock(&nconn->lock);
    104102                return TCP_ERESET;
    105103        }
    106104
    107         tcp_conn_unlock(nconn);
     105        fibril_mutex_unlock(&nconn->lock);
    108106        log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_open: Connection was established.");
    109107
     
    122120        log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_send()", conn->name);
    123121
    124         tcp_conn_lock(conn);
     122        fibril_mutex_lock(&conn->lock);
    125123
    126124        if (conn->cstate == st_closed) {
    127                 tcp_conn_unlock(conn);
     125                fibril_mutex_unlock(&conn->lock);
    128126                return TCP_ENOTEXIST;
    129127        }
     
    136134
    137135        if (conn->snd_buf_fin) {
    138                 tcp_conn_unlock(conn);
     136                fibril_mutex_unlock(&conn->lock);
    139137                return TCP_ECLOSING;
    140138        }
     
    150148
    151149                if (conn->reset) {
    152                         tcp_conn_unlock(conn);
     150                        fibril_mutex_unlock(&conn->lock);
    153151                        return TCP_ERESET;
    154152                }
     
    166164
    167165        tcp_tqueue_new_data(conn);
    168         tcp_conn_unlock(conn);
     166        fibril_mutex_unlock(&conn->lock);
    169167
    170168        return TCP_EOK;
     
    179177        log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_receive()", conn->name);
    180178
    181         tcp_conn_lock(conn);
     179        fibril_mutex_lock(&conn->lock);
    182180
    183181        if (conn->cstate == st_closed) {
    184                 tcp_conn_unlock(conn);
     182                fibril_mutex_unlock(&conn->lock);
    185183                return TCP_ENOTEXIST;
    186184        }
     
    198196                if (conn->rcv_buf_fin) {
    199197                        /* End of data, peer closed connection */
    200                         tcp_conn_unlock(conn);
     198                        fibril_mutex_unlock(&conn->lock);
    201199                        return TCP_ECLOSING;
    202200                } else {
    203201                        /* Connection was reset */
    204202                        assert(conn->reset);
    205                         tcp_conn_unlock(conn);
     203                        fibril_mutex_unlock(&conn->lock);
    206204                        return TCP_ERESET;
    207205                }
     
    228226            conn->name, xfer_size);
    229227
    230         tcp_conn_unlock(conn);
     228        fibril_mutex_unlock(&conn->lock);
    231229
    232230        return TCP_EOK;
     
    236234tcp_error_t tcp_uc_close(tcp_conn_t *conn)
    237235{
    238         log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_close(%p)", conn->name,
    239             conn);
    240 
    241         tcp_conn_lock(conn);
     236        log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_uc_close()", conn->name);
     237
     238        fibril_mutex_lock(&conn->lock);
    242239
    243240        if (conn->cstate == st_closed) {
    244                 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - ENOTEXIST");
    245                 tcp_conn_unlock(conn);
     241                fibril_mutex_unlock(&conn->lock);
    246242                return TCP_ENOTEXIST;
    247243        }
    248244
    249         if (conn->cstate == st_listen || conn->cstate == st_syn_sent) {
    250                 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - listen/syn_sent");
    251                 tcp_conn_reset(conn);
    252                 tcp_conn_remove(conn);
    253                 tcp_conn_unlock(conn);
    254                 return TCP_EOK;
    255         }
    256 
    257245        if (conn->snd_buf_fin) {
    258                 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - ECLOSING");
    259                 tcp_conn_unlock(conn);
     246                fibril_mutex_unlock(&conn->lock);
    260247                return TCP_ECLOSING;
    261248        }
    262249
    263         log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_uc_close - set snd_buf_fin");
    264250        conn->snd_buf_fin = true;
    265251        tcp_tqueue_new_data(conn);
    266252
    267         tcp_conn_unlock(conn);
     253        fibril_mutex_unlock(&conn->lock);
    268254        return TCP_EOK;
    269255}
     
    312298        tcp_conn_t *conn;
    313299
    314         log_msg(LOG_DEFAULT, LVL_DEBUG,
    315             "tcp_as_segment_arrived(f:(%u), l:(%u))",
    316             sp->foreign.port, sp->local.port);
     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);
    317303
    318304        conn = tcp_conn_find_ref(sp);
     
    323309        }
    324310
    325         tcp_conn_lock(conn);
     311        fibril_mutex_lock(&conn->lock);
    326312
    327313        if (conn->cstate == st_closed) {
    328314                log_msg(LOG_DEFAULT, LVL_WARN, "Connection is closed.");
    329315                tcp_unexpected_segment(sp, seg);
    330                 tcp_conn_unlock(conn);
     316                fibril_mutex_unlock(&conn->lock);
    331317                tcp_conn_delref(conn);
    332318                return;
    333319        }
    334320
    335         if (inet_addr_is_any(&conn->ident.foreign.addr))
    336                 conn->ident.foreign.addr = sp->foreign.addr;
    337        
     321        if (conn->ident.foreign.addr.ipv4 == TCP_IPV4_ANY)
     322                conn->ident.foreign.addr.ipv4 = sp->foreign.addr.ipv4;
    338323        if (conn->ident.foreign.port == TCP_PORT_ANY)
    339324                conn->ident.foreign.port = sp->foreign.port;
    340        
    341         if (inet_addr_is_any(&conn->ident.local.addr))
    342                 conn->ident.local.addr = sp->local.addr;
     325        if (conn->ident.local.addr.ipv4 == TCP_IPV4_ANY)
     326                conn->ident.local.addr.ipv4 = sp->local.addr.ipv4;
    343327
    344328        tcp_conn_segment_arrived(conn, seg);
    345329
    346         tcp_conn_unlock(conn);
     330        fibril_mutex_unlock(&conn->lock);
    347331        tcp_conn_delref(conn);
    348332}
Note: See TracChangeset for help on using the changeset viewer.