Mercurial > hg > freeDiameter
comparison freeDiameter/tests/testdisp.c @ 90:2c9444152e4b
Added the dispatch thread code
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Mon, 07 Dec 2009 18:32:30 +0900 |
parents | c5c99c73c2bf |
children | 95a784729cac |
comparison
equal
deleted
inserted
replaced
89:3f8b437bcb66 | 90:2c9444152e4b |
---|---|
103 struct dict_object * enu1, * enu2; | 103 struct dict_object * enu1, * enu2; |
104 struct msg * msg = NULL; | 104 struct msg * msg = NULL; |
105 enum disp_action action; | 105 enum disp_action action; |
106 struct disp_hdl * hdl[NB_CB]; | 106 struct disp_hdl * hdl[NB_CB]; |
107 struct disp_when when; | 107 struct disp_when when; |
108 const char * ec; | |
108 | 109 |
109 /* First, initialize the daemon modules */ | 110 /* First, initialize the daemon modules */ |
110 INIT_FD(); | 111 INIT_FD(); |
111 | 112 |
112 /* Create a dummy session, we don't use it anyway */ | 113 /* Create a dummy session, we don't use it anyway */ |
147 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, NULL, &hdl[0] ) ); | 148 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, NULL, &hdl[0] ) ); |
148 | 149 |
149 /* Check this handler is called for a message */ | 150 /* Check this handler is called for a message */ |
150 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); | 151 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); |
151 memset(cbcalled, 0, sizeof(cbcalled)); | 152 memset(cbcalled, 0, sizeof(cbcalled)); |
152 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 153 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
153 CHECK( 1, cbcalled[0] ); | 154 CHECK( 1, cbcalled[0] ); |
154 CHECK( DISP_ACT_CONT, action ); | 155 CHECK( DISP_ACT_CONT, action ); |
155 | 156 |
156 /* Delete the message */ | 157 /* Delete the message */ |
157 CHECK( 0, fd_msg_free( msg ) ); | 158 CHECK( 0, fd_msg_free( msg ) ); |
171 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) ); | 172 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) ); |
172 | 173 |
173 /* Check the callbacks are called as appropriate */ | 174 /* Check the callbacks are called as appropriate */ |
174 memset(cbcalled, 0, sizeof(cbcalled)); | 175 memset(cbcalled, 0, sizeof(cbcalled)); |
175 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); | 176 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); |
176 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 177 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
177 CHECK( 1, cbcalled[0] ); | 178 CHECK( 1, cbcalled[0] ); |
178 CHECK( 0, cbcalled[1] ); | 179 CHECK( 0, cbcalled[1] ); |
179 CHECK( 0, cbcalled[2] ); | 180 CHECK( 0, cbcalled[2] ); |
180 CHECK( 0, cbcalled[3] ); | 181 CHECK( 0, cbcalled[3] ); |
181 CHECK( 0, cbcalled[4] ); | 182 CHECK( 0, cbcalled[4] ); |
182 CHECK( DISP_ACT_CONT, action ); | 183 CHECK( DISP_ACT_CONT, action ); |
183 CHECK( 0, fd_msg_free( msg ) ); | 184 CHECK( 0, fd_msg_free( msg ) ); |
184 | 185 |
185 memset(cbcalled, 0, sizeof(cbcalled)); | 186 memset(cbcalled, 0, sizeof(cbcalled)); |
186 msg = new_msg( 1, cmd1, avp1, NULL, 0 ); | 187 msg = new_msg( 1, cmd1, avp1, NULL, 0 ); |
187 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 188 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
188 CHECK( 1, cbcalled[0] ); | 189 CHECK( 1, cbcalled[0] ); |
189 CHECK( 1, cbcalled[1] ); | 190 CHECK( 1, cbcalled[1] ); |
190 CHECK( 0, cbcalled[2] ); | 191 CHECK( 0, cbcalled[2] ); |
191 CHECK( 0, cbcalled[3] ); | 192 CHECK( 0, cbcalled[3] ); |
192 CHECK( 0, cbcalled[4] ); | 193 CHECK( 0, cbcalled[4] ); |
193 CHECK( DISP_ACT_CONT, action ); | 194 CHECK( DISP_ACT_CONT, action ); |
194 CHECK( 0, fd_msg_free( msg ) ); | 195 CHECK( 0, fd_msg_free( msg ) ); |
195 | 196 |
196 memset(cbcalled, 0, sizeof(cbcalled)); | 197 memset(cbcalled, 0, sizeof(cbcalled)); |
197 msg = new_msg( 2, cmd1, avp1, NULL, 0 ); | 198 msg = new_msg( 2, cmd1, avp1, NULL, 0 ); |
198 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 199 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
199 CHECK( 1, cbcalled[0] ); | 200 CHECK( 1, cbcalled[0] ); |
200 CHECK( 0, cbcalled[1] ); | 201 CHECK( 0, cbcalled[1] ); |
201 CHECK( 1, cbcalled[2] ); | 202 CHECK( 1, cbcalled[2] ); |
202 CHECK( 1, cbcalled[3] ); | 203 CHECK( 1, cbcalled[3] ); |
203 CHECK( 1, cbcalled[4] ); | 204 CHECK( 1, cbcalled[4] ); |
227 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) ); /* cmd2 (avp1 ignored) */ | 228 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) ); /* cmd2 (avp1 ignored) */ |
228 | 229 |
229 /* Check the callbacks are called as appropriate */ | 230 /* Check the callbacks are called as appropriate */ |
230 memset(cbcalled, 0, sizeof(cbcalled)); | 231 memset(cbcalled, 0, sizeof(cbcalled)); |
231 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); | 232 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); |
232 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 233 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
233 CHECK( 1, cbcalled[0] ); | 234 CHECK( 1, cbcalled[0] ); |
234 CHECK( 1, cbcalled[1] ); | 235 CHECK( 1, cbcalled[1] ); |
235 CHECK( 0, cbcalled[2] ); | 236 CHECK( 0, cbcalled[2] ); |
236 CHECK( 0, cbcalled[3] ); | 237 CHECK( 0, cbcalled[3] ); |
237 CHECK( DISP_ACT_CONT, action ); | 238 CHECK( DISP_ACT_CONT, action ); |
238 CHECK( 0, fd_msg_free( msg ) ); | 239 CHECK( 0, fd_msg_free( msg ) ); |
239 | 240 |
240 memset(cbcalled, 0, sizeof(cbcalled)); | 241 memset(cbcalled, 0, sizeof(cbcalled)); |
241 msg = new_msg( 2, cmd1, avp1, NULL, 0 ); | 242 msg = new_msg( 2, cmd1, avp1, NULL, 0 ); |
242 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 243 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
243 CHECK( 1, cbcalled[0] ); | 244 CHECK( 1, cbcalled[0] ); |
244 CHECK( 1, cbcalled[1] ); | 245 CHECK( 1, cbcalled[1] ); |
245 CHECK( 1, cbcalled[2] ); | 246 CHECK( 1, cbcalled[2] ); |
246 CHECK( 0, cbcalled[3] ); | 247 CHECK( 0, cbcalled[3] ); |
247 CHECK( DISP_ACT_CONT, action ); | 248 CHECK( DISP_ACT_CONT, action ); |
248 CHECK( 0, fd_msg_free( msg ) ); | 249 CHECK( 0, fd_msg_free( msg ) ); |
249 | 250 |
250 memset(cbcalled, 0, sizeof(cbcalled)); | 251 memset(cbcalled, 0, sizeof(cbcalled)); |
251 msg = new_msg( 2, cmd2, avp1, NULL, 0 ); | 252 msg = new_msg( 2, cmd2, avp1, NULL, 0 ); |
252 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 253 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
253 CHECK( 1, cbcalled[0] ); | 254 CHECK( 1, cbcalled[0] ); |
254 CHECK( 0, cbcalled[1] ); | 255 CHECK( 0, cbcalled[1] ); |
255 CHECK( 0, cbcalled[2] ); | 256 CHECK( 0, cbcalled[2] ); |
256 CHECK( 1, cbcalled[3] ); | 257 CHECK( 1, cbcalled[3] ); |
257 CHECK( DISP_ACT_CONT, action ); | 258 CHECK( DISP_ACT_CONT, action ); |
258 CHECK( 0, fd_msg_free( msg ) ); | 259 CHECK( 0, fd_msg_free( msg ) ); |
259 | 260 |
260 memset(cbcalled, 0, sizeof(cbcalled)); | 261 memset(cbcalled, 0, sizeof(cbcalled)); |
261 msg = new_msg( 1, cmd2, NULL, avp2, 0 ); | 262 msg = new_msg( 1, cmd2, NULL, avp2, 0 ); |
262 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 263 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
263 CHECK( 1, cbcalled[0] ); | 264 CHECK( 1, cbcalled[0] ); |
264 CHECK( 0, cbcalled[1] ); | 265 CHECK( 0, cbcalled[1] ); |
265 CHECK( 0, cbcalled[2] ); | 266 CHECK( 0, cbcalled[2] ); |
266 CHECK( 1, cbcalled[3] ); | 267 CHECK( 1, cbcalled[3] ); |
267 CHECK( DISP_ACT_CONT, action ); | 268 CHECK( DISP_ACT_CONT, action ); |
307 | 308 |
308 | 309 |
309 /* Check the callbacks are called as appropriate */ | 310 /* Check the callbacks are called as appropriate */ |
310 memset(cbcalled, 0, sizeof(cbcalled)); | 311 memset(cbcalled, 0, sizeof(cbcalled)); |
311 msg = new_msg( 0, cmd1, NULL, NULL, 0 ); | 312 msg = new_msg( 0, cmd1, NULL, NULL, 0 ); |
312 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 313 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
313 CHECK( 1, cbcalled[0] ); | 314 CHECK( 1, cbcalled[0] ); |
314 CHECK( 0, cbcalled[1] ); | 315 CHECK( 0, cbcalled[1] ); |
315 CHECK( 0, cbcalled[2] ); | 316 CHECK( 0, cbcalled[2] ); |
316 CHECK( 0, cbcalled[3] ); | 317 CHECK( 0, cbcalled[3] ); |
317 CHECK( 0, cbcalled[4] ); | 318 CHECK( 0, cbcalled[4] ); |
319 CHECK( DISP_ACT_CONT, action ); | 320 CHECK( DISP_ACT_CONT, action ); |
320 CHECK( 0, fd_msg_free( msg ) ); | 321 CHECK( 0, fd_msg_free( msg ) ); |
321 | 322 |
322 memset(cbcalled, 0, sizeof(cbcalled)); | 323 memset(cbcalled, 0, sizeof(cbcalled)); |
323 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); | 324 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); |
324 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 325 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
325 CHECK( 1, cbcalled[0] ); | 326 CHECK( 1, cbcalled[0] ); |
326 CHECK( 1, cbcalled[1] ); | 327 CHECK( 1, cbcalled[1] ); |
327 CHECK( 1, cbcalled[2] ); | 328 CHECK( 1, cbcalled[2] ); |
328 CHECK( 0, cbcalled[3] ); | 329 CHECK( 0, cbcalled[3] ); |
329 CHECK( 0, cbcalled[4] ); | 330 CHECK( 0, cbcalled[4] ); |
331 CHECK( DISP_ACT_CONT, action ); | 332 CHECK( DISP_ACT_CONT, action ); |
332 CHECK( 0, fd_msg_free( msg ) ); | 333 CHECK( 0, fd_msg_free( msg ) ); |
333 | 334 |
334 memset(cbcalled, 0, sizeof(cbcalled)); | 335 memset(cbcalled, 0, sizeof(cbcalled)); |
335 msg = new_msg( 1, cmd2, avp1, NULL, 0 ); | 336 msg = new_msg( 1, cmd2, avp1, NULL, 0 ); |
336 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 337 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
337 CHECK( 1, cbcalled[0] ); | 338 CHECK( 1, cbcalled[0] ); |
338 CHECK( 1, cbcalled[1] ); | 339 CHECK( 1, cbcalled[1] ); |
339 CHECK( 0, cbcalled[2] ); | 340 CHECK( 0, cbcalled[2] ); |
340 CHECK( 1, cbcalled[3] ); | 341 CHECK( 1, cbcalled[3] ); |
341 CHECK( 0, cbcalled[4] ); | 342 CHECK( 0, cbcalled[4] ); |
343 CHECK( DISP_ACT_CONT, action ); | 344 CHECK( DISP_ACT_CONT, action ); |
344 CHECK( 0, fd_msg_free( msg ) ); | 345 CHECK( 0, fd_msg_free( msg ) ); |
345 | 346 |
346 memset(cbcalled, 0, sizeof(cbcalled)); | 347 memset(cbcalled, 0, sizeof(cbcalled)); |
347 msg = new_msg( 1, cmd1, avp1, NULL, 0 ); | 348 msg = new_msg( 1, cmd1, avp1, NULL, 0 ); |
348 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 349 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
349 CHECK( 1, cbcalled[0] ); | 350 CHECK( 1, cbcalled[0] ); |
350 CHECK( 1, cbcalled[1] ); | 351 CHECK( 1, cbcalled[1] ); |
351 CHECK( 1, cbcalled[2] ); | 352 CHECK( 1, cbcalled[2] ); |
352 CHECK( 1, cbcalled[3] ); | 353 CHECK( 1, cbcalled[3] ); |
353 CHECK( 1, cbcalled[4] ); | 354 CHECK( 1, cbcalled[4] ); |
355 CHECK( DISP_ACT_CONT, action ); | 356 CHECK( DISP_ACT_CONT, action ); |
356 CHECK( 0, fd_msg_free( msg ) ); | 357 CHECK( 0, fd_msg_free( msg ) ); |
357 | 358 |
358 memset(cbcalled, 0, sizeof(cbcalled)); | 359 memset(cbcalled, 0, sizeof(cbcalled)); |
359 msg = new_msg( 1, cmd1, avp1, avp2, 0 ); | 360 msg = new_msg( 1, cmd1, avp1, avp2, 0 ); |
360 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 361 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
361 CHECK( 1, cbcalled[0] ); | 362 CHECK( 1, cbcalled[0] ); |
362 CHECK( 1, cbcalled[1] ); | 363 CHECK( 1, cbcalled[1] ); |
363 CHECK( 1, cbcalled[2] ); | 364 CHECK( 1, cbcalled[2] ); |
364 CHECK( 1, cbcalled[3] ); | 365 CHECK( 1, cbcalled[3] ); |
365 CHECK( 1, cbcalled[4] ); | 366 CHECK( 1, cbcalled[4] ); |
368 CHECK( DISP_ACT_CONT, action ); | 369 CHECK( DISP_ACT_CONT, action ); |
369 CHECK( 0, fd_msg_free( msg ) ); | 370 CHECK( 0, fd_msg_free( msg ) ); |
370 | 371 |
371 memset(cbcalled, 0, sizeof(cbcalled)); | 372 memset(cbcalled, 0, sizeof(cbcalled)); |
372 msg = new_msg( 1, cmd1, NULL, avp2, 1 ); | 373 msg = new_msg( 1, cmd1, NULL, avp2, 1 ); |
373 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 374 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
374 CHECK( 1, cbcalled[0] ); | 375 CHECK( 1, cbcalled[0] ); |
375 CHECK( 0, cbcalled[1] ); | 376 CHECK( 0, cbcalled[1] ); |
376 CHECK( 0, cbcalled[2] ); | 377 CHECK( 0, cbcalled[2] ); |
377 CHECK( 0, cbcalled[3] ); | 378 CHECK( 0, cbcalled[3] ); |
378 CHECK( 0, cbcalled[4] ); | 379 CHECK( 0, cbcalled[4] ); |
381 CHECK( DISP_ACT_CONT, action ); | 382 CHECK( DISP_ACT_CONT, action ); |
382 CHECK( 0, fd_msg_free( msg ) ); | 383 CHECK( 0, fd_msg_free( msg ) ); |
383 | 384 |
384 memset(cbcalled, 0, sizeof(cbcalled)); | 385 memset(cbcalled, 0, sizeof(cbcalled)); |
385 msg = new_msg( 1, cmd1, NULL, avp2, 2 ); | 386 msg = new_msg( 1, cmd1, NULL, avp2, 2 ); |
386 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 387 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
387 CHECK( 1, cbcalled[0] ); | 388 CHECK( 1, cbcalled[0] ); |
388 CHECK( 0, cbcalled[1] ); | 389 CHECK( 0, cbcalled[1] ); |
389 CHECK( 0, cbcalled[2] ); | 390 CHECK( 0, cbcalled[2] ); |
390 CHECK( 0, cbcalled[3] ); | 391 CHECK( 0, cbcalled[3] ); |
391 CHECK( 0, cbcalled[4] ); | 392 CHECK( 0, cbcalled[4] ); |
428 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP_ENUMVAL, &when, &hdl[3] ) ); /* avp2, enu2 + app1 */ | 429 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP_ENUMVAL, &when, &hdl[3] ) ); /* avp2, enu2 + app1 */ |
429 | 430 |
430 /* Check the callbacks are called as appropriate */ | 431 /* Check the callbacks are called as appropriate */ |
431 memset(cbcalled, 0, sizeof(cbcalled)); | 432 memset(cbcalled, 0, sizeof(cbcalled)); |
432 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); | 433 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); |
433 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 434 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
434 CHECK( 1, cbcalled[0] ); | 435 CHECK( 1, cbcalled[0] ); |
435 CHECK( 0, cbcalled[1] ); | 436 CHECK( 0, cbcalled[1] ); |
436 CHECK( 0, cbcalled[2] ); | 437 CHECK( 0, cbcalled[2] ); |
437 CHECK( 0, cbcalled[3] ); | 438 CHECK( 0, cbcalled[3] ); |
438 CHECK( DISP_ACT_CONT, action ); | 439 CHECK( DISP_ACT_CONT, action ); |
439 CHECK( 0, fd_msg_free( msg ) ); | 440 CHECK( 0, fd_msg_free( msg ) ); |
440 | 441 |
441 memset(cbcalled, 0, sizeof(cbcalled)); | 442 memset(cbcalled, 0, sizeof(cbcalled)); |
442 msg = new_msg( 1, cmd2, avp1, avp2, 0 ); | 443 msg = new_msg( 1, cmd2, avp1, avp2, 0 ); |
443 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 444 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
444 CHECK( 1, cbcalled[0] ); | 445 CHECK( 1, cbcalled[0] ); |
445 CHECK( 0, cbcalled[1] ); | 446 CHECK( 0, cbcalled[1] ); |
446 CHECK( 0, cbcalled[2] ); | 447 CHECK( 0, cbcalled[2] ); |
447 CHECK( 0, cbcalled[3] ); | 448 CHECK( 0, cbcalled[3] ); |
448 CHECK( DISP_ACT_CONT, action ); | 449 CHECK( DISP_ACT_CONT, action ); |
449 CHECK( 0, fd_msg_free( msg ) ); | 450 CHECK( 0, fd_msg_free( msg ) ); |
450 | 451 |
451 memset(cbcalled, 0, sizeof(cbcalled)); | 452 memset(cbcalled, 0, sizeof(cbcalled)); |
452 msg = new_msg( 1, cmd2, avp1, avp2, 1 ); | 453 msg = new_msg( 1, cmd2, avp1, avp2, 1 ); |
453 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 454 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
454 CHECK( 1, cbcalled[0] ); | 455 CHECK( 1, cbcalled[0] ); |
455 CHECK( 1, cbcalled[1] ); | 456 CHECK( 1, cbcalled[1] ); |
456 CHECK( 0, cbcalled[2] ); | 457 CHECK( 0, cbcalled[2] ); |
457 CHECK( 0, cbcalled[3] ); | 458 CHECK( 0, cbcalled[3] ); |
458 CHECK( DISP_ACT_CONT, action ); | 459 CHECK( DISP_ACT_CONT, action ); |
459 CHECK( 0, fd_msg_free( msg ) ); | 460 CHECK( 0, fd_msg_free( msg ) ); |
460 | 461 |
461 memset(cbcalled, 0, sizeof(cbcalled)); | 462 memset(cbcalled, 0, sizeof(cbcalled)); |
462 msg = new_msg( 1, cmd2, avp1, avp2, 2 ); | 463 msg = new_msg( 1, cmd2, avp1, avp2, 2 ); |
463 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 464 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
464 CHECK( 1, cbcalled[0] ); | 465 CHECK( 1, cbcalled[0] ); |
465 CHECK( 0, cbcalled[1] ); | 466 CHECK( 0, cbcalled[1] ); |
466 CHECK( 0, cbcalled[2] ); | 467 CHECK( 0, cbcalled[2] ); |
467 CHECK( 1, cbcalled[3] ); | 468 CHECK( 1, cbcalled[3] ); |
468 CHECK( DISP_ACT_CONT, action ); | 469 CHECK( DISP_ACT_CONT, action ); |
469 CHECK( 0, fd_msg_free( msg ) ); | 470 CHECK( 0, fd_msg_free( msg ) ); |
470 | 471 |
471 memset(cbcalled, 0, sizeof(cbcalled)); | 472 memset(cbcalled, 0, sizeof(cbcalled)); |
472 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); | 473 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); |
473 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 474 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
474 CHECK( 1, cbcalled[0] ); | 475 CHECK( 1, cbcalled[0] ); |
475 CHECK( 1, cbcalled[1] ); | 476 CHECK( 1, cbcalled[1] ); |
476 CHECK( 1, cbcalled[2] ); | 477 CHECK( 1, cbcalled[2] ); |
477 CHECK( 0, cbcalled[3] ); | 478 CHECK( 0, cbcalled[3] ); |
478 CHECK( DISP_ACT_CONT, action ); | 479 CHECK( DISP_ACT_CONT, action ); |
486 CHECK( 0, fd_msg_avp_new ( avp2, 0, &avp ) ); | 487 CHECK( 0, fd_msg_avp_new ( avp2, 0, &avp ) ); |
487 value.u32 = 2; | 488 value.u32 = 2; |
488 CHECK( 0, fd_msg_avp_setvalue ( avp, &value ) ); | 489 CHECK( 0, fd_msg_avp_setvalue ( avp, &value ) ); |
489 CHECK( 0, fd_msg_avp_add ( msg, MSG_BRW_LAST_CHILD, avp ) ); | 490 CHECK( 0, fd_msg_avp_add ( msg, MSG_BRW_LAST_CHILD, avp ) ); |
490 } | 491 } |
491 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 492 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
492 CHECK( 1, cbcalled[0] ); | 493 CHECK( 1, cbcalled[0] ); |
493 CHECK( 1, cbcalled[1] ); | 494 CHECK( 1, cbcalled[1] ); |
494 CHECK( 0, cbcalled[2] ); | 495 CHECK( 0, cbcalled[2] ); |
495 CHECK( 1, cbcalled[3] ); | 496 CHECK( 1, cbcalled[3] ); |
496 CHECK( DISP_ACT_CONT, action ); | 497 CHECK( DISP_ACT_CONT, action ); |
510 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); | 511 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); |
511 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); | 512 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); |
512 | 513 |
513 memset(cbcalled, 0, sizeof(cbcalled)); | 514 memset(cbcalled, 0, sizeof(cbcalled)); |
514 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); | 515 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); |
515 CHECK( 12345, fd_msg_dispatch ( &msg, sess, &action ) ); | 516 CHECK( 12345, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
516 CHECK( 1, cbcalled[0] ); | 517 CHECK( 1, cbcalled[0] ); |
517 CHECK( 1, cbcalled[1] ); | 518 CHECK( 1, cbcalled[1] ); |
518 CHECK( 1, cbcalled[6] ); | 519 CHECK( 1, cbcalled[6] ); |
519 CHECK( 0, cbcalled[2] ); | 520 CHECK( 0, cbcalled[2] ); |
520 CHECK( 0, cbcalled[3] ); | 521 CHECK( 0, cbcalled[3] ); |
532 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); | 533 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); |
533 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); | 534 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); |
534 | 535 |
535 memset(cbcalled, 0, sizeof(cbcalled)); | 536 memset(cbcalled, 0, sizeof(cbcalled)); |
536 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); | 537 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); |
537 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 538 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
538 CHECK( 1, cbcalled[0] ); | 539 CHECK( 1, cbcalled[0] ); |
539 CHECK( 1, cbcalled[1] ); | 540 CHECK( 1, cbcalled[1] ); |
540 CHECK( 1, cbcalled[8] ); | 541 CHECK( 1, cbcalled[8] ); |
541 CHECK( 0, cbcalled[2] ); | 542 CHECK( 0, cbcalled[2] ); |
542 CHECK( 0, cbcalled[3] ); | 543 CHECK( 0, cbcalled[3] ); |
554 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); | 555 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) ); |
555 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); | 556 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) ); |
556 | 557 |
557 memset(cbcalled, 0, sizeof(cbcalled)); | 558 memset(cbcalled, 0, sizeof(cbcalled)); |
558 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); | 559 msg = new_msg( 1, cmd1, avp1, avp2, 1 ); |
559 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 560 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
560 CHECK( 1, cbcalled[0] ); | 561 CHECK( 1, cbcalled[0] ); |
561 CHECK( 1, cbcalled[1] ); | 562 CHECK( 1, cbcalled[1] ); |
562 CHECK( 1, cbcalled[9] ); | 563 CHECK( 1, cbcalled[9] ); |
563 CHECK( 0, cbcalled[2] ); | 564 CHECK( 0, cbcalled[2] ); |
564 CHECK( 0, cbcalled[3] ); | 565 CHECK( 0, cbcalled[3] ); |
585 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) ); | 586 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) ); |
586 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) ); | 587 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) ); |
587 | 588 |
588 memset(cbcalled, 0, sizeof(cbcalled)); | 589 memset(cbcalled, 0, sizeof(cbcalled)); |
589 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 590 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
590 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 591 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
591 CHECK( 1, cbcalled[0] ); | 592 CHECK( 1, cbcalled[0] ); |
592 CHECK( 1, cbcalled[1] ); | 593 CHECK( 1, cbcalled[1] ); |
593 CHECK( 1, cbcalled[2] ); | 594 CHECK( 1, cbcalled[2] ); |
594 CHECK( 1, cbcalled[3] ); | 595 CHECK( 1, cbcalled[3] ); |
595 CHECK( 1, cbcalled[4] ); | 596 CHECK( 1, cbcalled[4] ); |
597 CHECK( 0, fd_msg_free( msg ) ); | 598 CHECK( 0, fd_msg_free( msg ) ); |
598 | 599 |
599 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, &hdl[5] ) ); | 600 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, &hdl[5] ) ); |
600 memset(cbcalled, 0, sizeof(cbcalled)); | 601 memset(cbcalled, 0, sizeof(cbcalled)); |
601 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 602 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
602 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 603 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
603 CHECK( 1, cbcalled[0] ); | 604 CHECK( 1, cbcalled[0] ); |
604 CHECK( 0, cbcalled[1] ); | 605 CHECK( 0, cbcalled[1] ); |
605 CHECK( 0, cbcalled[2] ); | 606 CHECK( 0, cbcalled[2] ); |
606 CHECK( 0, cbcalled[3] ); | 607 CHECK( 0, cbcalled[3] ); |
607 CHECK( 0, cbcalled[4] ); | 608 CHECK( 0, cbcalled[4] ); |
610 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); | 611 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); |
611 | 612 |
612 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP_ENUMVAL, &when, &hdl[5] ) ); | 613 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP_ENUMVAL, &when, &hdl[5] ) ); |
613 memset(cbcalled, 0, sizeof(cbcalled)); | 614 memset(cbcalled, 0, sizeof(cbcalled)); |
614 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 615 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
615 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 616 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
616 CHECK( 1, cbcalled[0] ); | 617 CHECK( 1, cbcalled[0] ); |
617 CHECK( 1, cbcalled[1] ); | 618 CHECK( 1, cbcalled[1] ); |
618 CHECK( 1, cbcalled[2] ); | 619 CHECK( 1, cbcalled[2] ); |
619 CHECK( 0, cbcalled[3] ); | 620 CHECK( 0, cbcalled[3] ); |
620 CHECK( 0, cbcalled[4] ); | 621 CHECK( 0, cbcalled[4] ); |
623 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); | 624 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); |
624 | 625 |
625 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP, &when, &hdl[5] ) ); | 626 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP, &when, &hdl[5] ) ); |
626 memset(cbcalled, 0, sizeof(cbcalled)); | 627 memset(cbcalled, 0, sizeof(cbcalled)); |
627 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 628 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
628 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 629 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
629 CHECK( 1, cbcalled[0] ); | 630 CHECK( 1, cbcalled[0] ); |
630 CHECK( 1, cbcalled[1] ); | 631 CHECK( 1, cbcalled[1] ); |
631 CHECK( 1, cbcalled[2] ); | 632 CHECK( 1, cbcalled[2] ); |
632 CHECK( 0, cbcalled[3] ); | 633 CHECK( 0, cbcalled[3] ); |
633 CHECK( 0, cbcalled[4] ); | 634 CHECK( 0, cbcalled[4] ); |
636 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); | 637 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); |
637 | 638 |
638 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_CC, &when, &hdl[5] ) ); | 639 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_CC, &when, &hdl[5] ) ); |
639 memset(cbcalled, 0, sizeof(cbcalled)); | 640 memset(cbcalled, 0, sizeof(cbcalled)); |
640 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 641 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
641 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 642 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
642 CHECK( 1, cbcalled[0] ); | 643 CHECK( 1, cbcalled[0] ); |
643 CHECK( 1, cbcalled[1] ); | 644 CHECK( 1, cbcalled[1] ); |
644 CHECK( 1, cbcalled[2] ); | 645 CHECK( 1, cbcalled[2] ); |
645 CHECK( 1, cbcalled[3] ); | 646 CHECK( 1, cbcalled[3] ); |
646 CHECK( 0, cbcalled[4] ); | 647 CHECK( 0, cbcalled[4] ); |
649 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); | 650 CHECK( 0, fd_disp_unregister( &hdl[5] ) ); |
650 | 651 |
651 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_APPID, &when, &hdl[5] ) ); | 652 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_APPID, &when, &hdl[5] ) ); |
652 memset(cbcalled, 0, sizeof(cbcalled)); | 653 memset(cbcalled, 0, sizeof(cbcalled)); |
653 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); | 654 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); |
654 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action ) ); | 655 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); |
655 CHECK( 1, cbcalled[0] ); | 656 CHECK( 1, cbcalled[0] ); |
656 CHECK( 1, cbcalled[1] ); | 657 CHECK( 1, cbcalled[1] ); |
657 CHECK( 1, cbcalled[2] ); | 658 CHECK( 1, cbcalled[2] ); |
658 CHECK( 1, cbcalled[3] ); | 659 CHECK( 1, cbcalled[3] ); |
659 CHECK( 1, cbcalled[4] ); | 660 CHECK( 1, cbcalled[4] ); |