Ignore:
Timestamp:
Nov 6, 2005 7:46:48 PM (14 years ago)
Author:
bennylp
Message:

Tested UDP echo server on Win2K

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/main/pjlib/src/pjlib-test/udp_echo_srv_ioqueue.c

    r11 r17  
    1515    int                  is_pending; 
    1616    pj_status_t          last_err; 
     17    pj_sockaddr_in       addr; 
     18    int                  addrlen; 
    1719}; 
    1820 
     
    2931 
    3032        if (bytes_received < 0) { 
    31             PJ_LOG(3,("","...error receiving data, received=%d",  
    32                       bytes_received)); 
     33            if (-bytes_received != recv_rec->last_err) { 
     34                recv_rec->last_err = -bytes_received; 
     35                app_perror("...error receiving data", -bytes_received); 
     36            } 
    3337        } else if (bytes_received == 0) { 
    3438            /* note: previous error, or write callback */ 
     
    3943                pj_ssize_t sent = bytes_received; 
    4044                pj_memcpy(send_rec->buffer, recv_rec->buffer, bytes_received); 
    41                 rc = pj_ioqueue_send(key, &send_rec->op_key_,  
    42                                      send_rec->buffer, &sent, 0); 
     45                pj_memcpy(&send_rec->addr, &recv_rec->addr, recv_rec->addrlen); 
     46                send_rec->addrlen = recv_rec->addrlen; 
     47                rc = pj_ioqueue_sendto(key, &send_rec->op_key_,  
     48                                       send_rec->buffer, &sent, 0, 
     49                                       &send_rec->addr, send_rec->addrlen); 
    4350                send_rec->is_pending = (rc==PJ_EPENDING); 
    4451 
    4552                if (rc!=PJ_SUCCESS && rc!=PJ_EPENDING) { 
    46                     app_perror("...send error", rc); 
     53                    app_perror("...send error(1)", rc); 
    4754                } 
    4855            } 
     
    5158        if (!send_rec->is_pending) { 
    5259            bytes_received = recv_rec->size; 
    53             rc = pj_ioqueue_recv(key, &recv_rec->op_key_,  
    54                                  recv_rec->buffer, &bytes_received, 0); 
     60            rc = pj_ioqueue_recvfrom(key, &recv_rec->op_key_,  
     61                                     recv_rec->buffer, &bytes_received, 0, 
     62                                     &recv_rec->addr, &recv_rec->addrlen); 
    5563            recv_rec->is_pending = (rc==PJ_EPENDING); 
    5664            if (rc == PJ_SUCCESS) { 
     
    8189 
    8290    if (bytes_sent <= 0) { 
    83         pj_status_t rc = pj_get_netos_error(); 
    84         app_perror("...send error", rc); 
     91        pj_status_t rc = -bytes_sent; 
     92        if (rc != send_rec->last_err) { 
     93            send_rec->last_err = rc; 
     94            app_perror("...send error(2)", rc); 
     95        } 
    8596    } 
    8697 
     
    102113    read_op.buffer = recv_buf; 
    103114    read_op.size = sizeof(recv_buf); 
     115    read_op.addrlen = sizeof(read_op.addr); 
     116 
    104117    write_op.peer = &read_op; 
    105118    write_op.is_pending = 0; 
     
    109122 
    110123    length = sizeof(recv_buf); 
    111     rc = pj_ioqueue_recv(key, &read_op.op_key_, recv_buf, &length, 0); 
     124    rc = pj_ioqueue_recvfrom(key, &read_op.op_key_, recv_buf, &length, 0, 
     125                             &read_op.addr, &read_op.addrlen); 
    112126    if (rc == PJ_SUCCESS) { 
    113127        read_op.is_pending = 1; 
Note: See TracChangeset for help on using the changeset viewer.