Changeset 1300:3f1e79e1273e in freeDiameter for libfdproto/messages.c
- Timestamp:
- Aug 30, 2015, 2:11:55 AM (9 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/messages.c
r1298 r1300 2037 2037 { 2038 2038 struct dict_avp_data dictdata; 2039 struct dict_type_data derivedtypedata; 2040 struct dict_object * avp_derived_type = NULL; 2039 2041 uint8_t * source; 2040 2042 … … 2217 2219 break; 2218 2220 2221 } 2222 2223 /* Is there a derived type check function ? */ 2224 CHECK_FCT ( fd_dict_search ( dict, DICT_TYPE, TYPE_OF_AVP, avp->avp_model, &avp_derived_type, 0) ); 2225 if (avp_derived_type) { 2226 CHECK_FCT( fd_dict_getval(avp_derived_type, &derivedtypedata) ); 2227 if (derivedtypedata.type_check != NULL) { 2228 char * err; 2229 int ret = (*derivedtypedata.type_check)( derivedtypedata.type_check_param, &avp->avp_storage, &err ); 2230 2231 if (ret != 0) { 2232 TRACE_DEBUG(INFO, "The AVP failed to pass the dictionary validation"); 2233 if (error_info) { 2234 error_info->pei_errcode = "DIAMETER_INVALID_AVP_VALUE"; 2235 error_info->pei_avp = avp; 2236 strncpy(error_message, err, sizeof(error_message)); 2237 error_info->pei_message = error_message; 2238 } else { 2239 char * buf = NULL; 2240 size_t buflen; 2241 CHECK_MALLOC(fd_msg_dump_treeview(&buf, &buflen, NULL, avp, NULL, 0, 0)); 2242 LOG_E("Invalid AVP: %s", buf); 2243 free(buf); 2244 } 2245 return ret; /* should we just return EBADMSG? */ 2246 } 2247 } 2219 2248 } 2220 2249
Note: See TracChangeset
for help on using the changeset viewer.