Changeset 159

Show
Ignore:
Timestamp:
05/31/99 23:50:20 (15 years ago)
Author:
ucaccsp
Message:

Added mbus_addr_valid()
Added timeout to mbus_recv()

Location:
common/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • common/trunk/MODS

    r157 r159  
    5151          and don't worry about the possible buffer overflow problems.  
    5252          Reported by Holger Wirtz. 
     53        - Added mbus_addr_valid() 
     54        - Added timeout to mbus_recv() 
    5355 
    5456 
  • common/trunk/src/mbus.c

    r156 r159  
    563563} 
    564564 
    565 static int addr_known(struct mbus *m, char *a) 
     565int mbus_addr_valid(struct mbus *m, char *addr) 
    566566{ 
    567567        int     i; 
    568568 
    569569        for (i = 0; i < m->num_other_addr; i++) { 
    570                 if (mbus_addr_match(m->other_addr[i], a)) { 
     570                if (mbus_addr_match(m->other_addr[i], addr)) { 
    571571                        return TRUE; 
    572572                } 
     
    843843        int              alen = strlen(cmnd) + strlen(args) + 4; 
    844844 
    845         if (reliable && !addr_known(m, dest)) { 
     845        if (reliable && !mbus_addr_valid(m, dest)) { 
    846846                debug_msg("Trying to send reliably to an unknown address...\n"); 
    847847#ifdef NDEF 
     
    10881088} 
    10891089 
    1090 int mbus_recv(struct mbus *m, void *data) 
     1090int mbus_recv(struct mbus *m, void *data, struct timeval *timeout) 
    10911091{ 
    10921092        char            *auth, *ver, *src, *dst, *ack, *r, *cmd, *param; 
     
    10951095        char            ackbuf[MBUS_ACK_BUF_SIZE]; 
    10961096        char            digest[16]; 
    1097         struct timeval  t; 
    10981097        unsigned char   initVec[8] = {0,0,0,0,0,0,0,0}; 
    10991098 
     
    11041103                udp_fd_zero(); 
    11051104                udp_fd_set(m->s); 
    1106                 t.tv_sec  = 0; /* timeout appears to get corrupted on w32 */ 
    1107                 t.tv_usec = 0; /* sometimes, reset to zero everytime.     */  
    1108                 if ((udp_select(&t) > 0) && udp_fd_isset(m->s)) { 
     1105                if ((udp_select(timeout) > 0) && udp_fd_isset(m->s)) { 
    11091106                        buffer_len = udp_recv(m->s, buffer, MBUS_BUF_SIZE); 
    11101107                        if (buffer_len > 0) { 
     
    12151212                                /* ...if an ACK was requested, send one... */ 
    12161213                                if (strcmp(r, "R") == 0) { 
    1217                                         char *newsrc = (char *) xmalloc(strlen(src) + 3); 
     1214                                        char            *newsrc = (char *) xmalloc(strlen(src) + 3); 
     1215                                        struct timeval   t; 
     1216 
    12181217                                        sprintf(newsrc, "(%s)", src);   /* Yes, this is a kludge. */ 
    12191218                                        gettimeofday(&t, NULL); 
  • common/trunk/src/mbus.h

    r136 r159  
    4747void         mbus_exit(struct mbus *m); 
    4848void         mbus_addr(struct mbus *m, char *addr); 
     49int          mbus_addr_valid(struct mbus *m, char *addr); 
    4950void         mbus_qmsg(struct mbus *m, char *dest, const char *cmnd, const char *args, int reliable); 
    5051void         mbus_qmsgf(struct mbus *m, char *dest, int reliable, const char *cmnd, const char *format, ...); 
    5152void         mbus_send(struct mbus *m); 
    52 int          mbus_recv(struct mbus *m, void *data); 
     53int          mbus_recv(struct mbus *m, void *data, struct timeval *timeout); 
    5354void         mbus_parse_init(struct mbus *m, char *str); 
    5455void         mbus_parse_done(struct mbus *m);