Mercurial > pidgin.yaz
comparison libpurple/stun.c @ 27666:a08e84032814
merge of '2348ff22f0ff3453774b8b25b36238465580c609'
and 'e76f11543c2a4aa05bdf584f087cbe3439029661'
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 12 Jul 2009 05:43:38 +0000 |
parents | 627d23bfdb05 |
children | aa7c39c39af5 |
comparison
equal
deleted
inserted
replaced
27186:048bcf41deef | 27666:a08e84032814 |
---|---|
114 } | 114 } |
115 | 115 |
116 static gboolean timeoutfunc(gpointer data) { | 116 static gboolean timeoutfunc(gpointer data) { |
117 struct stun_conn *sc = data; | 117 struct stun_conn *sc = data; |
118 if(sc->retry >= 2) { | 118 if(sc->retry >= 2) { |
119 purple_debug_info("stun", "request timed out, giving up.\n"); | 119 purple_debug_warning("stun", "request timed out, giving up.\n"); |
120 if(sc->test == 2) | 120 if(sc->test == 2) |
121 nattype.type = PURPLE_STUN_NAT_TYPE_SYMMETRIC; | 121 nattype.type = PURPLE_STUN_NAT_TYPE_SYMMETRIC; |
122 | 122 |
123 /* set unknown */ | 123 /* set unknown */ |
124 nattype.status = PURPLE_STUN_STATUS_UNKNOWN; | 124 nattype.status = PURPLE_STUN_STATUS_UNKNOWN; |
174 struct ifreq *ifr; | 174 struct ifreq *ifr; |
175 struct sockaddr_in *sinptr; | 175 struct sockaddr_in *sinptr; |
176 | 176 |
177 len = recv(source, buffer, sizeof(buffer) - 1, 0); | 177 len = recv(source, buffer, sizeof(buffer) - 1, 0); |
178 if (!len) { | 178 if (!len) { |
179 purple_debug_info("stun", "unable to read stun response\n"); | 179 purple_debug_warning("stun", "unable to read stun response\n"); |
180 return; | 180 return; |
181 } | 181 } |
182 buffer[len] = '\0'; | 182 buffer[len] = '\0'; |
183 | 183 |
184 if (len < sizeof(struct stun_header)) { | 184 if (len < sizeof(struct stun_header)) { |
185 purple_debug_info("stun", "got invalid response\n"); | 185 purple_debug_warning("stun", "got invalid response\n"); |
186 return; | 186 return; |
187 } | 187 } |
188 | 188 |
189 hdr = (struct stun_header*) buffer; | 189 hdr = (struct stun_header*) buffer; |
190 if (len != (ntohs(hdr->len) + sizeof(struct stun_header))) { | 190 if (len != (ntohs(hdr->len) + sizeof(struct stun_header))) { |
191 purple_debug_info("stun", "got incomplete response\n"); | 191 purple_debug_warning("stun", "got incomplete response\n"); |
192 return; | 192 return; |
193 } | 193 } |
194 | 194 |
195 /* wrong transaction */ | 195 /* wrong transaction */ |
196 if(hdr->transid[0] != sc->packet->transid[0] | 196 if(hdr->transid[0] != sc->packet->transid[0] |
197 || hdr->transid[1] != sc->packet->transid[1] | 197 || hdr->transid[1] != sc->packet->transid[1] |
198 || hdr->transid[2] != sc->packet->transid[2] | 198 || hdr->transid[2] != sc->packet->transid[2] |
199 || hdr->transid[3] != sc->packet->transid[3]) { | 199 || hdr->transid[3] != sc->packet->transid[3]) { |
200 purple_debug_info("stun", "got wrong transid\n"); | 200 purple_debug_warning("stun", "got wrong transid\n"); |
201 return; | 201 return; |
202 } | 202 } |
203 | 203 |
204 if(sc->test==1) { | 204 if(sc->test==1) { |
205 if (hdr->type != MSGTYPE_BINDINGRESPONSE) { | 205 if (hdr->type != MSGTYPE_BINDINGRESPONSE) { |
206 purple_debug_info("stun", | 206 purple_debug_warning("stun", |
207 "Expected Binding Response, got %d\n", | 207 "Expected Binding Response, got %d\n", |
208 hdr->type); | 208 hdr->type); |
209 return; | 209 return; |
210 } | 210 } |
211 | 211 |