ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/connection.C
(Generate patch)

Comparing gvpe/src/connection.C (file contents):
Revision 1.61 by pcg, Sat Nov 10 19:43:37 2007 UTC vs.
Revision 1.62 by pcg, Sat Dec 1 23:35:31 2007 UTC

96 96
97 bool find (const rsaid &id, rsachallenge &chg) 97 bool find (const rsaid &id, rsachallenge &chg)
98 { 98 {
99 for (iterator i = begin (); i != end (); ++i) 99 for (iterator i = begin (); i != end (); ++i)
100 { 100 {
101 if (!memcmp (&id, &i->id, sizeof id) && i->expire > ev::ev_now ()) 101 if (!memcmp (&id, &i->id, sizeof id) && i->expire > ev_now ())
102 { 102 {
103 memcpy (&chg, &i->chg, sizeof chg); 103 memcpy (&chg, &i->chg, sizeof chg);
104 104
105 erase (i); 105 erase (i);
106 return true; 106 return true;
118 rsa_entry e; 118 rsa_entry e;
119 119
120 RAND_bytes ((unsigned char *)&id, sizeof id); 120 RAND_bytes ((unsigned char *)&id, sizeof id);
121 RAND_bytes ((unsigned char *)&chg, sizeof chg); 121 RAND_bytes ((unsigned char *)&chg, sizeof chg);
122 122
123 e.expire = ev::ev_now () + RSA_TTL; 123 e.expire = ev_now () + RSA_TTL;
124 e.id = id; 124 e.id = id;
125 memcpy (&e.chg, &chg, sizeof chg); 125 memcpy (&e.chg, &chg, sizeof chg);
126 126
127 push_back (e); 127 push_back (e);
128 128
143 if (empty ()) 143 if (empty ())
144 w.stop (); 144 w.stop ();
145 else 145 else
146 { 146 {
147 for (iterator i = begin (); i != end (); ) 147 for (iterator i = begin (); i != end (); )
148 if (i->expire <= ev::ev_now ()) 148 if (i->expire <= ev_now ())
149 i = erase (i); 149 i = erase (i);
150 else 150 else
151 ++i; 151 ++i;
152 } 152 }
153} 153}
220 iterator i; 220 iterator i;
221 221
222 for (i = begin (); i != end (); ) 222 for (i = begin (); i != end (); )
223 if (i->host == host) 223 if (i->host == host)
224 break; 224 break;
225 else if (i->last < ev::ev_now () - NRL_EXPIRE) 225 else if (i->last < ev_now () - NRL_EXPIRE)
226 i = erase (i); 226 i = erase (i);
227 else 227 else
228 i++; 228 i++;
229 229
230 if (i == end ()) 230 if (i == end ())
232 net_rateinfo ri; 232 net_rateinfo ri;
233 233
234 ri.host = host; 234 ri.host = host;
235 ri.pcnt = 1.; 235 ri.pcnt = 1.;
236 ri.diff = NRL_MAXDIF; 236 ri.diff = NRL_MAXDIF;
237 ri.last = ev::ev_now (); 237 ri.last = ev_now ();
238 238
239 push_front (ri); 239 push_front (ri);
240 240
241 return true; 241 return true;
242 } 242 }
244 { 244 {
245 net_rateinfo ri (*i); 245 net_rateinfo ri (*i);
246 erase (i); 246 erase (i);
247 247
248 ri.pcnt = ri.pcnt * NRL_ALPHA; 248 ri.pcnt = ri.pcnt * NRL_ALPHA;
249 ri.diff = ri.diff * NRL_ALPHA + (ev::ev_now () - ri.last); 249 ri.diff = ri.diff * NRL_ALPHA + (ev_now () - ri.last);
250 250
251 ri.last = ev::ev_now (); 251 ri.last = ev_now ();
252 252
253 double dif = ri.diff / ri.pcnt; 253 double dif = ri.diff / ri.pcnt;
254 254
255 bool send = dif > NRL_CUTOFF; 255 bool send = dif > NRL_CUTOFF;
256 256
888} 888}
889 889
890void 890void
891connection::recv_vpn_packet (vpn_packet *pkt, const sockinfo &rsi) 891connection::recv_vpn_packet (vpn_packet *pkt, const sockinfo &rsi)
892{ 892{
893 last_activity = ev::ev_now (); 893 last_activity = ev_now ();
894 894
895 slog (L_NOISE, "<<%d received packet type %d from %d to %d", 895 slog (L_NOISE, "<<%d received packet type %d from %d to %d",
896 conf->id, pkt->typ (), pkt->src (), pkt->dst ()); 896 conf->id, pkt->typ (), pkt->src (), pkt->dst ());
897 897
898 if (connectmode == conf_node::C_DISABLED) 898 if (connectmode == conf_node::C_DISABLED)
1168 } 1168 }
1169} 1169}
1170 1170
1171void connection::keepalive_cb (ev::timer &w, int revents) 1171void connection::keepalive_cb (ev::timer &w, int revents)
1172{ 1172{
1173 if (ev::ev_now () >= last_activity + ::conf.keepalive + 30) 1173 if (ev_now () >= last_activity + ::conf.keepalive + 30)
1174 { 1174 {
1175 reset_connection (); 1175 reset_connection ();
1176 establish_connection (); 1176 establish_connection ();
1177 } 1177 }
1178 else if (ev::ev_now () < last_activity + ::conf.keepalive) 1178 else if (ev_now () < last_activity + ::conf.keepalive)
1179 w.start (last_activity + ::conf.keepalive - ev::now ()); 1179 w.start (last_activity + ::conf.keepalive - ev::now ());
1180 else if (conf->connectmode != conf_node::C_ONDEMAND 1180 else if (conf->connectmode != conf_node::C_ONDEMAND
1181 || THISNODE->connectmode != conf_node::C_ONDEMAND) 1181 || THISNODE->connectmode != conf_node::C_ONDEMAND)
1182 { 1182 {
1183 send_ping (si); 1183 send_ping (si);
1184 w.start (5); 1184 w.start (5);
1185 } 1185 }
1186 else if (ev::ev_now () < last_activity + ::conf.keepalive + 10) 1186 else if (ev_now () < last_activity + ::conf.keepalive + 10)
1187 // hold ondemand connections implicitly a few seconds longer 1187 // hold ondemand connections implicitly a few seconds longer
1188 // should delete octx, though, or something like that ;) 1188 // should delete octx, though, or something like that ;)
1189 w.start (last_activity + ::conf.keepalive + 10 - ev::now ()); 1189 w.start (last_activity + ::conf.keepalive + 10 - ev::now ());
1190 else 1190 else
1191 reset_connection (); 1191 reset_connection ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines