Previous fix fixed. Meta protocol should be really flawless from now on!

This commit is contained in:
Guus Sliepen 2000-05-02 09:55:34 +00:00
parent 989d7edc07
commit aeccaca829
3 changed files with 13 additions and 8 deletions

View file

@ -956,19 +956,19 @@ cp
for(;;)
{
p=0;
cl->reqlen = 0;
for(i = oldlen; i < cl->buflen; i++)
{
if(cl->buffer[i] == '\n')
{
p = i + 1;
cl->buffer[p] = 0; /* add end-of-string so we can use sscanf */
cl->buffer[i] = 0; /* replace end-of-line by end-of-string so we can use sscanf */
cl->reqlen = i + 1;
break;
}
}
if(p)
if(cl->reqlen)
{
if(sscanf(cl->buffer, "%d", &request) == 1)
{
@ -988,8 +988,8 @@ cp
syslog(LOG_ERR, "Bogus data received: %s", cl->buffer);
}
cl->buflen -= p;
memmove(cl->buffer, cl->buffer + p, cl->buflen);
cl->buflen -= cl->reqlen;
memmove(cl->buffer, cl->buffer + cl->reqlen, cl->buflen);
oldlen = 0;
}
else

View file

@ -114,6 +114,7 @@ typedef struct conn_list_t {
enc_key_t *key; /* encrypt with this key */
char buffer[MAXBUFSIZE]; /* metadata input buffer */
int buflen; /* bytes read into buffer */
int reqlen; /* length of first request in buffer */
struct conn_list_t *nexthop; /* nearest meta-hop in this direction */
struct conn_list_t *next; /* after all, it's a list of connections */
} conn_list_t;

View file

@ -616,7 +616,9 @@ cp
syslog(LOG_DEBUG, "Forwarding request for public key to " IP_ADDR_S,
IP_ADDR_V(fw->nexthop->vpn_ip));
if(write(fw->nexthop->meta_socket, cl->buffer, strlen(cl->buffer)) < 0)
cl->buffer[cl->reqlen-1] = '\n';
if(write(fw->nexthop->meta_socket, cl->buffer, cl->reqlen) < 0)
{
syslog(LOG_ERR, "send failed: %s:%d: %m", __FILE__, __LINE__);
return -1;
@ -711,7 +713,9 @@ cp
syslog(LOG_DEBUG, "Forwarding public key to " IP_ADDR_S,
IP_ADDR_V(fw->nexthop->vpn_ip));
if((write(fw->nexthop->meta_socket, cl->buffer, strlen(cl->buffer))) < 0)
cl->buffer[cl->reqlen-1] = '\n';
if((write(fw->nexthop->meta_socket, cl->buffer, cl->reqlen)) < 0)
{
syslog(LOG_ERR, "send failed: %s:%d: %m", __FILE__, __LINE__);
return -1;