Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/socket/socket_client.c

    raadf01e r5814ef7  
    421421        int socket_id;
    422422        services_t service;
     423        ipcarg_t fragment_size;
     424        ipcarg_t header_size;
    423425
    424426        // find the appropriate service
     
    478480                return socket_id;
    479481        }
    480         if(ERROR_OCCURRED((int) async_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL, (ipcarg_t *) &socket->data_fragment_size, (ipcarg_t *) &socket->header_size))){
     482        if(ERROR_OCCURRED((int) async_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL, &fragment_size, &header_size))){
    481483                fibril_rwlock_write_unlock(&socket_globals.lock);
    482484                free(socket);
    483485                return ERROR_CODE;
    484486        }
     487        socket->data_fragment_size = (size_t) fragment_size;
     488        socket->header_size = (size_t) header_size;
    485489        // finish the new socket initialization
    486490        socket_initialize(socket, socket_id, phone, service);
     
    580584                fibril_rwlock_write_unlock(&socket_globals.lock);
    581585                fibril_condvar_wait(&socket->accept_signal, &socket->accept_lock);
     586                // drop the accept lock to avoid deadlock
     587                fibril_mutex_unlock(&socket->accept_lock);
    582588                fibril_rwlock_write_lock(&socket_globals.lock);
     589                fibril_mutex_lock(&socket->accept_lock);
    583590        }
    584591        -- socket->blocked;
     
    801808                fibril_rwlock_read_unlock(&socket_globals.lock);
    802809                fibril_condvar_wait(&socket->receive_signal, &socket->receive_lock);
     810                // drop the receive lock to avoid deadlock
     811                fibril_mutex_unlock(&socket->receive_lock);
    803812                fibril_rwlock_read_lock(&socket_globals.lock);
     813                fibril_mutex_lock(&socket->receive_lock);
    804814        }
    805815        -- socket->blocked;
Note: See TracChangeset for help on using the changeset viewer.