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;
"Welcome to our mercurial repository"