Changeset 2227
- Timestamp:
- Jun 29, 2007, 2:21:29 AM (16 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/daemon/client.c
r1926 r2227 52 52 int infd; 53 53 int outfd; 54 struct ipc_info 54 struct ipc_info * ipc; 55 55 struct bufferevent * evin; 56 56 struct bufferevent * evout; … … 169 169 return -1; 170 170 } 171 ipc_newcon( &con->ipc, gl_tree ); 171 con->ipc = ipc_newcon( gl_tree ); 172 if( NULL == con->ipc ) 173 { 174 mallocmsg( sizeof *con->ipc ); 175 close( fd ); 176 free( con ); 177 } 172 178 con->infd = fd; 173 179 con->evin = bufferevent_new( fd, canread, didwrite, ohshit, con ); 174 180 if( NULL == con->evin ) 175 181 { 176 mallocmsg( -1);182 errnomsg( "failed to create bufferevent" ); 177 183 close( fd ); 184 ipc_freecon( con->ipc ); 178 185 free( con ); 179 186 return -1; … … 275 282 { 276 283 bufferevent_free( con->evin ); 284 bufferevent_free( con->evout ); 277 285 free( con ); 278 286 close( tocmd[1] ); … … 284 292 bufferevent_enable( con->evout, EV_READ ); 285 293 286 ipc_newcon( &con->ipc, gl_tree ); 294 con->ipc = ipc_newcon( gl_tree ); 295 if( NULL == con->ipc ) 296 { 297 mallocmsg( sizeof *con->ipc ); 298 bufferevent_free( con->evin ); 299 bufferevent_free( con->evout ); 300 free( con ); 301 close( tocmd[1] ); 302 close( fromcmd[0] ); 303 return -1; 304 } 305 287 306 if( 0 > sendvers( con ) ) 288 307 { … … 687 706 } 688 707 689 res = ipc_parse( &con->ipc, buf, len, con );708 res = ipc_parse( con->ipc, buf, len, con ); 690 709 if( 0 > res ) 691 710 { … … 721 740 struct stritem * jj; 722 741 723 if( !HASVERS( &con->ipc ) )742 if( !HASVERS( con->ipc ) ) 724 743 { 725 744 return; … … 742 761 case IPC_MSG_STOPALL: 743 762 case IPC_MSG_REMOVEALL: 744 buf = ipc_mkempty( &con->ipc, &buflen, req->id, req->tag );763 buf = ipc_mkempty( con->ipc, &buflen, req->id, req->tag ); 745 764 break; 746 765 case IPC_MSG_ADDMANYFILES: … … 750 769 ii++; 751 770 } 752 val = ipc_initval( &con->ipc, req->id, -1, &pk, TYPE_LIST );771 val = ipc_initval( con->ipc, req->id, -1, &pk, TYPE_LIST ); 753 772 if( NULL != val && !tr_bencListReserve( val, ii ) ) 754 773 { … … 764 783 break; 765 784 case IPC_MSG_ADDONEFILE: 766 val = ipc_initval( &con->ipc, req->id, -1, &pk, TYPE_DICT );785 val = ipc_initval( con->ipc, req->id, -1, &pk, TYPE_DICT ); 767 786 if( NULL != val && !tr_bencDictReserve( val, 1 ) ) 768 787 { … … 779 798 case IPC_MSG_UPLIMIT: 780 799 case IPC_MSG_PEX: 781 buf = ipc_mkint( &con->ipc, &buflen, req->id, -1, req->num );800 buf = ipc_mkint( con->ipc, &buflen, req->id, -1, req->num ); 782 801 break; 783 802 case IPC_MSG_DIR: 784 buf = ipc_mkstr( &con->ipc, &buflen, req->id, -1, req->str );803 buf = ipc_mkstr( con->ipc, &buflen, req->id, -1, req->str ); 785 804 SAFEFREE( req->str ); 786 805 break; … … 788 807 case IPC_MSG_STOP: 789 808 case IPC_MSG_REMOVE: 790 val = ipc_initval( &con->ipc, req->id, -1, &pk, TYPE_LIST );809 val = ipc_initval( con->ipc, req->id, -1, &pk, TYPE_LIST ); 791 810 if( NULL != val && !tr_bencListReserve( val, req->listlen ) ) 792 811 { … … 803 822 case IPC_MSG_GETINFOALL: 804 823 case IPC_MSG_GETSTATALL: 805 buf = ipc_mkgetinfo( &con->ipc, &buflen, req->id, req->tag,824 buf = ipc_mkgetinfo( con->ipc, &buflen, req->id, req->tag, 806 825 req->types, NULL ); 807 826 break; … … 839 858 size_t len; 840 859 841 buf = ipc_mkvers( &len );860 buf = ipc_mkvers( &len, "Transmission remote" VERSION_STRING ); 842 861 if( NULL == buf ) 843 862 { -
trunk/daemon/server.c
r2149 r2227 52 52 int fd; 53 53 struct bufferevent * ev; 54 struct ipc_info 54 struct ipc_info * ipc; 55 55 RB_ENTRY( client ) link; 56 56 }; … … 224 224 } 225 225 226 client->ipc = ipc_newcon( gl_tree ); 227 if( NULL == client->ipc ) 228 { 229 mallocmsg( sizeof *client->ipc ); 230 close( clfd ); 231 free( client ); 232 return; 233 } 234 226 235 clev = bufferevent_new( clfd, doread, noop, byebye, client ); 227 236 if( NULL == clev ) 228 237 { 238 errnomsg( "failed to create bufferevent" ); 229 239 close( clfd ); 240 ipc_freecon( client->ipc ); 230 241 free( client ); 231 mallocmsg( -1 );232 242 return; 233 243 } … … 236 246 237 247 client->fd = clfd; 238 ipc_newcon( &client->ipc, gl_tree );239 248 client->ev = clev; 240 249 old = RB_INSERT( allclients, &gl_clients, client ); … … 247 256 248 257 bufferevent_enable( clev, EV_READ ); 249 buf = ipc_mkvers( &buflen );258 buf = ipc_mkvers( &buflen, "Transmission daemon " VERSION_STRING ); 250 259 if( 0 > queuemsg( client, buf, buflen ) ) 251 260 { … … 299 308 bufferevent_free( ev ); 300 309 close( client->fd ); 310 ipc_freecon( client->ipc ); 301 311 if( gl_debug ) 302 312 { … … 331 341 } 332 342 333 res = ipc_parse( &client->ipc, buf, len, client );343 res = ipc_parse( client->ipc, buf, len, client ); 334 344 335 345 if( gl_exiting ) … … 401 411 } 402 412 403 buf = ipc_mkempty( &client->ipc, &buflen, id, tag );413 buf = ipc_mkempty( client->ipc, &buflen, id, tag ); 404 414 ret = queuemsg( client, buf, buflen ); 405 415 free( buf ); … … 442 452 } 443 453 444 added = ipc_initval( &client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST );454 added = ipc_initval( client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST ); 445 455 if( NULL == added ) 446 456 { … … 521 531 if( TORRENT_ID_VALID( tor ) ) 522 532 { 523 val = ipc_initval( &client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST );533 val = ipc_initval( client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST ); 524 534 if( NULL == val ) 525 535 { … … 663 673 664 674 /* initialize packet */ 665 pkinf = ipc_initval( &client->ipc, respid, tag, &pk, TYPE_LIST );675 pkinf = ipc_initval( client->ipc, respid, tag, &pk, TYPE_LIST ); 666 676 if( NULL == pkinf ) 667 677 { … … 848 858 } 849 859 850 pkinf = ipc_initval( &client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST );860 pkinf = ipc_initval( client->ipc, IPC_MSG_INFO, tag, &pk, TYPE_LIST ); 851 861 if( NULL == pkinf ) 852 862 { … … 898 908 { 899 909 case IPC_MSG_GETAUTOMAP: 900 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_AUTOMAP, tag,910 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_AUTOMAP, tag, 901 911 torrent_get_port_mapping() ); 902 912 break; 903 913 case IPC_MSG_GETAUTOSTART: 904 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_AUTOSTART, tag,914 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_AUTOSTART, tag, 905 915 torrent_get_autostart() ); 906 916 break; 907 917 case IPC_MSG_GETDIR: 908 buf = ipc_mkstr( &client->ipc, &buflen, IPC_MSG_DIR, tag,918 buf = ipc_mkstr( client->ipc, &buflen, IPC_MSG_DIR, tag, 909 919 torrent_get_directory() ); 910 920 break; 911 921 case IPC_MSG_GETDOWNLIMIT: 912 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_DOWNLIMIT, tag,922 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_DOWNLIMIT, tag, 913 923 torrent_get_downlimit() ); 914 924 break; 915 925 case IPC_MSG_GETPEX: 916 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_PEX, tag,926 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_PEX, tag, 917 927 torrent_get_pex() ); 918 928 break; 919 929 case IPC_MSG_GETPORT: 920 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_PORT, tag,930 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_PORT, tag, 921 931 torrent_get_port() ); 922 932 break; 923 933 case IPC_MSG_GETUPLIMIT: 924 buf = ipc_mkint( &client->ipc, &buflen, IPC_MSG_UPLIMIT, tag,934 buf = ipc_mkint( client->ipc, &buflen, IPC_MSG_UPLIMIT, tag, 925 935 torrent_get_uplimit() ); 926 936 break; … … 950 960 } 951 961 952 pkval = ipc_initval( &client->ipc, IPC_MSG_SUP, tag, &pk, TYPE_LIST );962 pkval = ipc_initval( client->ipc, IPC_MSG_SUP, tag, &pk, TYPE_LIST ); 953 963 if( NULL == pkval ) 954 964 { … … 975 985 return; 976 986 } 977 found = ipc_msgid( &client->ipc, name->val.s.s );978 if( IPC__MSG_COUNT == found || !ipc_ishandled( &client->ipc, found ) )987 found = ipc_msgid( client->ipc, name->val.s.s ); 988 if( IPC__MSG_COUNT == found || !ipc_ishandled( client->ipc, found ) ) 979 989 { 980 990 continue; -
trunk/gtk/ipc.c
r2208 r2227 72 72 enum contype type; 73 73 struct ipc_funcs * msgs; 74 struct ipc_info 74 struct ipc_info * ipc; 75 75 union 76 76 { … … 222 222 } 223 223 224 con->ipc = ipc_newcon( con->msgs ); 225 if( NULL == con->ipc ) 226 { 227 ipc_freemsgs( con->msgs ); 228 g_free( con ); 229 return FALSE; 230 } 231 224 232 ipc_setdefmsg( con->msgs, all_default ); 225 ipc_newcon( &con->ipc, con->msgs );226 233 227 234 con->u.client.loop = g_main_loop_new(NULL, TRUE); … … 334 341 } 335 342 336 buf = ipc_mkvers( &size );343 buf = ipc_mkvers( &size, "Transmission GTK+ " VERSION_STRING ); 337 344 if( NULL == buf ) 338 345 { … … 357 364 memcpy(newcon, con, sizeof(*newcon)); 358 365 newcon->fd = fd; 359 ipc_newcon( &newcon->ipc, con->msgs ); 360 newcon->source = io_new(fd, NULL, srv_io_received, all_io_closed, newcon); 361 362 if( NULL == newcon->source ) 366 367 newcon->ipc = ipc_newcon( con->msgs ); 368 if( NULL == newcon->ipc ) 363 369 { 364 370 g_free( newcon ); … … 367 373 } 368 374 369 buf = ipc_mkvers( &size);370 if( NULL == buf)375 newcon->source = io_new(fd, NULL, srv_io_received, all_io_closed, newcon); 376 if( NULL == newcon->source ) 371 377 { 378 ipc_freecon( newcon->ipc ); 372 379 g_free( newcon ); 373 380 close( fd ); … … 375 382 } 376 383 384 buf = ipc_mkvers( &size, "Transmission GTK+ " VERSION_STRING ); 385 if( NULL == buf ) 386 { 387 ipc_freecon( newcon->ipc ); 388 g_free( newcon ); 389 close( fd ); 390 return; 391 } 392 377 393 io_send_keepdata( newcon->source, buf, size ); 378 394 } … … 396 412 } 397 413 398 res = ipc_parse( &con->ipc, data, len, con );414 res = ipc_parse( con->ipc, data, len, con ); 399 415 400 416 if( 0 > res ) … … 432 448 } 433 449 434 res = ipc_parse( &con->ipc, data, len, con );450 res = ipc_parse( con->ipc, data, len, con ); 435 451 436 452 if( 0 > res ) … … 453 469 } 454 470 455 if( HASVERS( &con->ipc ) && 0 == cli->msgid )471 if( HASVERS( con->ipc ) && 0 == cli->msgid ) 456 472 { 457 473 client_sendmsg( con ); … … 474 490 { 475 491 case IPC_MSG_ADDMANYFILES: 476 val = ipc_initval( &con->ipc, cli->msg, -1, &packet, TYPE_LIST );492 val = ipc_initval( con->ipc, cli->msg, -1, &packet, TYPE_LIST ); 477 493 if( NULL == val || 478 494 tr_bencListReserve( val, g_list_length( cli->files ) ) ) … … 493 509 break; 494 510 case IPC_MSG_QUIT: 495 buf = ipc_mkempty( &con->ipc, &size, cli->msg, -1 );511 buf = ipc_mkempty( con->ipc, &size, cli->msg, -1 ); 496 512 saved = errno; 497 513 break; … … 519 535 close(con->fd); 520 536 con->fd = -1; 537 ipc_freecon( con->ipc ); 521 538 522 539 switch(con->type) { … … 690 707 typeflags = ipc_infotypes( respid, types ); 691 708 692 pkval = ipc_initval( &con->ipc, respid, tag, &packet, TYPE_LIST );709 pkval = ipc_initval( con->ipc, respid, tag, &packet, TYPE_LIST ); 693 710 if( NULL == pkval ) 694 711 { … … 748 765 typeflags = ipc_infotypes( respid, val ); 749 766 750 pkval = ipc_initval( &con->ipc, respid, tag, &packet, TYPE_LIST );767 pkval = ipc_initval( con->ipc, respid, tag, &packet, TYPE_LIST ); 751 768 if( NULL == pkval ) 752 769 { … … 820 837 } 821 838 822 pkval = ipc_initval( &con->ipc, IPC_MSG_INFO, tag, &packet, TYPE_LIST );839 pkval = ipc_initval( con->ipc, IPC_MSG_INFO, tag, &packet, TYPE_LIST ); 823 840 if( NULL == pkval ) 824 841 { … … 963 980 case IPC_MSG_GETAUTOMAP: 964 981 hstat = tr_handleStatus( tr_core_handle( srv->core ) ); 965 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_AUTOMAP, tag,982 buf = ipc_mkint( con->ipc, &size, IPC_MSG_AUTOMAP, tag, 966 983 !TR_NAT_TRAVERSAL_IS_DISABLED( 967 984 hstat->natTraversalStatus ) ); 968 985 break; 969 986 case IPC_MSG_GETAUTOSTART: 970 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_AUTOSTART, tag, 1 );987 buf = ipc_mkint( con->ipc, &size, IPC_MSG_AUTOSTART, tag, 1 ); 971 988 break; 972 989 case IPC_MSG_GETDIR: … … 974 991 /* XXX sending back "" when we're prompting is kind of bogus */ 975 992 pref = strbool( pref ) ? "" : getdownloaddir(); 976 buf = ipc_mkstr( &con->ipc, &size, IPC_MSG_DIR, tag, pref );993 buf = ipc_mkstr( con->ipc, &size, IPC_MSG_DIR, tag, pref ); 977 994 break; 978 995 case IPC_MSG_GETDOWNLIMIT: … … 982 999 num = tr_prefs_get_int_with_default( PREF_ID_DOWNLIMIT ); 983 1000 } 984 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_DOWNLIMIT, tag, num );1001 buf = ipc_mkint( con->ipc, &size, IPC_MSG_DOWNLIMIT, tag, num ); 985 1002 break; 986 1003 case IPC_MSG_GETPEX: 987 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_PEX, tag,1004 buf = ipc_mkint( con->ipc, &size, IPC_MSG_PEX, tag, 988 1005 tr_prefs_get_bool_with_default( PREF_ID_PEX ) ); 989 1006 break; 990 1007 case IPC_MSG_GETPORT: 991 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_PORT, tag,1008 buf = ipc_mkint( con->ipc, &size, IPC_MSG_PORT, tag, 992 1009 tr_prefs_get_int_with_default( PREF_ID_PORT ) ); 993 1010 break; … … 998 1015 num = tr_prefs_get_int_with_default( PREF_ID_UPLIMIT ); 999 1016 } 1000 buf = ipc_mkint( &con->ipc, &size, IPC_MSG_UPLIMIT, tag, num );1017 buf = ipc_mkint( con->ipc, &size, IPC_MSG_UPLIMIT, tag, num ); 1001 1018 break; 1002 1019 default: … … 1108 1125 } 1109 1126 1110 pkval = ipc_initval( &con->ipc, IPC_MSG_SUP, tag, &packet, TYPE_LIST );1127 pkval = ipc_initval( con->ipc, IPC_MSG_SUP, tag, &packet, TYPE_LIST ); 1111 1128 if( NULL == pkval ) 1112 1129 { … … 1128 1145 continue; 1129 1146 } 1130 found = ipc_msgid( &con->ipc, name->val.s.s );1131 if( IPC__MSG_COUNT == found || !ipc_ishandled( &con->ipc, found ) )1147 found = ipc_msgid( con->ipc, name->val.s.s ); 1148 if( IPC__MSG_COUNT == found || !ipc_ishandled( con->ipc, found ) ) 1132 1149 { 1133 1150 continue; … … 1171 1188 size_t size; 1172 1189 1173 buf = ipc_mkempty( &con->ipc, &size, id, tag );1190 buf = ipc_mkempty( con->ipc, &size, id, tag ); 1174 1191 if( NULL == buf ) 1175 1192 { -
trunk/libtransmission/ipcparse.c
r2201 r2227 293 293 } 294 294 295 struct ipc_info * 296 ipc_newcon( struct ipc_funcs * funcs ) 297 { 298 struct ipc_info * info; 299 300 info = calloc( 1, sizeof *info ); 301 if( NULL != info ) 302 { 303 info->funcs = funcs; 304 info->vers = -1; 305 } 306 307 return info; 308 } 309 295 310 void 296 ipc_newcon( struct ipc_info * info, struct ipc_funcs * funcs ) 297 { 298 bzero( info, sizeof *info ); 299 info->funcs = funcs; 300 info->vers = -1; 311 ipc_freecon( struct ipc_info * info ) 312 { 313 if( NULL != info ) 314 { 315 free( info->label ); 316 free( info ); 317 } 301 318 } 302 319 … … 440 457 441 458 uint8_t * 442 ipc_mkvers( size_t * len )459 ipc_mkvers( size_t * len, const char * label ) 443 460 { 444 461 benc_val_t pk, * dict; … … 453 470 454 471 tr_bencInit( dict, TYPE_DICT ); 455 if( tr_bencDictReserve( dict, 2) )472 if( tr_bencDictReserve( dict, ( NULL == label ? 2 : 3 ) ) ) 456 473 { 457 474 SAFEBENCFREE( &pk ); … … 460 477 tr_bencInitInt( tr_bencDictAdd( dict, "min" ), PROTO_VERS_MIN ); 461 478 tr_bencInitInt( tr_bencDictAdd( dict, "max" ), PROTO_VERS_MAX ); 479 if( NULL != label ) 480 tr_bencInitStr( tr_bencDictAdd( dict, "label" ), label, -1, 1 ); 462 481 463 482 ret = ipc_mkval( &pk, len ); -
trunk/libtransmission/ipcparse.h
r2201 r2227 124 124 struct ipc_funcs * funcs; 125 125 int vers; 126 char * label; 126 127 }; 127 128 128 129 #define HASVERS( info ) ( 0 < (info)->vers ) 130 #define VERSLABEL( info ) ( (info)->label ) 129 131 130 132 #define TORRENT_ID_VALID( id ) ( 0 < (id) && INT_MAX > (id) ) … … 140 142 void ipc_setdefmsg( struct ipc_funcs *, trd_msgfunc ); 141 143 void ipc_freemsgs ( struct ipc_funcs * ); 142 void ipc_newcon ( struct ipc_info *, struct ipc_funcs * ); 144 struct ipc_info * ipc_newcon( struct ipc_funcs * ); 145 void ipc_freecon ( struct ipc_info * ); 143 146 144 147 /* message creation */ … … 153 156 uint8_t * ipc_mkstr ( struct ipc_info *, size_t *, enum ipc_msg, int64_t, 154 157 const char * ); 155 uint8_t * ipc_mkvers ( size_t * );158 uint8_t * ipc_mkvers ( size_t *, const char * ); 156 159 uint8_t * ipc_mkgetinfo( struct ipc_info *, size_t *, enum ipc_msg, int64_t, 157 160 int, const int * ); -
trunk/macosx/IPCController.m
r2149 r2227 77 77 @interface IPCClient : NSObject 78 78 { 79 NSFileHandle * _handle;80 struct ipc_info _ipc;81 IPCController * _controller;82 NSMutableData * _buf;79 NSFileHandle * _handle; 80 struct ipc_info * _ipc; 81 IPCController * _controller; 82 NSMutableData * _buf; 83 83 } 84 84 … … 270 270 271 271 _handle = [handle retain]; 272 ipc_newcon( &_ipc,funcs );272 _ipc = ipc_newcon( funcs ); 273 273 _controller = controller; 274 274 _buf = [[NSMutableData alloc] init]; 275 275 276 buf = ipc_mkvers( &size ); 277 if( nil == _buf || NULL == buf || ![self sendresp: buf size: size] ) 276 buf = ipc_mkvers( &size, "Transmission MacOS X " VERSION_STRING ); 277 if( NULL == _ipc || nil == _buf || NULL == buf || 278 ![self sendresp: buf size: size] ) 278 279 { 279 280 [self release]; … … 296 297 [_handle release]; 297 298 [_buf release]; 299 ipc_freecon( _ipc ); 298 300 [super dealloc]; 299 301 } … … 306 308 - (struct ipc_info *) ipc 307 309 { 308 return &_ipc;310 return _ipc; 309 311 } 310 312 … … 339 341 return; 340 342 341 res = ipc_parse( &_ipc, [_buf mutableBytes], [_buf length], self );343 res = ipc_parse( _ipc, [_buf mutableBytes], [_buf length], self ); 342 344 343 345 if( 0 > res ) … … 393 395 size_t size; 394 396 395 buf = ipc_mkempty( &_ipc, &size, msgid, tag );397 buf = ipc_mkempty( _ipc, &size, msgid, tag ); 396 398 if( NULL == buf ) 397 399 return FALSE; … … 408 410 size_t size; 409 411 410 buf = ipc_mkint( &_ipc, &size, msgid, tag, val );412 buf = ipc_mkint( _ipc, &size, msgid, tag, val ); 411 413 if( NULL == buf ) 412 414 return FALSE; … … 426 428 427 429 if( [val canBeConvertedToEncoding: NSUTF8StringEncoding] ) 428 buf = ipc_mkstr( &_ipc, &size, msgid, tag,430 buf = ipc_mkstr( _ipc, &size, msgid, tag, 429 431 [val cStringUsingEncoding: NSUTF8StringEncoding] ); 430 432 else … … 435 437 sucky = [NSMutableData dataWithData: data]; 436 438 [sucky appendBytes: "" length: 1]; 437 buf = ipc_mkstr( &_ipc, &size, msgid, tag, [sucky bytes] );439 buf = ipc_mkstr( _ipc, &size, msgid, tag, [sucky bytes] ); 438 440 } 439 441 if( NULL == buf ) … … 456 458 int res; 457 459 458 pkinf = ipc_initval( &_ipc, respid, tag, &packet, TYPE_LIST );460 pkinf = ipc_initval( _ipc, respid, tag, &packet, TYPE_LIST ); 459 461 if( NULL == pkinf ) 460 462 goto fail; -
trunk/misc/ipcproto.txt
r2030 r2227 72 72 with "min" and "max" keys. This deprecated version format indicates 73 73 the only version supported by the server. 74 75 The version dictionary may optionally contain a key "label". This is a 76 human-readable name for the software, it is not machine-readable and 77 neither servers nor clients should attempt to parse it. 74 78 75 79 An example message containing minimum and maximum versions 1 and 2:
Note: See TracChangeset
for help on using the changeset viewer.