Changeset 639:95a784729cac in freeDiameter for freeDiameter/tests/testdisp.c
- Timestamp:
- Dec 20, 2010, 1:07:06 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
freeDiameter/tests/testdisp.c
r90 r639 36 36 #include "tests.h" 37 37 38 #define Define_cb( __int, __extra ) \ 39 int cb_##__int( struct msg ** msg, struct avp * avp, struct session * session, enum disp_action * action ) \ 40 { \ 41 CHECK( 1, msg ? 1 : 0 ); \ 42 CHECK( 1, action ? 1 : 0 ); \ 43 CHECK( sess, session ); \ 44 *action = DISP_ACT_CONT; \ 45 cbcalled[__int] += 1; \ 46 do { \ 47 __extra ; \ 48 } while (0); \ 49 return 0; \ 38 #define Define_cb( __int, __extra ) \ 39 int cb_##__int( struct msg ** msg, struct avp * avp, struct session * session, void * opaque, enum disp_action * action ) \ 40 { \ 41 CHECK( 1, msg ? 1 : 0 ); \ 42 CHECK( 1, action ? 1 : 0 ); \ 43 CHECK( sess, session ); \ 44 if (opaque) { \ 45 CHECK( 1, opaque == g_opaque ? 1 : 0 ); \ 46 } \ 47 *action = DISP_ACT_CONT; \ 48 cbcalled[__int] += 1; \ 49 do { \ 50 __extra ; \ 51 } while (0); \ 52 return 0; \ 50 53 } 51 54 … … 53 56 char cbcalled[NB_CB]; 54 57 struct session * sess; 58 void * g_opaque = (void *)"test"; 55 59 56 60 /* cb_0 */ Define_cb( 0, ); … … 142 146 /* Register first handler, very simple test */ 143 147 { 144 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, NULL, &hdl[0] ) ); 145 149 CHECK( 1, hdl[0] ? 1 : 0 ); 146 CHECK( 0, fd_disp_unregister( &hdl[0] ) );150 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 147 151 CHECK( NULL, hdl[0] ); 148 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, NULL, &hdl[0] ) );152 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, NULL, NULL, &hdl[0] ) ); 149 153 150 154 /* Check this handler is called for a message */ … … 157 161 /* Delete the message */ 158 162 CHECK( 0, fd_msg_free( msg ) ); 159 CHECK( 0, fd_disp_unregister( &hdl[0] ) );163 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 160 164 } 161 165 162 166 /* Handlers for applications */ 163 167 { 164 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );168 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 165 169 when.app = app1; 166 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_APPID, &when, &hdl[1] ) );170 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_APPID, &when, NULL, &hdl[1] ) ); 167 171 when.app = app2; 168 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_APPID, &when, &hdl[2] ) );172 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_APPID, &when, NULL, &hdl[2] ) ); 169 173 when.avp = avp2; 170 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_APPID, &when, &hdl[3] ) );174 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_APPID, &when, NULL, &hdl[3] ) ); 171 175 when.avp = avp1; 172 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) );176 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, NULL, &hdl[4] ) ); 173 177 174 178 /* Check the callbacks are called as appropriate */ … … 206 210 CHECK( 0, fd_msg_free( msg ) ); 207 211 208 CHECK( 0, fd_disp_unregister( &hdl[0] ) );209 CHECK( 0, fd_disp_unregister( &hdl[1] ) );210 CHECK( 0, fd_disp_unregister( &hdl[2] ) );211 CHECK( 0, fd_disp_unregister( &hdl[3] ) );212 CHECK( 0, fd_disp_unregister( &hdl[4] ) );212 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 213 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 214 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 215 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 216 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 213 217 } 214 218 … … 217 221 when.app = NULL; 218 222 when.command = NULL; 219 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );220 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_CC, &when, &hdl[1] ) );223 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 224 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_CC, &when, NULL, &hdl[1] ) ); 221 225 when.command = cmd1; 222 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_CC, &when, &hdl[1] ) ); /* cmd1 */226 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_CC, &when, NULL, &hdl[1] ) ); /* cmd1 */ 223 227 when.app = app2; 224 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_CC, &when, &hdl[2] ) ); /* app2 + cmd1 */228 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_CC, &when, NULL, &hdl[2] ) ); /* app2 + cmd1 */ 225 229 when.command = cmd2; 226 230 when.app = NULL; 227 231 when.avp = avp1; 228 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) ); /* cmd2 (avp1 ignored) */232 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, NULL, &hdl[3] ) ); /* cmd2 (avp1 ignored) */ 229 233 230 234 /* Check the callbacks are called as appropriate */ … … 269 273 CHECK( 0, fd_msg_free( msg ) ); 270 274 271 CHECK( 0, fd_disp_unregister( &hdl[0] ) );272 CHECK( 0, fd_disp_unregister( &hdl[1] ) );273 CHECK( 0, fd_disp_unregister( &hdl[2] ) );274 CHECK( 0, fd_disp_unregister( &hdl[3] ) );275 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 276 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 277 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 278 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 275 279 } 276 280 … … 281 285 when.avp = NULL; 282 286 283 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) ); /* all */284 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP, &when, &hdl[1] ) );287 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); /* all */ 288 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP, &when, NULL, &hdl[1] ) ); 285 289 286 290 when.avp = avp1; 287 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP, &when, &hdl[1] ) ); /* avp1 */291 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP, &when, NULL, &hdl[1] ) ); /* avp1 */ 288 292 289 293 when.command = cmd1; 290 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP, &when, &hdl[2] ) ); /* avp1 + cmd1 */294 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP, &when, NULL, &hdl[2] ) ); /* avp1 + cmd1 */ 291 295 292 296 when.command = NULL; 293 297 when.app = app1; 294 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP, &when, &hdl[3] ) ); /* avp1 + app1 */298 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP, &when, NULL, &hdl[3] ) ); /* avp1 + app1 */ 295 299 296 300 when.command = cmd1; 297 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_AVP, &when, &hdl[4] ) ); /* avp1 + cmd1 + app1 */301 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_AVP, &when, NULL, &hdl[4] ) ); /* avp1 + cmd1 + app1 */ 298 302 299 303 when.app = NULL; … … 301 305 when.avp = avp2; 302 306 when.value = enu1; 303 CHECK( 0, fd_disp_register( cb_5, DISP_HOW_AVP, &when, &hdl[5] ) ); /* avp2 */307 CHECK( 0, fd_disp_register( cb_5, DISP_HOW_AVP, &when, NULL, &hdl[5] ) ); /* avp2 */ 304 308 305 309 when.value = enu2; 306 CHECK( 0, fd_disp_register( cb_7, DISP_HOW_AVP, &when, &hdl[6] ) ); /* avp2 */310 CHECK( 0, fd_disp_register( cb_7, DISP_HOW_AVP, &when, NULL, &hdl[6] ) ); /* avp2 */ 307 311 308 312 … … 396 400 CHECK( 0, fd_msg_free( msg ) ); 397 401 398 CHECK( 0, fd_disp_unregister( &hdl[0] ) );399 CHECK( 0, fd_disp_unregister( &hdl[1] ) );400 CHECK( 0, fd_disp_unregister( &hdl[2] ) );401 CHECK( 0, fd_disp_unregister( &hdl[3] ) );402 CHECK( 0, fd_disp_unregister( &hdl[4] ) );403 CHECK( 0, fd_disp_unregister( &hdl[5] ) );404 CHECK( 0, fd_disp_unregister( &hdl[6] ) );402 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 403 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 404 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 405 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 406 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 407 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 408 CHECK( 0, fd_disp_unregister( &hdl[6], NULL ) ); 405 409 } 406 410 … … 412 416 when.value = NULL; 413 417 414 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) ); /* all */415 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, &hdl[1] ) );418 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); /* all */ 419 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[1] ) ); 416 420 when.value = enu1; 417 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, &hdl[1] ) );421 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[1] ) ); 418 422 when.avp = avp1; 419 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, &hdl[1] ) );423 CHECK( EINVAL, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[1] ) ); 420 424 when.avp = avp2; 421 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, &hdl[1] ) ); /* avp2, enu1 */425 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[1] ) ); /* avp2, enu1 */ 422 426 423 427 when.command = cmd1; 424 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP_ENUMVAL, &when, &hdl[2] ) ); /* avp2, enu1 + cmd1 */428 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[2] ) ); /* avp2, enu1 + cmd1 */ 425 429 426 430 when.command = NULL; 427 431 when.app = app1; 428 432 when.value = enu2; 429 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP_ENUMVAL, &when, &hdl[3] ) ); /* avp2, enu2 + app1 */433 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[3] ) ); /* avp2, enu2 + app1 */ 430 434 431 435 /* Check the callbacks are called as appropriate */ … … 498 502 CHECK( 0, fd_msg_free( msg ) ); 499 503 500 CHECK( 0, fd_disp_unregister( &hdl[0] ) );501 CHECK( 0, fd_disp_unregister( &hdl[1] ) );502 CHECK( 0, fd_disp_unregister( &hdl[2] ) );503 CHECK( 0, fd_disp_unregister( &hdl[3] ) );504 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 505 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 506 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 507 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 504 508 } 505 509 506 510 /* Test behavior of handlers */ 507 511 { 508 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );509 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, &hdl[1] ) );510 CHECK( 0, fd_disp_register( cb_6, DISP_HOW_ANY, &when, &hdl[2] ) );511 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) );512 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) );512 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 513 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, NULL, &hdl[1] ) ); 514 CHECK( 0, fd_disp_register( cb_6, DISP_HOW_ANY, &when, NULL, &hdl[2] ) ); 515 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, NULL, &hdl[3] ) ); 516 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, NULL, &hdl[4] ) ); 513 517 514 518 memset(cbcalled, 0, sizeof(cbcalled)); … … 522 526 CHECK( 0, fd_msg_free( msg ) ); 523 527 524 CHECK( 0, fd_disp_unregister( &hdl[0] ) );525 CHECK( 0, fd_disp_unregister( &hdl[1] ) );526 CHECK( 0, fd_disp_unregister( &hdl[2] ) );527 CHECK( 0, fd_disp_unregister( &hdl[3] ) );528 CHECK( 0, fd_disp_unregister( &hdl[4] ) );529 530 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );531 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, &hdl[1] ) );532 CHECK( 0, fd_disp_register( cb_8, DISP_HOW_ANY, &when, &hdl[2] ) );533 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) );534 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) );528 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 529 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 530 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 531 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 532 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 533 534 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 535 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, NULL, &hdl[1] ) ); 536 CHECK( 0, fd_disp_register( cb_8, DISP_HOW_ANY, &when, NULL, &hdl[2] ) ); 537 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, NULL, &hdl[3] ) ); 538 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, NULL, &hdl[4] ) ); 535 539 536 540 memset(cbcalled, 0, sizeof(cbcalled)); … … 544 548 CHECK( NULL, msg ); 545 549 546 CHECK( 0, fd_disp_unregister( &hdl[0] ) );547 CHECK( 0, fd_disp_unregister( &hdl[1] ) );548 CHECK( 0, fd_disp_unregister( &hdl[2] ) );549 CHECK( 0, fd_disp_unregister( &hdl[3] ) );550 CHECK( 0, fd_disp_unregister( &hdl[4] ) );551 552 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );553 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, &hdl[1] ) );554 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, &hdl[2] ) );555 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, &hdl[3] ) );556 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, &hdl[4] ) );550 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 551 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 552 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 553 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 554 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 555 556 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 557 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_ANY, &when, NULL, &hdl[1] ) ); 558 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, NULL, &hdl[2] ) ); 559 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_ANY, &when, NULL, &hdl[3] ) ); 560 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_ANY, &when, NULL, &hdl[4] ) ); 557 561 558 562 memset(cbcalled, 0, sizeof(cbcalled)); … … 567 571 CHECK( 0, fd_msg_free( msg ) ); 568 572 569 CHECK( 0, fd_disp_unregister( &hdl[0] ) );570 CHECK( 0, fd_disp_unregister( &hdl[1] ) );571 CHECK( 0, fd_disp_unregister( &hdl[2] ) );572 CHECK( 0, fd_disp_unregister( &hdl[3] ) );573 CHECK( 0, fd_disp_unregister( &hdl[4] ) );573 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 574 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 575 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 576 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 577 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 574 578 } 575 579 … … 581 585 when.value = enu2; 582 586 583 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, &hdl[0] ) );584 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, &hdl[1] ) );585 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP, &when, &hdl[2] ) );586 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, &hdl[3] ) );587 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, &hdl[4] ) );587 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, &when, NULL, &hdl[0] ) ); 588 CHECK( 0, fd_disp_register( cb_1, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[1] ) ); 589 CHECK( 0, fd_disp_register( cb_2, DISP_HOW_AVP, &when, NULL, &hdl[2] ) ); 590 CHECK( 0, fd_disp_register( cb_3, DISP_HOW_CC, &when, NULL, &hdl[3] ) ); 591 CHECK( 0, fd_disp_register( cb_4, DISP_HOW_APPID, &when, NULL, &hdl[4] ) ); 588 592 589 593 memset(cbcalled, 0, sizeof(cbcalled)); … … 598 602 CHECK( 0, fd_msg_free( msg ) ); 599 603 600 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, &hdl[5] ) );604 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_ANY, &when, NULL, &hdl[5] ) ); 601 605 memset(cbcalled, 0, sizeof(cbcalled)); 602 606 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); … … 609 613 CHECK( 1, cbcalled[9] ); 610 614 CHECK( 0, fd_msg_free( msg ) ); 611 CHECK( 0, fd_disp_unregister( &hdl[5] ) );612 613 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP_ENUMVAL, &when, &hdl[5] ) );615 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 616 617 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP_ENUMVAL, &when, NULL, &hdl[5] ) ); 614 618 memset(cbcalled, 0, sizeof(cbcalled)); 615 619 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); … … 622 626 CHECK( 1, cbcalled[9] ); 623 627 CHECK( 0, fd_msg_free( msg ) ); 624 CHECK( 0, fd_disp_unregister( &hdl[5] ) );625 626 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP, &when, &hdl[5] ) );628 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 629 630 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_AVP, &when, NULL, &hdl[5] ) ); 627 631 memset(cbcalled, 0, sizeof(cbcalled)); 628 632 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); … … 635 639 CHECK( 1, cbcalled[9] ); 636 640 CHECK( 0, fd_msg_free( msg ) ); 637 CHECK( 0, fd_disp_unregister( &hdl[5] ) );638 639 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_CC, &when, &hdl[5] ) );641 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 642 643 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_CC, &when, NULL, &hdl[5] ) ); 640 644 memset(cbcalled, 0, sizeof(cbcalled)); 641 645 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); … … 648 652 CHECK( 1, cbcalled[9] ); 649 653 CHECK( 0, fd_msg_free( msg ) ); 650 CHECK( 0, fd_disp_unregister( &hdl[5] ) );651 652 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_APPID, &when, &hdl[5] ) );654 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 655 656 CHECK( 0, fd_disp_register( cb_9, DISP_HOW_APPID, &when, NULL, &hdl[5] ) ); 653 657 memset(cbcalled, 0, sizeof(cbcalled)); 654 658 msg = new_msg( 2, cmd2, avp1, avp2, 2 ); … … 661 665 CHECK( 1, cbcalled[9] ); 662 666 CHECK( 0, fd_msg_free( msg ) ); 663 CHECK( 0, fd_disp_unregister( &hdl[5] ) );664 665 CHECK( 0, fd_disp_unregister( &hdl[0] ) );666 CHECK( 0, fd_disp_unregister( &hdl[1] ) );667 CHECK( 0, fd_disp_unregister( &hdl[2] ) );668 CHECK( 0, fd_disp_unregister( &hdl[3] ) );669 CHECK( 0, fd_disp_unregister( &hdl[4] ) );667 CHECK( 0, fd_disp_unregister( &hdl[5], NULL ) ); 668 669 CHECK( 0, fd_disp_unregister( &hdl[0], NULL ) ); 670 CHECK( 0, fd_disp_unregister( &hdl[1], NULL ) ); 671 CHECK( 0, fd_disp_unregister( &hdl[2], NULL ) ); 672 CHECK( 0, fd_disp_unregister( &hdl[3], NULL ) ); 673 CHECK( 0, fd_disp_unregister( &hdl[4], NULL ) ); 670 674 } 671 675 … … 698 702 } 699 703 704 /* Test opaque pointer management */ 705 { 706 void * ptr; 707 CHECK( 0, fd_disp_register( cb_0, DISP_HOW_ANY, NULL, g_opaque, &hdl[0] ) ); 708 709 /* Check this handler is called for a message */ 710 msg = new_msg( 0, cmd1, avp1, NULL, 0 ); 711 memset(cbcalled, 0, sizeof(cbcalled)); 712 CHECK( 0, fd_msg_dispatch ( &msg, sess, &action, &ec ) ); 713 CHECK( 1, cbcalled[0] ); 714 CHECK( DISP_ACT_CONT, action ); 715 716 /* Delete the message */ 717 CHECK( 0, fd_msg_free( msg ) ); 718 CHECK( 0, fd_disp_unregister( &hdl[0], &ptr ) ); 719 CHECK( 1, ptr == g_opaque ? 1 : 0 ); 720 } 721 700 722 /* That's all for the tests yet */ 701 723 PASSTEST();
Note: See TracChangeset
for help on using the changeset viewer.