
  PROCEDURE [INLINE] nlp$sk_tcp_ret_rec_data_entry
    (VAR tcp_connection: ^nlt$tcp_socket_layer;
     VAR received_data: ^nlt$tcp_received_data);

?? PUSH (LISTEXT := ON) ??

    VAR
      pool_entry: ^nlt$tcp_received_data,
      pool_size: integer;

    IF (tcp_connection^.state <> nlc$tcp_conn_closed) AND
          (tcp_connection^.state <> nlc$tcp_conn_terminated) THEN
      received_data^.next_entry := NIL;
      IF tcp_connection^.available_data_pool = NIL THEN
        tcp_connection^.available_data_pool := received_data;
      ELSE { calculate pool size
        pool_size := 1;
        pool_entry := tcp_connection^.available_data_pool;
        WHILE pool_entry^.next_entry <> NIL DO
          pool_entry := pool_entry^.next_entry;
          pool_size := pool_size + 1;
        WHILEND;
        IF pool_size < nlc$tcp_max_pool_size THEN
          pool_entry^.next_entry := received_data;
        ELSE
          FREE received_data IN nav$network_paged_heap^;
        IFEND;
      IFEND;
      received_data := NIL;
    ELSE { tcp connection closed or terminated
      FREE received_data IN nav$network_paged_heap^;
    IFEND;

  PROCEND nlp$sk_tcp_ret_rec_data_entry;

*copy nlh$sk_tcp_ret_rec_data_entry

*copyc nav$network_paged_heap
*copyc nlc$tcp_max_pool_size
*copyc nlt$tcp_received_data
*copyc nlt$tcp_socket_layer
?? POP ??
