[dovecot-cvs] dovecot/src/lib-auth auth-server-connection.c, 1.9,
	1.10 auth-server-connection.h, 1.6, 1.7
    cras at dovecot.org 
    cras at dovecot.org
       
    Tue Oct 19 03:51:23 EEST 2004
    
        - Previous message: [dovecot-cvs] dovecot/src/auth Makefile.am, 1.36,
	1.37 auth-client-connection.c, 1.17,
	1.18 auth-client-connection.h, 1.3,
	1.4 auth-client-interface.h, 1.9,
	1.10 auth-master-connection.c, 1.14,
	1.15 auth-master-connection.h, 1.5,
	1.6 auth-master-interface.h, 1.6, 1.7
- Next message: [dovecot-cvs] dovecot/src/master auth-process.c,1.63,1.64
-  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
  
Update of /var/lib/cvs/dovecot/src/lib-auth
In directory talvi:/tmp/cvs-serv16627/lib-auth
Modified Files:
	auth-server-connection.c auth-server-connection.h 
Log Message:
Added VERSION command and checking to authentication protocol.
Index: auth-server-connection.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-auth/auth-server-connection.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- auth-server-connection.c	13 Oct 2004 16:38:34 -0000	1.9
+++ auth-server-connection.c	19 Oct 2004 00:51:21 -0000	1.10
@@ -140,6 +140,23 @@
 		return;
 	}
 
+	if (conn->version_received) {
+		line = i_stream_next_line(conn->input);
+		if (line == NULL)
+			return;
+
+		/* make sure the major version matches */
+		if (strncmp(line, "VERSION\t", 8) != 0 ||
+		    atoi(t_strcut(line + 8, '.')) !=
+		    AUTH_CLIENT_PROTOCOL_MAJOR_VERSION) {
+			i_error("Authentication server not compatible with "
+				"this client (mixed old and new binaries?)");
+			auth_server_connection_destroy(conn, FALSE);
+			return;
+		}
+		conn->version_received = TRUE;
+	}
+
 	conn->refcount++;
 	while ((line = i_stream_next_line(conn->input)) != NULL) {
 		if (strncmp(line, "OK\t", 3) == 0)
@@ -173,6 +190,7 @@
 auth_server_connection_new(struct auth_client *client, const char *path)
 {
 	struct auth_server_connection *conn;
+	const char *handshake;
 	pool_t pool;
 	int fd;
 
@@ -209,9 +227,13 @@
 	conn->next = client->connections;
 	client->connections = conn;
 
+	handshake = t_strdup_printf("VERSION\t%u.%u\nCPID\t%u\n",
+				    AUTH_CLIENT_PROTOCOL_MAJOR_VERSION,
+                                    AUTH_CLIENT_PROTOCOL_MINOR_VERSION,
+				    client->pid);
+
         client->conn_waiting_handshake_count++;
-	if (o_stream_send_str(conn->output,
-			      t_strdup_printf("CPID\t%u\n", client->pid)) < 0) {
+	if (o_stream_send_str(conn->output, handshake) < 0) {
 		errno = conn->output->stream_errno;
 		i_warning("Error sending handshake to auth server: %m");
 		auth_server_connection_destroy(conn, TRUE);
Index: auth-server-connection.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-auth/auth-server-connection.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- auth-server-connection.h	13 Oct 2004 16:38:34 -0000	1.6
+++ auth-server-connection.h	19 Oct 2004 00:51:21 -0000	1.7
@@ -46,6 +46,7 @@
 
         struct hash_table *requests;
 
+	unsigned int version_received:1;
 	unsigned int handshake_received:1;
 	unsigned int has_plain_mech:1;
 };
    
    
        
	- Previous message: [dovecot-cvs] dovecot/src/auth Makefile.am, 1.36,
	1.37 auth-client-connection.c, 1.17,
	1.18 auth-client-connection.h, 1.3,
	1.4 auth-client-interface.h, 1.9,
	1.10 auth-master-connection.c, 1.14,
	1.15 auth-master-connection.h, 1.5,
	1.6 auth-master-interface.h, 1.6, 1.7
- Next message: [dovecot-cvs] dovecot/src/master auth-process.c,1.63,1.64
-  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
More information about the dovecot-cvs
mailing list