[Cvs-nserver-commits] CVS: cvs-nserver/src network-client.c,1.1.4.3,1.1.4.4 client.c,1.1.1.7.2.6.2.1
Brought to you by:
tyranny
From: Alexey M. <ty...@us...> - 2002-02-09 19:46:16
|
Update of /cvsroot/cvs-nserver/cvs-nserver/src In directory usw-pr-cvs1:/tmp/cvs-serv14623 Modified Files: Tag: NCLI-1-11-1 network-client.c client.c Log Message: Rearrange; split a routine Index: network-client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/network-client.c,v retrieving revision 1.1.4.3 retrieving revision 1.1.4.4 diff -u -d -r1.1.4.3 -r1.1.4.4 --- network-client.c 18 Sep 2001 19:50:18 -0000 1.1.4.3 +++ network-client.c 9 Feb 2002 19:46:13 -0000 1.1.4.4 @@ -20,6 +20,15 @@ #include "network-client.h" +NCLI +put_ncli_on_top_of_another (NCLI *top_ncli, NCLI new_ncli) +{ + new_ncli->next = *top_ncli; + *top_ncli = new_ncli; + return new_ncli; +} + + /* Read a line using specified network client. Result does not contain terminating LF and should be free()ed by caller. Very dumb implementation. */ Index: client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/client.c,v retrieving revision 1.1.1.7.2.6.2.12 retrieving revision 1.1.1.7.2.6.2.13 diff -u -d -r1.1.1.7.2.6.2.12 -r1.1.1.7.2.6.2.13 --- client.c 19 Dec 2001 10:34:40 -0000 1.1.1.7.2.6.2.12 +++ client.c 9 Feb 2002 19:46:13 -0000 1.1.1.7.2.6.2.13 @@ -438,18 +438,36 @@ #ifdef CLIENT_SUPPORT -static NCLI ncli = NULL; +static NCLI top_ncli = NULL; + +static NCLI +put_ncli_on_top (NCLI ncli) +{ + return put_ncli_on_top_of_another(&top_ncli, ncli); +} + +static NCLI +insert_ncli_a_layer_below (NCLI new_ncli) +{ + new_ncli->next = top_ncli->next; + top_ncli->next = new_ncli; + return top_ncli; +} + int client_prune_dirs; static List *ignlist = (List *) NULL; +#if defined(GSSAPI_SUPPORT) || defined(KERBEROS_SUPPORT) /* Buffer to write to the server. */ static struct buffer *to_server; /* Buffer used to read from the server. */ static struct buffer *from_server; +#endif /* defined(GSSAPI_SUPPORT) || defined(KERBEROS_SUPPORT) */ + /* * Read a line from the server. Result does not include the terminating \n. @@ -464,9 +482,9 @@ { char *result; - ncli->flush(ncli); + top_ncli->flush(top_ncli); - result = ncli_read_line(ncli); + result = ncli_read_line(top_ncli); if (resultp != NULL) *resultp = result; @@ -3035,7 +3053,7 @@ if (len == 0) len = strlen (str); - ncli->write(ncli, str, len); + top_ncli->write(top_ncli, str, len); } /* Read up to LEN bytes from the server. Returns actual number of @@ -3047,7 +3065,7 @@ size_t len; { - int nread = ncli->read(ncli, buf, len); + size_t nread = top_ncli->read(top_ncli, buf, len); if (nread < len) error(1, 0, "end of file from server"); @@ -3186,7 +3204,7 @@ } */ - ncli->disconnect(ncli); + top_ncli->disconnect(top_ncli); server_started = 0; @@ -3648,14 +3666,6 @@ } - -static void -put_ncli_on_top (NCLI new_ncli) -{ - new_ncli->next = ncli; - ncli = new_ncli; -} - static int ncli_error (NCLI ncli, char *msg, ...) { @@ -3678,6 +3688,8 @@ int tofd, fromfd; int rootless; + NCLI logging_ncli = NULL; + /* Clear our static variables for this invocation. */ if (toplevel_repos != NULL) free (toplevel_repos); @@ -3693,10 +3705,13 @@ case nserver_method: case sslnserver_method: case gserver_method: + { + NCLI socket_ncli; if (!current_parsed_root->port) current_parsed_root->port = get_cvs_port_number (current_parsed_root); - ncli = create_socket_client(current_parsed_root, ncli_error); + socket_ncli = create_socket_client(current_parsed_root, ncli_error); + put_ncli_on_top(socket_ncli); switch (current_parsed_root->method) { @@ -3715,6 +3730,7 @@ /* get rid of compilation warning */ break; } + } break; @@ -3727,8 +3743,11 @@ #endif case ext_method: - ncli = create_rsh_client(current_parsed_root, ncli_error); + { + NCLI rsh_ncli = create_rsh_client(current_parsed_root, ncli_error); + put_ncli_on_top(rsh_ncli); break; + } case server_method: #if defined(START_SERVER) @@ -3753,27 +3772,27 @@ } - if (ncli == NULL) + if (top_ncli == NULL) error(1, 0, "Internal error: ncli was not created for CVSROOT=%s", current_parsed_root->original); /* connect() to remote host or something similar. */ - ncli->connect(ncli); + top_ncli->connect(top_ncli); /* run authorization mini-protocol */ - if (!authenticate_against_server(ncli, verify_only)) { + if (!authenticate_against_server(top_ncli, verify_only)) { error (0, 0, "authorization failed: server %s:%d rejected access", current_parsed_root->hostname, current_parsed_root->port); - ncli->disconnect(ncli); + top_ncli->disconnect(top_ncli); error_exit (); } /* do nothing more if we're just checking while 'cvs login' */ if (verify_only) { - ncli->disconnect(ncli); + top_ncli->disconnect(top_ncli); return; } @@ -3782,13 +3801,13 @@ /* Setup log files, if any */ if (getenv("CVS_CLIENT_LOG") != NULL) { - NCLI logging_client = create_logging_client(current_parsed_root, ncli_error); + logging_ncli = create_logging_client(current_parsed_root, ncli_error); - printf("Created logging_client: %p\n", logging_client); + printf("Created logging_client: %p\n", logging_ncli); - logging_client->connect(logging_client); + logging_ncli->connect(logging_ncli); - put_ncli_on_top(logging_client); + put_ncli_on_top(logging_ncli); } @@ -3989,20 +4008,32 @@ #ifdef HAVE_ZLIB_H if (supported_request ("Gzip-stream")) { + NCLI zlib_ncli; char gzip_level_buf[5]; send_to_server ("Gzip-stream ", 0); sprintf (gzip_level_buf, "%d", get_gzip_level()); send_to_server (gzip_level_buf, 0); send_to_server ("\012", 1); + zlib_ncli = create_zlib_client(current_parsed_root, ncli_error); + printf("Created zlib_ncli = %p\n", zlib_ncli); + + /* special processing, because all the chain is already connect()'ed */ + zlib_ncli->connect(zlib_ncli); + if (logging_ncli == NULL) + put_ncli_on_top(zlib_ncli); + else + insert_ncli_a_layer_below (zlib_ncli); + /* All further communication with the server will be compressed. */ - +/* to_server = compress_buffer_initialize (to_server, 0, get_gzip_level(), (BUFMEMERRPROC) NULL); from_server = compress_buffer_initialize (from_server, 1, get_gzip_level(), (BUFMEMERRPROC) NULL); +*/ } #endif /* HAVE_ZLIB_H */ #ifndef NO_CLIENT_GZIP_PROCESS |