@@ -479,10 +479,32 @@
479 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
480 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(pXfer->pOut, "igot %s\n", db_column_text(&q, 0));
481 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
482 482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
483 483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Send a single config card for configuration item zName
487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void send_config_card(Xfer *pXfer, const char *zName){
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName[0]!='@' ){
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zValue = db_get(zName, 0);
491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zValue ){
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pXfer->pOut, "config %s %d\n%s\n",
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, strlen(zValue), zValue);
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ free(zValue);
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content;
498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&content);
499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configure_render_special_name(zName, &content);
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pXfer->pOut, "config %s %d\n%s\n", zName,
501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_size(&content), blob_str(&content));
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&content);
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
484 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
485 507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
486 508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If this variable is set, disable login checks. Used for debugging
487 509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** only.
488 510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -507,10 +529,12 @@
507 529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nErr = 0;
508 530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Xfer xfer;
509 531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int deltaFlag = 0;
510 532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isClone = 0;
511 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nGimme = 0;
534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int size;
535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int recvConfig = 0;
512 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
513 537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&xfer, 0, sizeof(xfer));
514 538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blobarray_zero(xfer.aToken, count(xfer.aToken));
515 539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content_type(g.zContentType);
516 540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&xfer.err);
@@ -678,29 +702,55 @@
678 702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& xfer.nToken==2
679 703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
680 704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.okRead ){
681 705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zName = blob_str(&xfer.aToken[1]);
682 706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( configure_is_exportable(zName) ){
683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zName[0]!='@' ){
684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zValue = db_get(zName, 0);
685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zValue ){
686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(xfer.pOut, "config %s %d\n%s\n", zName,
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- strlen(zValue), zValue);
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- free(zValue);
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob content;
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&content);
693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- configure_render_special_name(zName, &content);
694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(xfer.pOut, "config %s %d\n%s\n", zName,
695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_size(&content), blob_str(&content));
696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&content);
697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ send_config_card(&xfer, zName);
698 708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
699 709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
700 710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else
701 711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* config NAME SIZE \n CONTENT
713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Receive a configuration value from the client. This is only
715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** permitted for high-privilege users.
716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( blob_eq(&xfer.aToken[0],"config") && xfer.nToken==3
718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && blob_is_int(&xfer.aToken[2], &size) ){
719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName = blob_str(&xfer.aToken[1]);
720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content;
721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&content);
722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_extract(xfer.pIn, size, &content);
723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.okAdmin ){
724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_reset_content();
725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ error not\sauthorized\sto\spush\sconfiguration\data
726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nErr++;
727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName[0]!='@' ){
730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !recvConfig ){
731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configure_prepare_to_receive(0);
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ recvConfig = 1;
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "REPLACE INTO config(name,value) VALUES(%Q,%Q)",
736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, blob_str(&content)
737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Notice that we are evaluating arbitrary SQL received from the
740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** client. But this can only happen if the client has authenticated
741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** as an administrator, so presumably we trust the client at this
742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** point.
743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("%s", blob_str(&content));
745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&content);
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_seek(xfer.pIn, 1, BLOB_SEEK_CUR);
748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
702 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* cookie TEXT
703 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
704 754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** A cookie contains a arbitrary-length argument that is server-defined.
705 755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The argument must be encoded so as not to contain any whitespace.
706 756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The server can optionally send a cookie to the client. The client
@@ -742,10 +792,13 @@
742 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
send_all(&xfer);
743 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( isPull ){
744 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
create_cluster();
745 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
send_unclustered(&xfer);
746 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( recvConfig ){
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configure_finalize_receive();
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
747 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(0);
748 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
749 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
750 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
751 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-xfer
@@ -793,19 +846,25 @@
793 846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
794 847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Records are pushed to the server if pushFlag is true. Records
795 848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** are pulled if pullFlag is true. A full sync occurs if both are
796 849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** true.
797 850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void client_sync(int pushFlag, int pullFlag, int cloneFlag, int configMask){
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void client_sync(
852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pushFlag, /* True to do a push (or a sync) */
853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pullFlag, /* True to do a pull (or a sync) */
854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cloneFlag, /* True if this is a clone */
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int configRcvMask, /* Receive these configuration items */
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int configSendMask /* Send these configuration items */
857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
799 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int go = 1; /* Loop until zero */
800 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSCode = db_get("server-code", "x");
801 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPCode = db_get("project-code", 0);
802 861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCard = 0; /* Number of cards sent or received */
803 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nCycle = 0; /* Number of round trips to the server */
804 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int size; /* Size of a config value */
805 864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nFileSend = 0;
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int origConfigMask; /* Original value of configMask */
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int origConfigRcvMask; /* Original value of configRcvMask */
807 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nFileRecv; /* Number of files received */
808 867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mxPhantomReq = 200; /* Max number of phantoms to request per comm */
809 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCookie; /* Server cookie */
810 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob send; /* Text we are sending to the server */
811 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob recv; /* Reply we got back from the server */
@@ -814,11 +873,11 @@
814 873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(&xfer, 0, sizeof(xfer));
815 874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.pIn = &recv;
816 875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.pOut = &send;
817 876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.mxSend = db_get_int("max-upload", 250000);
818 877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( pushFlag || pullFlag || cloneFlag || configMask );
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( pushFlag | pullFlag | cloneFlag | configRcvMask | configSendMask );
820 879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( !g.urlIsFile ); /* This only works for networking */
821 880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
822 881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
823 882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_record_repository_filename(0);
824 883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
@@ -827,11 +886,11 @@
827 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blobarray_zero(xfer.aToken, count(xfer.aToken));
828 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&send);
829 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&recv);
830 889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&xfer.err);
831 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&xfer.line);
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- origConfigMask = configMask;
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ origConfigRcvMask = configRcvMask;
833 892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
834 893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
835 894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Always begin with a clone, pull, or push message
836 895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
837 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cloneFlag ){
@@ -872,22 +931,34 @@
872 931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
send_unsent(&xfer);
873 932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCard += send_unclustered(&xfer);
874 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
875 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
876 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Send configuration parameter requests */
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( configMask ){
936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( configRcvMask ){
878 937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName;
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zName = configure_first_name(configMask);
938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = configure_first_name(configRcvMask);
880 939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( zName ){
881 940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&send, "reqconfig %s\n", zName);
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zName = configure_next_name(configMask);
941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = configure_next_name(configRcvMask);
883 942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCard++;
884 943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( configMask & (CONFIGSET_USER|CONFIGSET_TKT) ){
944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( configRcvMask & (CONFIGSET_USER|CONFIGSET_TKT) ){
886 945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
configure_prepare_to_receive(0);
887 946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- configMask = 0;
947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configRcvMask = 0;
948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Send configuration parameters being pushed */
951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( configSendMask ){
952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zName;
953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = configure_first_name(configSendMask);
954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( zName ){
955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ send_config_card(&xfer, zName);
956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName = configure_next_name(configSendMask);
957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nCard++;
958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configSendMask = 0;
889 960 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
890 961 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
891 962 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Append randomness to the end of the message */
892 963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if 0 /* Enable this after all servers have upgraded */
893 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRandomness = db_text(0, "SELECT hex(randomblob(20))");
@@ -1006,17 +1077,22 @@
1006 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& blob_is_int(&xfer.aToken[2], &size) ){
1007 1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName = blob_str(&xfer.aToken[1]);
1008 1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob content;
1009 1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&content);
1010 1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_extract(xfer.pIn, size, &content);
1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( configure_is_exportable(zName) & origConfigMask ){
1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( configure_is_exportable(zName) & origConfigRcvMask ){
1012 1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zName[0]!='@' ){
1013 1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1014 1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"REPLACE INTO config(name,value) VALUES(%Q,%Q)",
1015 1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName, blob_str(&content)
1016 1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1017 1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Notice that we are evaluating arbitrary SQL received from the
1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** server. But this can only happen if we have specifically
1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** requested configuration information from the server, so
1092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** presumably the operator trusts the server.
1093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1018 1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("%s", blob_str(&content));
1019 1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1020 1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1021 1097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCard++;
1022 1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&content);
@@ -1066,14 +1142,14 @@
1066 1142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("%b", &xfer.err);
1067 1143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1068 1144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blobarray_reset(xfer.aToken, xfer.nToken);
1069 1145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&xfer.line);
1070 1146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( origConfigMask & (CONFIGSET_TKT|CONFIGSET_USER) ){
1147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( origConfigRcvMask & (CONFIGSET_TKT|CONFIGSET_USER) ){
1072 1148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
configure_finalize_receive();
1073 1149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- origConfigMask = 0;
1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ origConfigRcvMask = 0;
1075 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
printf(zValueFormat, "Received:",
1076 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_size(&recv), nCard,
1077 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
xfer.nFileRcvd, xfer.nDeltaRcvd + xfer.nDanglingFile);
1078 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&recv);
1079 1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nCycle++;
1080 1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!