Changeset d510c0fe in mainline


Ignore:
Timestamp:
2010-01-06T14:02:23Z (14 years ago)
Author:
Lukas Mejdrech <lukasmejdrech@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
04729b1
Parents:
1b053ca2
Message:
  • accepted socket negative identifiers fix
Location:
uspace/srv/net
Files:
2 edited

Legend:

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

    r1b053ca2 rd510c0fe  
    386386                                                        // push the new socket identifier
    387387                                                        fibril_mutex_lock( & socket->accept_lock );
    388                                                         if( ERROR_OCCURRED( dyn_fifo_push( & socket->accepted, SOCKET_GET_NEW_SOCKET_ID( call ), SOCKET_MAX_ACCEPTED_SIZE ))){
    389                                                                 sockets_exclude( socket_get_sockets(), SOCKET_GET_NEW_SOCKET_ID( call ));
    390                                                         }else{
     388                                                        if( ! ERROR_OCCURRED( dyn_fifo_push( & socket->accepted, 1, SOCKET_MAX_ACCEPTED_SIZE ))){
    391389                                                                // signal the accepted socket
    392390                                                                fibril_condvar_signal( & socket->accept_signal );
     
    406404                                }
    407405                                fibril_rwlock_read_unlock( & socket_globals.lock );
     406                                break;
    408407                        default:
    409408                                ERROR_CODE = ENOTSUP;
     
    420419        int                     socket_id;
    421420        services_t      service;
    422         int                     count;
    423421
    424422        // find the appropriate service
     
    462460        if( ! socket ) return ENOMEM;
    463461        bzero( socket, sizeof( * socket ));
    464         count = 0;
    465462        fibril_rwlock_write_lock( & socket_globals.lock );
    466463        // request a new socket
  • uspace/srv/net/tl/tcp/tcp.c

    r1b053ca2 rd510c0fe  
    793793                        }
    794794
    795                         socket_id *= -1;
    796795                        printf("new_sock %d\n", socket_id);
    797796                        socket_data->pseudo_header = listening_socket_data->pseudo_header;
     
    904903
    905904                        // queue the received packet
    906                         if( ! ERROR_OCCURRED( dyn_fifo_push( & listening_socket->accepted, socket->socket_id, listening_socket_data->backlog ))){
     905                        if( ! ERROR_OCCURRED( dyn_fifo_push( & listening_socket->accepted, ( -1 * socket->socket_id ), listening_socket_data->backlog ))){
    907906                                // notify the destination socket
    908907                                async_msg_5( socket->phone, NET_SOCKET_ACCEPTED, ( ipcarg_t ) listening_socket->socket_id, socket_data->data_fragment_size, TCP_HEADER_SIZE, 0, ( ipcarg_t ) socket->socket_id );
     
    18981897                socket_id = dyn_fifo_value( & socket->accepted );
    18991898                if( socket_id < 0 ) return ENOTSOCK;
     1899                socket_id *= -1;
    19001900
    19011901                accepted = socket_cores_find( local_sockets, socket_id );
Note: See TracChangeset for help on using the changeset viewer.