Fossil

Check-in [4abf6079]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Use retry logic for SSL read/write as described in the OpenSSL docs.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4abf607937fac8e00269c2ce8f067b868ef21ef6
User & Date: mistachkin 2016-04-19 17:44:05.255
Context
2016-04-22
18:08
Add the ability to use a repository that is in a database protected by the SQLite Encryption Extension (SEE). SEE is proprietary code and is not included in this tree, but if a user has a copy of SEE, with this change she can compile a version of Fossil that uses it. ... (check-in: ed871fb5 user: drh tags: trunk)
15:39
Add the option to build against sqlite3-see.c (not in the source tree) rather than the built-in sqlite3.c. ... (check-in: 1ec6712e user: drh tags: see)
2016-04-19
17:44
Use retry logic for SSL read/write as described in the OpenSSL docs. ... (check-in: 4abf6079 user: mistachkin tags: trunk)
03:16
Check the return code form blob_delta_apply() to make sure there are no errors prior to using the result. ... (check-in: 85fc2e0a user: drh tags: trunk)
2016-04-02
04:47
Use retry logic for SSL read/write as described in the OpenSSL docs. ... (Closed-Leaf check-in: c13b6ba7 user: mistachkin tags: sslRetry)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/http_ssl.c.
450
451
452
453
454
455
456
457
458
459
460
461





462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477





478
479
480
481
482
483
484
  return cert;
}

/*
** Send content out over the SSL connection.
*/
size_t ssl_send(void *NotUsed, void *pContent, size_t N){
  size_t sent;
  size_t total = 0;
  while( N>0 ){
    sent = BIO_write(iBio, pContent, N);
    if( sent<=0 ) break;





    total += sent;
    N -= sent;
    pContent = (void*)&((char*)pContent)[sent];
  }
  return total;
}

/*
** Receive content back from the SSL connection.
*/
size_t ssl_receive(void *NotUsed, void *pContent, size_t N){
  size_t got;
  size_t total = 0;
  while( N>0 ){
    got = BIO_read(iBio, pContent, N);
    if( got<=0 ) break;





    total += got;
    N -= got;
    pContent = (void*)&((char*)pContent)[got];
  }
  return total;
}








<


|
|
>
>
>
>
>











<


|
|
>
>
>
>
>







450
451
452
453
454
455
456

457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476

477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
  return cert;
}

/*
** Send content out over the SSL connection.
*/
size_t ssl_send(void *NotUsed, void *pContent, size_t N){

  size_t total = 0;
  while( N>0 ){
    int sent = BIO_write(iBio, pContent, N);
    if( sent<=0 ){
      if( BIO_should_retry(iBio) ){
        continue;
      }
      break;
    }
    total += sent;
    N -= sent;
    pContent = (void*)&((char*)pContent)[sent];
  }
  return total;
}

/*
** Receive content back from the SSL connection.
*/
size_t ssl_receive(void *NotUsed, void *pContent, size_t N){

  size_t total = 0;
  while( N>0 ){
    int got = BIO_read(iBio, pContent, N);
    if( got<=0 ){
      if( BIO_should_retry(iBio) ){
        continue;
      }
      break;
    }
    total += got;
    N -= got;
    pContent = (void*)&((char*)pContent)[got];
  }
  return total;
}