Mercurial > hg > freeDiameter
comparison extensions/dbg_msg_dumps/dbg_msg_dumps.c @ 1301:50fb308e84f7
Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Sun, 30 Aug 2015 01:58:21 +0800 |
parents | 035f489b845b |
children | 84a3c9c4b834 |
comparison
equal
deleted
inserted
replaced
1300:3f1e79e1273e | 1301:50fb308e84f7 |
---|---|
102 struct fd_cnx_rcvdata *rcv_data = other; | 102 struct fd_cnx_rcvdata *rcv_data = other; |
103 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); | 103 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); |
104 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); | 104 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); |
105 } | 105 } |
106 break; | 106 break; |
107 case HOOK_MESSAGE_PARSING_ERROR2: | |
108 LOG_E("PARSING ERROR, returning:"); | |
109 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL); | |
110 break; | |
107 case HOOK_MESSAGE_ROUTING_ERROR: | 111 case HOOK_MESSAGE_ROUTING_ERROR: |
108 LOG_E("ROUTING ERROR '%s' for: ", (char *)other); | 112 LOG_E("ROUTING ERROR '%s' for: ", (char *)other); |
109 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL); | 113 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL); |
110 break; | 114 break; |
111 case HOOK_MESSAGE_DROPPED: | 115 case HOOK_MESSAGE_DROPPED: |
195 struct fd_cnx_rcvdata *rcv_data = other; | 199 struct fd_cnx_rcvdata *rcv_data = other; |
196 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); | 200 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); |
197 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); | 201 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); |
198 } | 202 } |
199 break; | 203 break; |
204 case HOOK_MESSAGE_PARSING_ERROR2: | |
205 LOG_E("PARSING ERROR, returning: %s", buf); | |
206 break; | |
200 case HOOK_MESSAGE_ROUTING_ERROR: | 207 case HOOK_MESSAGE_ROUTING_ERROR: |
201 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf); | 208 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf); |
202 break; | 209 break; |
203 case HOOK_MESSAGE_DROPPED: | 210 case HOOK_MESSAGE_DROPPED: |
204 LOG_E("DROPPED '%s' %s", (char *)other, buf); | 211 LOG_E("DROPPED '%s' %s", (char *)other, buf); |
277 struct fd_cnx_rcvdata *rcv_data = other; | 284 struct fd_cnx_rcvdata *rcv_data = other; |
278 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); | 285 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break); |
279 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); | 286 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf); |
280 } | 287 } |
281 break; | 288 break; |
289 case HOOK_MESSAGE_PARSING_ERROR2: | |
290 LOG_E("PARSING ERROR, returning: %s", buf); | |
291 break; | |
282 case HOOK_MESSAGE_ROUTING_ERROR: | 292 case HOOK_MESSAGE_ROUTING_ERROR: |
283 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf); | 293 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf); |
284 break; | 294 break; |
285 case HOOK_MESSAGE_DROPPED: | 295 case HOOK_MESSAGE_DROPPED: |
286 LOG_E("DROPPED '%s' %s", (char *)other, buf); | 296 LOG_E("DROPPED '%s' %s", (char *)other, buf); |
348 CHECK_PARAMS_DO( *endp == '\0', { | 358 CHECK_PARAMS_DO( *endp == '\0', { |
349 LOG_E("Configuration parameter must be in the form \"0xNNNN\""); | 359 LOG_E("Configuration parameter must be in the form \"0xNNNN\""); |
350 return EINVAL; }); | 360 return EINVAL; }); |
351 } | 361 } |
352 | 362 |
353 mask_errors = HOOK_MASK( HOOK_MESSAGE_FAILOVER, HOOK_MESSAGE_PARSING_ERROR, HOOK_MESSAGE_ROUTING_ERROR, HOOK_MESSAGE_DROPPED ); | 363 mask_errors = HOOK_MASK( HOOK_MESSAGE_FAILOVER, HOOK_MESSAGE_PARSING_ERROR, HOOK_MESSAGE_PARSING_ERROR2, HOOK_MESSAGE_ROUTING_ERROR, HOOK_MESSAGE_DROPPED ); |
354 mask_sndrcv = HOOK_MASK( HOOK_MESSAGE_RECEIVED, HOOK_MESSAGE_SENT ); /* We don t access SENDING hook here */ | 364 mask_sndrcv = HOOK_MASK( HOOK_MESSAGE_RECEIVED, HOOK_MESSAGE_SENT ); /* We don t access SENDING hook here */ |
355 mask_routing= HOOK_MASK( HOOK_MESSAGE_LOCAL, HOOK_MESSAGE_ROUTING_FORWARD, HOOK_MESSAGE_ROUTING_LOCAL ); | 365 mask_routing= HOOK_MASK( HOOK_MESSAGE_LOCAL, HOOK_MESSAGE_ROUTING_FORWARD, HOOK_MESSAGE_ROUTING_LOCAL ); |
356 mask_peers = HOOK_MASK( HOOK_PEER_CONNECT_FAILED, HOOK_PEER_CONNECT_SUCCESS ); | 366 mask_peers = HOOK_MASK( HOOK_PEER_CONNECT_FAILED, HOOK_PEER_CONNECT_SUCCESS ); |
357 | 367 |
358 mask_quiet = (dump_level & HK_ERRORS_QUIET) ? mask_errors : 0; | 368 mask_quiet = (dump_level & HK_ERRORS_QUIET) ? mask_errors : 0; |