[Spread-cvs] commit: r364 - branches/branch_3_17/daemon
jonathan at spread.org
jonathan at spread.org
Tue Nov 14 02:56:32 EST 2006
Author: jonathan
Date: 2006-11-14 02:56:32 -0500 (Tue, 14 Nov 2006)
New Revision: 364
Modified:
branches/branch_3_17/daemon/Changelog
branches/branch_3_17/daemon/arch.h
branches/branch_3_17/daemon/sp.c
Log:
More carefully specify the length of the spread_name and check for it.
The name is now defined in termms of the os's max host name.
Default connection string is now defined in terms of DEFAULT_SPREAD_PORT
Define Q() and QQ() macros to help use #define's in strings.
Modified: branches/branch_3_17/daemon/Changelog
===================================================================
--- branches/branch_3_17/daemon/Changelog 2006-11-14 07:42:20 UTC (rev 363)
+++ branches/branch_3_17/daemon/Changelog 2006-11-14 07:56:32 UTC (rev 364)
@@ -1,3 +1,17 @@
+Tue Nov 14 01:40:43 2006 Jonathan Stanton <jonathan at cnds.jhu.edu>
+
+ * sp.c (SP_connect_timeout): Rename variables to make more
+ readable. Define length of spread_name parameter in terms
+ of MAXHOSTNAMELEN because it is determined by how large a
+ host name can be.
+
+ Define the default spread connection port (4803) in terms
+ of the DEFAULT_SPREAD_PORT to remove explicit port number
+ from source code.
+
+ * arch.h: Add Q() and QQ() macros in order to make strings
+ from #define macros.
+
Tue Nov 14 00:20:02 2006 Jonathan Stanton <jonathan at cnds.jhu.edu>
* groups.c (G_compute_and_notify,G_mess_to_group): Propagate
Modified: branches/branch_3_17/daemon/arch.h
===================================================================
--- branches/branch_3_17/daemon/arch.h 2006-11-14 07:42:20 UTC (rev 363)
+++ branches/branch_3_17/daemon/arch.h 2006-11-14 07:56:32 UTC (rev 364)
@@ -193,9 +193,12 @@
#else
#define get_rand rand
#endif
-
+/* Useful CPP macros to make strings from #defines */
+#define Q(x) # x
+#define QQ(x) Q(x)
+
#define ENDIAN_TYPE 0x80000080
#define Get_endian( type ) ( (type) & ENDIAN_TYPE )
Modified: branches/branch_3_17/daemon/sp.c
===================================================================
--- branches/branch_3_17/daemon/sp.c 2006-11-14 07:42:20 UTC (rev 363)
+++ branches/branch_3_17/daemon/sp.c 2006-11-14 07:56:32 UTC (rev 364)
@@ -46,6 +46,7 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/un.h>
+#include <sys/param.h>
#include <netdb.h>
#include <signal.h>
#include <sys/ioctl.h>
@@ -81,6 +82,16 @@
void *auth_data;
};
+/* length of spread_name connect field is limited to 5 digit port # + '@' + hostname */
+#define SPREAD_MAXCONNECT_NAMELEN MAXHOSTNAMELEN + 6
+
+/* default spread connection method depends on whether unix sockets are available */
+#ifndef ARCH_PC_WIN95
+# define DEFAULT_SPREAD_CONNECTION QQ(DEFAULT_SPREAD_PORT)
+#else
+# define DEFAULT_SPREAD_CONNECTION QQ(DEFAULT_SPREAD_PORT) "@localhost"
+#endif /* ARCH_PC_WIN95 */
+
static int sp_null_authenticate(int, void *);
static struct auth_method_info Auth_Methods[MAX_AUTH_METHODS] = { {"NULL", sp_null_authenticate, NULL} };
static int Num_Reg_Auth_Methods = 1;
@@ -462,9 +473,9 @@
int32 host_address;
int32 lport, i1, i2, i3, i4;
char *c_ptr;
- char host_name[80];
- char s_name[80];
- char dummy_s[80];
+ char host_name[MAXHOSTNAMELEN];
+ char s_name[SPREAD_MAXCONNECT_NAMELEN + 1];
+ char dummy_s[20];
char conn[MAX_PRIVATE_NAME+5];
signed char auth_list_len;
char auth_list[MAX_AUTH_NAME * MAX_AUTH_METHODS];
@@ -477,7 +488,7 @@
int ret, i;
unsigned int len;
int sp_v1, sp_v2, sp_v3;
- char l;
+ char cval;
int32 on;
struct sockaddr_in inet_addr;
@@ -508,19 +519,18 @@
* 3333 at 128.220.221.1
*/
- if( spread_name == 0 || (!strcmp( spread_name, "" ) ) )
-#ifndef ARCH_PC_WIN95
- strcpy( s_name, "4803" );
-#else
- strcpy( s_name, "4803 at localhost" );
-#endif /* ARCH_PC_WIN95 */
-
- else strcpy( s_name, spread_name );
+ if( spread_name == NULL || (!strcmp( spread_name, "" ) ) ) {
+ strcpy( s_name, DEFAULT_SPREAD_CONNECTION );
+ } else {
+ if (strlen(spread_name) > SPREAD_MAXCONNECT_NAMELEN)
+ return( ILLEGAL_SPREAD );
+ strcpy( s_name, spread_name );
+ }
c_ptr = strchr( s_name, ' ');
- if( c_ptr != 0 ) return ( ILLEGAL_SPREAD );
+ if( c_ptr != NULL ) return ( ILLEGAL_SPREAD );
c_ptr = strchr( s_name, '@');
- if( c_ptr == 0 )
+ if( c_ptr == NULL )
{
#ifndef ARCH_PC_WIN95
@@ -537,7 +547,7 @@
ret = sscanf( s_name,"%d%s", &lport, host_name );
if( ret != 2) return( ILLEGAL_SPREAD );
host_ptr = gethostbyname( host_name );
- if( host_ptr != 0 )
+ if( host_ptr != NULL )
{
/* option 3333 at commedia.cs.jhu.edu */
memcpy( &host_address, host_ptr->h_addr, sizeof(int32) );
@@ -546,7 +556,7 @@
for(i=0; i< 3; i++)
{
c_ptr = strchr(host_name, '.' );
- if ( c_ptr == 0) return( ILLEGAL_SPREAD );
+ if ( c_ptr == NULL) return( ILLEGAL_SPREAD );
*c_ptr = ' ';
}
ret = sscanf( host_name, "%d%d%d%d%s", &i1, &i2, &i3, &i4, dummy_s );
@@ -732,46 +742,46 @@
return( REJECT_AUTH );
}
- l=0;
- ret = recv_nointr_timeout( s, &l, 1, 0, &time_out);
+ cval=0;
+ ret = recv_nointr_timeout( s, &cval, 1, 0, &time_out);
if( ret <= 0 )
{
Alarm( SESSION, "SP_connect: unable to read answer %d: %s\n", ret, sock_strerror(sock_errno));
close( s );
return( CONNECTION_CLOSED );
}
- if( l != ACCEPT_SESSION )
+ if( cval != ACCEPT_SESSION )
{
- Alarm( SESSION, "SP_connect: session rejected %d\n", l);
+ Alarm( SESSION, "SP_connect: session rejected %d\n", cval);
close( s );
- return( l );
+ return( cval );
}
- ret = recv_nointr_timeout( s, &l, 1, 0, &time_out);
+ ret = recv_nointr_timeout( s, &cval, 1, 0, &time_out);
if( ret <= 0 )
{
Alarm( SESSION, "SP_connect: unable to read version %d: %s\n", ret, sock_strerror(sock_errno));
close( s );
return( CONNECTION_CLOSED );
}
- sp_v1 = l;
+ sp_v1 = cval;
- ret = recv_nointr_timeout( s, &l, 1, 0, &time_out);
+ ret = recv_nointr_timeout( s, &cval, 1, 0, &time_out);
if( ret <= 0 )
{
Alarm( SESSION, "SP_connect: unable to read subversion %d: %s\n", ret, sock_strerror(sock_errno));
close( s );
return( CONNECTION_CLOSED );
}
- sp_v2 = l;
+ sp_v2 = cval;
- ret = recv_nointr_timeout( s, &l, 1, 0, &time_out);
+ ret = recv_nointr_timeout( s, &cval, 1, 0, &time_out);
if( ret <= 0 )
{
Alarm( SESSION, "SP_connect: unable to read patch version %d: %s\n", ret, sock_strerror(sock_errno));
close( s );
return( CONNECTION_CLOSED );
}
- sp_v3 = l;
+ sp_v3 = cval;
/* checking spread version. Should be at least 3.01 */
if( sp_v1*10000 + sp_v2*100 + sp_v3 < 30100 )
@@ -789,14 +799,14 @@
return( REJECT_VERSION );
}
- ret = recv_nointr_timeout( s, &l, 1, 0, &time_out);
+ ret = recv_nointr_timeout( s, &cval, 1, 0, &time_out);
if( ret <= 0 )
{
Alarm( SESSION, "SP_connect: unable to read size of group %d: %s\n", ret, sock_strerror(sock_errno));
close( s );
return( CONNECTION_CLOSED );
}
- len = l;
+ len = cval;
ret = recv_nointr_timeout( s, private_group, len, 0, &time_out);
if( ret <= 0 )
{
More information about the Spread-cvs
mailing list