Changeset 2038


Ignore:
Timestamp:
Jun 10, 2007, 10:56:18 PM (15 years ago)
Author:
joshe
Message:

Return bad-format message when appropriate.
Fix supported message to be more accurate.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/server.c

    r1926 r2038  
    6363static void doread   ( struct bufferevent *, void * );
    6464static int  queuemsg ( struct client *, uint8_t *, size_t );
    65 static void msgresp  ( struct client *, int64_t, enum ipc_msg );
     65static int msgresp  ( struct client *, int64_t, enum ipc_msg );
    6666static void defmsg   ( enum ipc_msg, benc_val_t *, int64_t, void * );
    6767static void noopmsg  ( enum ipc_msg, benc_val_t *, int64_t, void * );
     
    389389}
    390390
    391 void
     391int
    392392msgresp( struct client * client, int64_t tag, enum ipc_msg id )
    393393{
    394394    uint8_t * buf;
    395395    size_t    buflen;
     396    int       ret;
    396397
    397398    if( 0 >= tag )
    398399    {
    399         return;
     400        return 0;
    400401    }
    401402
    402403    buf = ipc_mkempty( &client->ipc, &buflen, id, tag );
    403     queuemsg( client, buf, buflen );
     404    ret = queuemsg( client, buf, buflen );
    404405    free( buf );
     406
     407    return ret;
    405408}
    406409
     
    435438    if( NULL == val || TYPE_LIST != val->type )
    436439    {
    437         msgresp( client, tag, IPC_MSG_NOTSUP );
     440        msgresp( client, tag, IPC_MSG_BAD );
    438441        return;
    439442    }
     
    488491    if( NULL == dict || TYPE_DICT != dict->type )
    489492    {
    490         msgresp( client, tag, IPC_MSG_NOTSUP );
     493        msgresp( client, tag, IPC_MSG_BAD );
    491494        return;
    492495    }
     
    509512        if( NULL == val || TYPE_STR != val->type )
    510513        {
    511             msgresp( client, tag, IPC_MSG_NOTSUP );
     514            msgresp( client, tag, IPC_MSG_BAD );
    512515            return;
    513516        }
     
    568571    if( NULL == val || TYPE_INT != val->type )
    569572    {
    570         msgresp( client, tag, IPC_MSG_NOTSUP );
     573        msgresp( client, tag, IPC_MSG_BAD );
    571574        return;
    572575    }
     
    608611    if( NULL == val || TYPE_STR != val->type )
    609612    {
    610         msgresp( client, tag, IPC_MSG_NOTSUP );
     613        msgresp( client, tag, IPC_MSG_BAD );
    611614        return;
    612615    }
     
    673676        if( NULL == val || TYPE_LIST != val->type )
    674677        {
    675             msgresp( client, tag, IPC_MSG_NOTSUP );
     678            msgresp( client, tag, IPC_MSG_BAD );
    676679            tr_bencFree( &pk );
    677680            return;
     
    695698        if( NULL == val || TYPE_DICT != val->type )
    696699        {
    697             msgresp( client, tag, IPC_MSG_NOTSUP );
     700            msgresp( client, tag, IPC_MSG_BAD );
    698701            tr_bencFree( &pk );
    699702            return;
     
    704707            NULL == idlist   || TYPE_LIST != idlist->type )
    705708        {
    706             msgresp( client, tag, IPC_MSG_NOTSUP );
     709            msgresp( client, tag, IPC_MSG_BAD );
    707710            tr_bencFree( &pk );
    708711            return;
     
    814817        if( NULL == val || TYPE_LIST != val->type )
    815818        {
    816             msgresp( client, tag, IPC_MSG_NOTSUP );
     819            msgresp( client, tag, IPC_MSG_BAD );
    817820            return;
    818821        }
     
    844847    if( NULL == val || TYPE_LIST != val->type )
    845848    {
    846         msgresp( client, tag, IPC_MSG_NOTSUP );
     849        msgresp( client, tag, IPC_MSG_BAD );
    847850        return;
    848851    }
     
    863866        {
    864867            tr_bencFree( &pk );
    865             msgresp( client, tag, IPC_MSG_NOTSUP );
     868            msgresp( client, tag, IPC_MSG_BAD );
    866869            return;
    867870        }
     
    946949    if( NULL == val || TYPE_LIST != val->type )
    947950    {
    948         msgresp( client, tag, IPC_MSG_NOTSUP );
     951        msgresp( client, tag, IPC_MSG_BAD );
    949952        return;
    950953    }
     
    972975        {
    973976            tr_bencFree( &pk );
    974             msgresp( client, tag, IPC_MSG_NOTSUP );
     977            msgresp( client, tag, IPC_MSG_BAD );
    975978            return;
    976979        }
    977980        found = ipc_msgid( &client->ipc, name->val.s.s );
    978         if( IPC__MSG_COUNT == found )
     981        if( IPC__MSG_COUNT == found || !ipc_ishandled( &client->ipc, found ) )
    979982        {
    980983            continue;
  • trunk/libtransmission/ipcparse.c

    r2031 r2038  
    11271127
    11281128int
     1129ipc_ishandled( struct ipc_info * info, enum ipc_msg id )
     1130{
     1131    struct msgfunc key;
     1132
     1133    assert( MSGVALID( id ) );
     1134
     1135    bzero( &key, sizeof key );
     1136    key.id = id;
     1137    return ( NULL != RB_FIND( functree, &info->funcs->msgs, &key ) );
     1138}
     1139
     1140int
    11291141ipc_havetags( struct ipc_info * info )
    11301142{
  • trunk/libtransmission/ipcparse.h

    r2031 r2038  
    165165int          ipc_havemsg  ( struct ipc_info *, enum ipc_msg );
    166166enum ipc_msg ipc_msgid    ( struct ipc_info *, const char * );
     167int          ipc_ishandled( struct ipc_info *, enum ipc_msg );
    167168int          ipc_havetags ( struct ipc_info * );
    168169int          ipc_infotypes( enum ipc_msg, benc_val_t * );
Note: See TracChangeset for help on using the changeset viewer.