Changeset 6275


Ignore:
Timestamp:
Jul 1, 2008, 2:33:31 AM (13 years ago)
Author:
charles
Message:

(rpc) uploading files via an http form w/file inputs works now.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/rpc-server.c

    r6272 r6275  
    7777    {
    7878        /* if we haven't finished reading the POST, read more now */
    79         if( arg->in.len ) {
    80             evbuffer_add( s->in, arg->in.buf, arg->in.len );
    81             arg->in.num_bytes = arg->in.len;
    82         }
     79        evbuffer_add( s->in, arg->in.buf, arg->in.len );
     80        arg->in.num_bytes = arg->in.len;
    8381        if( arg->flags & SHTTPD_MORE_POST_DATA )
    8482            return;
     
    9290        const size_t boundary_len = strlen( boundary );
    9391        char buf[64];
    94         int paused = TRUE;
    95 #if 0
    9692        int paused = ( query_string != NULL )
    9793                  && ( shttpd_get_var( "paused", query_string, strlen( query_string ), buf, sizeof( buf ) ) == 4 )
    9894                  && ( !strcmp( buf, "true" ) );
    99 #endif
    10095
    10196        delim = tr_memmem( in, inlen, boundary, boundary_len );
     
    108103            delim = tr_memmem( in, inlen, boundary, boundary_len );
    109104            part_len = delim ? (size_t)(delim-part) : inlen;
    110 #if 0
    111             fprintf( stderr, "part_len is %d\n", (int)part_len );
    112             fprintf( stderr, "part is [%*.*s]\n", (int)part_len, (int)part_len, part );
    113 #endif
    114105
    115106            if( part_len )
     
    129120                            body_len -= 2;
    130121                       
    131 #if 0
    132                         fprintf( stderr, "body_len is %d\n", (int)body_len );
    133                         fprintf( stderr, "body is [%*.*s]\n", (int)body_len, (int)body_len, body );
    134 #endif
    135 
    136122                        ctor = tr_ctorNew( s->session );
    137123                        tr_ctorSetMetainfo( ctor, (void*)body, body_len );
     
    150136
    151137        {
    152             int len;
    153             char * response;
    154             tr_benc top;
    155             tr_bencInitDict( &top, 2 );
    156             tr_bencDictAddStr( &top, "result", "success" );
    157             tr_bencDictAddDict( &top, "arguments", 0 );
    158             response = tr_bencSaveAsJSON( &top, &len );
     138            /* use xml here because json responses to file uploads is trouble.
     139             * see http://www.malsup.com/jquery/form/#sample7 for details */
     140            const char * response = "<result>success</result>";
     141            const int len = strlen( response );
    159142            evbuffer_add_printf( s->out, "HTTP/1.1 200 OK\r\n"
    160                                          "Content-Type: application/json\r\n"
     143                                         "Content-Type: text/xml\r\n"
    161144                                         "Content-Length: %d\r\n"
    162145                                         "\r\n"
    163                                          "%*.*s", len, len, len, response );
    164             tr_free( response );
    165             tr_bencFree( &top );
     146                                         "%s\r\n", len, response );
    166147        }
    167148    }
Note: See TracChangeset for help on using the changeset viewer.