Changeset 99ea91b2 in mainline


Ignore:
Timestamp:
2015-04-20T21:11:29Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
779541b
Parents:
fab2746
Message:

UDP data notification needs to be asynchronous.

Location:
uspace/srv/net/udp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/udp/assoc.c

    rfab2746 r99ea91b2  
    365365        log_msg(LOG_DEFAULT, LVL_NOTE, "call assoc->cb->recv_msg");
    366366        assoc->cb->recv_msg(assoc->cb_arg, rsp, msg);
     367        udp_assoc_delref(assoc);
    367368}
    368369
  • uspace/srv/net/udp/msg.c

    rfab2746 r99ea91b2  
    5050void udp_msg_delete(udp_msg_t *msg)
    5151{
     52        free(msg->data);
    5253        free(msg);
    5354}
  • uspace/srv/net/udp/pdu.c

    rfab2746 r99ea91b2  
    196196                return ENOMEM;
    197197
    198         nmsg->data = text;
    199198        nmsg->data_size = length - sizeof(udp_header_t);
     199        nmsg->data = malloc(nmsg->data_size);
     200        if (nmsg->data == NULL)
     201                return ENOMEM;
     202
     203        memcpy(nmsg->data, text, nmsg->data_size);
    200204
    201205        *msg = nmsg;
  • uspace/srv/net/udp/service.c

    rfab2746 r99ea91b2  
    6565        udp_crcv_queue_entry_t *rqe;
    6666
    67         log_msg(LOG_DEFAULT, LVL_NOTE, "udp_cassoc_queue_msg(%p, %p, %p)",
     67        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_cassoc_queue_msg(%p, %p, %p)",
    6868            cassoc, sp, msg);
    6969
     
    8686}
    8787
    88 
    89 static int udp_ev_data(udp_client_t *client)
     88static void udp_ev_data(udp_client_t *client)
    9089{
    9190        async_exch_t *exch;
    9291
    93         log_msg(LOG_DEFAULT, LVL_NOTE, "udp_ev_data()");
     92        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_ev_data()");
    9493
    9594        exch = async_exchange_begin(client->sess);
    96         sysarg_t rc = async_req_0_0(exch, UDP_EV_DATA);
     95        aid_t req = async_send_0(exch, UDP_EV_DATA, NULL);
    9796        async_exchange_end(exch);
    9897
    99         return rc;
     98        async_forget(req);
    10099}
    101100
     
    174173        (void) inet_addr_format(&epp->remote.addr, &ra);
    175174
    176         log_msg(LOG_DEFAULT, LVL_NOTE, "udp_assoc_create_impl la=%s ra=%s",
     175        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_create_impl la=%s ra=%s",
    177176            la, ra);
    178177
     
    488487        enext = udp_rmsg_get_next(client);
    489488        if (enext == NULL) {
     489                log_msg(LOG_DEFAULT, LVL_DEBUG, "usg_rmsg_discard_srv: enext==NULL");
    490490                async_answer_0(iid, ENOENT);
    491491                return;
     
    494494        list_remove(&enext->link);
    495495        udp_msg_delete(enext->msg);
     496        free(enext);
    496497        async_answer_0(iid, EOK);
    497498}
     
    510511
    511512        while (true) {
    512                 log_msg(LOG_DEFAULT, LVL_NOTE, "udp_client_conn: wait req");
     513                log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn: wait req");
    513514                ipc_call_t call;
    514515                ipc_callid_t callid = async_get_call(&call);
    515516                sysarg_t method = IPC_GET_IMETHOD(call);
    516517
    517                 log_msg(LOG_DEFAULT, LVL_NOTE, "udp_client_conn: method=%d",
     518                log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn: method=%d",
    518519                    (int)method);
    519520                if (!method) {
Note: See TracChangeset for help on using the changeset viewer.