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