Changeset 7c912b6 in mainline for uspace/srv/net/tcp/sock.c


Ignore:
Timestamp:
2012-05-12T09:39:20Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0d67e16
Parents:
01a7aa1
Message:

Fix delivery of end-of-connection condition.

File:
1 edited

Legend:

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

    r01a7aa1 r7c912b6  
    652652        log_msg(LVL_DEBUG, "tcp_sock_recvfrom(): lock recv_buffer_lock");
    653653        fibril_mutex_lock(&socket->recv_buffer_lock);
    654         while (socket->recv_buffer_used == 0) {
     654        while (socket->recv_buffer_used == 0 && socket->recv_error == TCP_EOK) {
    655655                log_msg(LVL_DEBUG, "wait for recv_buffer_cv + recv_buffer_used != 0");
    656656                fibril_condvar_wait(&socket->recv_buffer_cv,
     
    850850                if (trc != TCP_EOK) {
    851851                        sock->recv_error = trc;
     852                        fibril_condvar_broadcast(&sock->recv_buffer_cv);
    852853                        fibril_mutex_unlock(&sock->recv_buffer_lock);
     854                        tcp_sock_notify_data(sock->sock_core);
    853855                        break;
    854856                }
     
    857859
    858860                sock->recv_buffer_used = data_len;
     861                fibril_condvar_broadcast(&sock->recv_buffer_cv);
    859862                fibril_mutex_unlock(&sock->recv_buffer_lock);
    860                 fibril_condvar_broadcast(&sock->recv_buffer_cv);
    861863                tcp_sock_notify_data(sock->sock_core);
    862864        }
Note: See TracChangeset for help on using the changeset viewer.