Ignore:
File:
1 edited

Legend:

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

    rc0f3460 r451481c8  
    8282        if (lsock != NULL)
    8383                assoc->ident.local = *lsock;
    84        
    8584        if (fsock != NULL)
    8685                assoc->ident.foreign = *fsock;
     
    252251                sp.foreign = *fsock;
    253252
    254         if ((inet_addr_is_any(&sp.foreign.addr)) ||
    255             (sp.foreign.port == UDP_PORT_ANY))
     253        if (sp.foreign.addr.ipv4 == 0 || sp.foreign.port == 0)
    256254                return EINVAL;
    257255
     
    281279
    282280        fibril_mutex_lock(&assoc->lock);
    283         while (list_empty(&assoc->rcv_queue) && !assoc->reset) {
     281        while (list_empty(&assoc->rcv_queue)) {
    284282                log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_recv() - waiting");
    285283                fibril_condvar_wait(&assoc->rcv_queue_cv, &assoc->lock);
    286         }
    287 
    288         if (assoc->reset) {
    289                 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_recv() - association was reset");
    290                 fibril_mutex_unlock(&assoc->lock);
    291                 return ECONNABORTED;
    292284        }
    293285
     
    331323}
    332324
    333 /** Reset association.
    334  *
    335  * This causes any pendingreceive operations to return immediately with
    336  * UDP_ERESET.
    337  */
    338 void udp_assoc_reset(udp_assoc_t *assoc)
    339 {
    340         fibril_mutex_lock(&assoc->lock);
    341         assoc->reset = true;
    342         fibril_condvar_broadcast(&assoc->rcv_queue_cv);
    343         fibril_mutex_unlock(&assoc->lock);
    344 }
    345 
    346325static int udp_assoc_queue_msg(udp_assoc_t *assoc, udp_sockpair_t *sp,
    347326    udp_msg_t *msg)
     
    372351static bool udp_socket_match(udp_sock_t *sock, udp_sock_t *patt)
    373352{
    374         log_msg(LOG_DEFAULT, LVL_DEBUG,
    375             "udp_socket_match(sock=(%u), pat=(%u))", sock->port, patt->port);
    376        
    377         if ((!inet_addr_is_any(&patt->addr)) &&
    378             (!inet_addr_compare(&patt->addr, &sock->addr)))
     353        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_socket_match(sock=(%x,%u), pat=(%x,%u))",
     354            sock->addr.ipv4, sock->port, patt->addr.ipv4, patt->port);
     355
     356        if (patt->addr.ipv4 != UDP_IPV4_ANY &&
     357            patt->addr.ipv4 != sock->addr.ipv4)
    379358                return false;
    380        
    381         if ((patt->port != UDP_PORT_ANY) &&
    382             (patt->port != sock->port))
     359
     360        if (patt->port != UDP_PORT_ANY &&
     361            patt->port != sock->port)
    383362                return false;
    384        
     363
    385364        log_msg(LOG_DEFAULT, LVL_DEBUG, " -> match");
    386        
     365
    387366        return true;
    388367}
     
    416395{
    417396        log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_find_ref(%p)", sp);
    418        
     397
    419398        fibril_mutex_lock(&assoc_list_lock);
    420        
     399
    421400        list_foreach(assoc_list, link) {
    422401                udp_assoc_t *assoc = list_get_instance(link, udp_assoc_t, link);
    423402                udp_sockpair_t *asp = &assoc->ident;
    424                
     403                log_msg(LOG_DEFAULT, LVL_DEBUG, "compare with assoc (f:(%x,%u), l:(%x,%u))",
     404                    asp->foreign.addr.ipv4, asp->foreign.port,
     405                    asp->local.addr.ipv4, asp->local.port);
     406
    425407                /* Skip unbound associations */
    426408                if (asp->local.port == UDP_PORT_ANY)
    427409                        continue;
    428                
     410
    429411                if (udp_sockpair_match(sp, asp)) {
    430412                        log_msg(LOG_DEFAULT, LVL_DEBUG, "Returning assoc %p", assoc);
     
    434416                }
    435417        }
    436        
     418
    437419        fibril_mutex_unlock(&assoc_list_lock);
    438420        return NULL;
Note: See TracChangeset for help on using the changeset viewer.