#define RESP_COMPLETE "Upload complete, "
#define RESP_SKIP "Skip-to-position: "
#define RESP_MISMATCH "Partfile initial sequence mismatch"
-#define RESP_NOPERM "<x-alert><h1>No permission!</h1></x-alert>"
static int upload_chunk( CURL *curl, struct file_info_t *fi, off_t csize ) {
int res = -1;
- int response_code;
+ long http_code;
ssize_t br;
char url[2048];
void *chunk;
}
curl_easy_getinfo( curl, CURLINFO_SPEED_UPLOAD_T, &fi->speed );
- curl_easy_getinfo( curl, CURLINFO_RESPONSE_CODE, &response_code );
+ curl_easy_getinfo( curl, CURLINFO_RESPONSE_CODE, &http_code );
// puts(reply.memory);
- switch ( response_code ) {
+ switch ( http_code ) {
case 200:
// simplest case, uploaded one chunk
if ( 0 == strncmp( reply.memory, RESP_HAVE, strlen( RESP_HAVE ) ) ) {
if ( completed == fi->coff && 0 == fi->remn )
res = 0;
}
- else if ( NULL != strstr( reply.memory, RESP_NOPERM ) ) {
- // this really should be a 401 or 403 ...
- err( "no permission, check credentials!", 0 );
- }
else
fprintf( stderr, "ERROR: unexpected response: %s", reply.memory );
break;
err( "response code 428 w/o 'Skip-to-position'", 0 );
break;
default:
- fprintf( stderr, "REMOTE ERROR: %d: %s\n", response_code, reply.memory );
+ fprintf( stderr, "REMOTE ERROR: %ld %s", http_code,
+ 100 > reply.size ? reply.memory : ( 403 == http_code ? "Forbidden" : "" ) );
break;
}