Ignore:
File:
1 edited

Legend:

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

    r14f1db0 r849ed54  
    5151#include <adt/dynamic_fifo.h>
    5252#include <packet/packet_client.h>
    53 #include <packet_remote.h>
    5453#include <net_checksum.h>
    5554#include <in.h>
     
    6968#include <tl_common.h>
    7069#include <tl_messages.h>
    71 #include <tl_local.h>
    72 #include <tl_interface.h>
    7370
    7471#include "tcp.h"
     
    424421                        break;
    425422                default:
    426                         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     423                        pq_release(tcp_globals.net_phone, packet_get_id(packet));
    427424        }
    428425
     
    476473                        // release the acknowledged packets
    477474                        next_packet = pq_next(packet);
    478                         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     475                        pq_release(tcp_globals.net_phone, packet_get_id(packet));
    479476                        packet = next_packet;
    480477                        offset -= length;
     
    520517                        next_packet = pq_next(next_packet);
    521518                        pq_insert_after(tmp_packet, next_packet);
    522                         pq_release_remote(tcp_globals.net_phone, packet_get_id(tmp_packet));
     519                        pq_release(tcp_globals.net_phone, packet_get_id(tmp_packet));
    523520                }
    524521                assert(new_sequence_number + total_length == socket_data->next_incoming + socket_data->window);
     
    551548                                        socket_data->incoming = next_packet;
    552549                                }
    553                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     550                                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    554551                                packet = next_packet;
    555552                                continue;
     
    571568                                if(length <= 0){
    572569                                        // remove the empty packet
    573                                         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     570                                        pq_release(tcp_globals.net_phone, packet_get_id(packet));
    574571                                        packet = next_packet;
    575572                                        continue;
     
    598595                                }
    599596                                // remove the duplicit or corrupted packet
    600                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     597                                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    601598                                packet = next_packet;
    602599                                continue;
     
    620617                if(ERROR_OCCURRED(pq_add(&socket_data->incoming, packet, new_sequence_number, length))){
    621618                        // remove the corrupted packets
    622                         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
    623                         pq_release_remote(tcp_globals.net_phone, packet_get_id(next_packet));
     619                        pq_release(tcp_globals.net_phone, packet_get_id(packet));
     620                        pq_release(tcp_globals.net_phone, packet_get_id(next_packet));
    624621                }else{
    625622                        while(next_packet){
     
    629626                                if(ERROR_OCCURRED(pq_set_order(next_packet, new_sequence_number, length))
    630627                                        || ERROR_OCCURRED(pq_insert_after(packet, next_packet))){
    631                                         pq_release_remote(tcp_globals.net_phone, packet_get_id(next_packet));
     628                                        pq_release(tcp_globals.net_phone, packet_get_id(next_packet));
    632629                                }
    633630                                next_packet = tmp_packet;
     
    637634                printf("unexpected\n");
    638635                // release duplicite or restricted
    639                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     636                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    640637        }
    641638
     
    682679        // queue the received packet
    683680        if(ERROR_OCCURRED(dyn_fifo_push(&socket->received, packet_get_id(packet), SOCKET_MAX_RECEIVED_SIZE))
    684             || ERROR_OCCURRED(tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, socket_data->device_id, &packet_dimension))){
     681                || ERROR_OCCURRED(tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, socket_data->device_id, &packet_dimension))){
    685682                return tcp_release_and_return(packet, ERROR_CODE);
    686683        }
     
    713710                next_packet = pq_detach(packet);
    714711                if(next_packet){
    715                         pq_release_remote(tcp_globals.net_phone, packet_get_id(next_packet));
     712                        pq_release(tcp_globals.net_phone, packet_get_id(next_packet));
    716713                }
    717714                // trim if longer than the header
     
    783780                                free(socket_data->addr);
    784781                                free(socket_data);
    785                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     782                                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    786783                                return ERROR_CODE;
    787784                        }
     
    849846                        next_packet = pq_detach(packet);
    850847                        if(next_packet){
    851                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(next_packet));
     848                                pq_release(tcp_globals.net_phone, packet_get_id(next_packet));
    852849                        }
    853850                        // trim if longer than the header
     
    898895
    899896                socket_data->next_incoming = ntohl(header->sequence_number);// + 1;
    900                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     897                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    901898                socket_data->state = TCP_SOCKET_ESTABLISHED;
    902899                listening_socket = socket_cores_find(socket_data->local_sockets, socket_data->listening_socket_id);
     
    984981                                        // add to acknowledged or release
    985982                                        if(pq_add(&acknowledged, packet, 0, 0) != EOK){
    986                                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     983                                                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    987984                                        }
    988985                                        packet = next;
     
    993990                        // release acknowledged
    994991                        if(acknowledged){
    995                                 pq_release_remote(tcp_globals.net_phone, packet_get_id(acknowledged));
     992                                pq_release(tcp_globals.net_phone, packet_get_id(acknowledged));
    996993                        }
    997994                        return;
     
    10091006}
    10101007
    1011 int tcp_message_standalone(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
     1008int tcp_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
    10121009        ERROR_DECLARE;
    10131010
     
    10221019                case NET_TL_RECEIVED:
    10231020                        //fibril_rwlock_read_lock(&tcp_globals.lock);
    1024                         if(! ERROR_OCCURRED(packet_translate_remote(tcp_globals.net_phone, &packet, IPC_GET_PACKET(call)))){
     1021                        if(! ERROR_OCCURRED(packet_translate(tcp_globals.net_phone, &packet, IPC_GET_PACKET(call)))){
    10251022                                ERROR_CODE = tcp_received_msg(IPC_GET_DEVICE(call), packet, SERVICE_TCP, IPC_GET_ERROR(call));
    10261023                        }
     
    11141111                                        fibril_rwlock_write_unlock(&lock);
    11151112                                        if(res == EOK){
    1116                                                 if (tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, DEVICE_INVALID_ID, &packet_dimension) == EOK){
     1113                                                if(tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, DEVICE_INVALID_ID, &packet_dimension) == EOK){
    11171114                                                        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, ((packet_dimension->content < socket_data->data_fragment_size) ? packet_dimension->content : socket_data->data_fragment_size));
    11181115                                                }
     
    15681565                        }else{
    15691566                                if(ERROR_OCCURRED(pq_insert_after(previous, copy))){
    1570                                         pq_release_remote(tcp_globals.net_phone, packet_get_id(copy));
     1567                                        pq_release(tcp_globals.net_phone, packet_get_id(copy));
    15711568                                        return sending;
    15721569                                }
     
    16001597        // adjust the pseudo header
    16011598        if(ERROR_OCCURRED(ip_client_set_pseudo_header_data_length(socket_data->pseudo_header, socket_data->headerlen, packet_get_data_length(packet)))){
    1602                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     1599                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    16031600                return NULL;
    16041601        }
     
    16071604        header = (tcp_header_ref) packet_get_data(packet);
    16081605        if(! header){
    1609                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     1606                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    16101607                return NULL;
    16111608        }
     
    16281625        // prepare the timeout
    16291626                || ERROR_OCCURRED(tcp_prepare_timeout(tcp_timeout, socket, socket_data, sequence_number, socket_data->state, socket_data->timeout, true))){
    1630                 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     1627                pq_release(tcp_globals.net_phone, packet_get_id(packet));
    16311628                return NULL;
    16321629        }
     
    17531750                return NO_DATA;
    17541751        }
    1755         ERROR_PROPAGATE(packet_translate_remote(tcp_globals.net_phone, &packet, packet_id));
     1752        ERROR_PROPAGATE(packet_translate(tcp_globals.net_phone, &packet, packet_id));
    17561753
    17571754        // reply the packets
     
    17601757        // release the packet
    17611758        dyn_fifo_pop(&socket->received);
    1762         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     1759        pq_release(tcp_globals.net_phone, packet_get_id(packet));
    17631760        // return the total length
    17641761        return (int) length;
     
    18921889        ERROR_PROPAGATE(tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, socket_data->device_id, &packet_dimension));
    18931890        // get a new packet
    1894         *packet = packet_get_4_remote(tcp_globals.net_phone, TCP_HEADER_SIZE, packet_dimension->addr_len, packet_dimension->prefix, packet_dimension->suffix);
     1891        *packet = packet_get_4(tcp_globals.net_phone, TCP_HEADER_SIZE, packet_dimension->addr_len, packet_dimension->prefix, packet_dimension->suffix);
    18951892        if(! * packet){
    18961893                return ENOMEM;
     
    19961993
    19971994int tcp_release_and_return(packet_t packet, int result){
    1998         pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
     1995        pq_release(tcp_globals.net_phone, packet_get_id(packet));
    19991996        return result;
    20001997}
     1998
     1999#ifdef CONFIG_NETWORKING_modular
     2000
     2001#include <tl_standalone.h>
    20012002
    20022003/** Default thread for new connections.
     
    20262027               
    20272028                /* Process the message */
    2028                 int res = tl_module_message_standalone(callid, &call, &answer,
    2029                     &answer_count);
     2029                int res = tl_module_message(callid, &call, &answer, &answer_count);
    20302030               
    20312031                /* End if said to either by the message or the processing result */
     
    20512051        ERROR_DECLARE;
    20522052       
     2053        /* Print the module label */
     2054        printf("Task %d - %s\n", task_get_id(), NAME);
     2055       
    20532056        /* Start the module */
    2054         if (ERROR_OCCURRED(tl_module_start_standalone(tl_client_connection)))
     2057        if (ERROR_OCCURRED(tl_module_start(tl_client_connection))) {
     2058                printf(" - ERROR %i\n", ERROR_CODE);
    20552059                return ERROR_CODE;
     2060        }
    20562061       
    20572062        return EOK;
    20582063}
    20592064
     2065#endif /* CONFIG_NETWORKING_modular */
     2066
    20602067/** @}
    20612068 */
Note: See TracChangeset for help on using the changeset viewer.