projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix listening sockets.
[tinc]
/
src
/
net_packet.c
diff --git
a/src/net_packet.c
b/src/net_packet.c
index
5171a4f
..
725789d
100644
(file)
--- a/
src/net_packet.c
+++ b/
src/net_packet.c
@@
-17,7
+17,7
@@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: net_packet.c,v 1.1.2.
1 2002/02/18 16:25:16
guus Exp $
+ $Id: net_packet.c,v 1.1.2.
5 2002/02/26 23:26:41
guus Exp $
*/
#include "config.h"
*/
#include "config.h"
@@
-185,6
+185,7
@@
void send_udppacket(node_t *n, vpn_packet_t *inpkt)
vpn_packet_t *pkt[] = {&pkt1, &pkt2, &pkt1, &pkt2};
int nextpkt = 0;
vpn_packet_t *outpkt;
vpn_packet_t *pkt[] = {&pkt1, &pkt2, &pkt1, &pkt2};
int nextpkt = 0;
vpn_packet_t *outpkt;
+ int origlen;
int outlen, outpad;
long int complen = MTU + 12;
EVP_CIPHER_CTX ctx;
int outlen, outpad;
long int complen = MTU + 12;
EVP_CIPHER_CTX ctx;
@@
-210,6
+211,8
@@
cp
return;
}
return;
}
+ origlen = inpkt->len;
+
/* Compress the packet */
if(n->compression)
/* Compress the packet */
if(n->compression)
@@
-255,12
+258,14
@@
cp
/* Send the packet */
/* Send the packet */
- if((sendto(udp_socket
, (char *)&inpkt->seqno, inpkt->len, 0, &(n->address.sa), sizeof(sockaddr_t
))) < 0)
+ if((sendto(udp_socket
[0], (char *)&inpkt->seqno, inpkt->len, 0, &(n->address.sa), SALEN(n->address.sa
))) < 0)
{
syslog(LOG_ERR, _("Error sending packet to %s (%s): %s"),
n->name, n->hostname, strerror(errno));
return;
}
{
syslog(LOG_ERR, _("Error sending packet to %s (%s): %s"),
n->name, n->hostname, strerror(errno));
return;
}
+
+ inpkt->len = origlen;
cp
}
cp
}
@@
-344,7
+349,7
@@
cp
cp
}
cp
}
-void handle_incoming_vpn_data(
void
)
+void handle_incoming_vpn_data(
int sock
)
{
vpn_packet_t pkt;
int x, l = sizeof(x);
{
vpn_packet_t pkt;
int x, l = sizeof(x);
@@
-353,10
+358,10
@@
void handle_incoming_vpn_data(void)
socklen_t fromlen = sizeof(from);
node_t *n;
cp
socklen_t fromlen = sizeof(from);
node_t *n;
cp
- if(getsockopt(
udp_socket
, SOL_SOCKET, SO_ERROR, &x, &l) < 0)
+ if(getsockopt(
sock
, SOL_SOCKET, SO_ERROR, &x, &l) < 0)
{
syslog(LOG_ERR, _("This is a bug: %s:%d: %d:%s"),
{
syslog(LOG_ERR, _("This is a bug: %s:%d: %d:%s"),
- __FILE__, __LINE__,
udp_socket
, strerror(errno));
+ __FILE__, __LINE__,
sock
, strerror(errno));
return;
}
if(x)
return;
}
if(x)
@@
-365,7
+370,7
@@
cp
return;
}
return;
}
- if((pkt.len = recvfrom(
udp_socket
, (char *)&pkt.seqno, MAXSIZE, 0, &from.sa, &fromlen)) <= 0)
+ if((pkt.len = recvfrom(
sock
, (char *)&pkt.seqno, MAXSIZE, 0, &from.sa, &fromlen)) <= 0)
{
syslog(LOG_ERR, _("Receiving packet failed: %s"), strerror(errno));
return;
{
syslog(LOG_ERR, _("Receiving packet failed: %s"), strerror(errno));
return;