Navigation


Changeset 804:c5b7d4a2cc77 in freeDiameter for libfdcore/dict_base_proto.c


Ignore:
Timestamp:
Aug 22, 2012, 7:22:46 AM (12 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Log message dumps in one call to the dump function to avoid fragmentation in the log files, as per Zack comment

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdcore/dict_base_proto.c

    r740 r804  
    145145
    146146/* Dump the content of an Address AVP */
    147 static void Address_dump(union avp_value * avp_value, FILE * fstr)
     147static char * Address_dump(union avp_value * avp_value)
    148148{
     149        char * ret;
     150        #define STR_LEN 1024
    149151        union {
    150152                sSA     sa;
     
    157159        memset(&s, 0, sizeof(s));
    158160       
     161        CHECK_MALLOC_DO( ret = malloc(STR_LEN), return NULL );
     162       
    159163        /* The first two octets represent the address family, http://www.iana.org/assignments/address-family-numbers/ */
    160164        if (avp_value->os.len < 2) {
    161                 fd_log_debug_fstr(fstr, "[invalid length: %d]", avp_value->os.len);
    162                 return;
     165                snprintf(ret, STR_LEN, "[invalid length: %d]", avp_value->os.len);
     166                return ret;
    163167        }
    164168       
     
    170174                        s.sa.sa_family = AF_INET;
    171175                        if (avp_value->os.len != 6) {
    172                                 fd_log_debug_fstr(fstr, "[invalid IP length: %d]", avp_value->os.len);
    173                                 return;
     176                                snprintf(ret, STR_LEN, "[invalid IP length: %d]", avp_value->os.len);
     177                                return ret;
    174178                        }
    175179                        memcpy(&s.sin.sin_addr.s_addr, avp_value->os.data + 2, 4);
     
    179183                        s.sa.sa_family = AF_INET6;
    180184                        if (avp_value->os.len != 18) {
    181                                 fd_log_debug_fstr(fstr, "[invalid IP6 length: %d]", avp_value->os.len);
    182                                 return;
     185                                snprintf(ret, STR_LEN, "[invalid IP6 length: %d]", avp_value->os.len);
     186                                return ret;
    183187                        }
    184188                        memcpy(&s.sin6.sin6_addr.s6_addr, avp_value->os.data + 2, 16);
    185189                        break;
    186190                default:
    187                         fd_log_debug_fstr(fstr, "[unsupported family: 0x%hx]", fam);
    188                         return;
     191                        snprintf(ret, STR_LEN, "[unsupported family: 0x%hx]", fam);
     192                        return ret;
    189193        }
    190194       
    191195        {
    192                 char addrbuf[INET6_ADDRSTRLEN];
    193                 int rc = getnameinfo(&s.sa, sSAlen(&s.sa), addrbuf, INET6_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
     196                int rc = getnameinfo(&s.sa, sSAlen(&s.sa), ret, STR_LEN, NULL, 0, NI_NUMERICHOST);
    194197                if (rc)
    195                         fd_log_debug_fstr(fstr, "%s", (char *)gai_strerror(rc));
    196                 else
    197                         fd_log_debug_fstr(fstr, "%s", addrbuf);
    198                
     198                        snprintf(ret, STR_LEN, "%s", (char *)gai_strerror(rc));
    199199        }
     200       
     201        return ret;
    200202}
    201203
    202 static void UTF8String_dump(union avp_value * avp_value, FILE * fstr)
     204static char * UTF8String_dump(union avp_value * avp_value)
    203205{
    204         size_t len = avp_value->os.len;
    205         if (len > 42)
    206                 len = 42; /* avoid very long strings */
    207         fd_log_debug_fstr(fstr, "%.*s", len, avp_value->os.data);
     206        return strndup((char *)avp_value->os.data, 42); /* avoid very long strings */
    208207}
    209208
Note: See TracChangeset for help on using the changeset viewer.