libpurple/protocols/gg/lib/common.c

changeset 35686
cae91a875b23
parent 35630
8e5d0d726b09
parent 35645
0143226782bb
child 35695
3ab780c31f66
equal deleted inserted replaced
35684:8688b5d1821e 35686:cae91a875b23
25 * \brief Funkcje wykorzystywane przez różne moduły biblioteki 25 * \brief Funkcje wykorzystywane przez różne moduły biblioteki
26 */ 26 */
27 27
28 #include "network.h" 28 #include "network.h"
29 #include "strman.h" 29 #include "strman.h"
30 #ifdef sun 30 #include "fileio.h"
31 # include <sys/filio.h>
32 #endif
33 31
34 #include <errno.h> 32 #include <errno.h>
35 #include <stdarg.h> 33 #include <stdarg.h>
36 #include <stdlib.h> 34 #include <stdlib.h>
37 #include <string.h> 35 #include <string.h>
251 int sock, errno2; 249 int sock, errno2;
252 struct sockaddr_in sin; 250 struct sockaddr_in sin;
253 struct in_addr *a = addr; 251 struct in_addr *a = addr;
254 struct sockaddr_in myaddr; 252 struct sockaddr_in myaddr;
255 253
256 gg_debug(GG_DEBUG_FUNCTION, "** gg_connect(%s, %d, %d);\n", inet_ntoa(*a), port, async); 254 gg_debug(GG_DEBUG_FUNCTION, "** gg_connect(%s, %d, %d);\n",
255 inet_ntoa(*a), port, async);
257 256
258 if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { 257 if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
259 gg_debug(GG_DEBUG_MISC, "// gg_connect() socket() failed (errno=%d, %s)\n", errno, strerror(errno)); 258 gg_debug(GG_DEBUG_MISC, "// gg_connect() socket() failed "
259 "(errno=%d, %s)\n", errno, strerror(errno));
260 return -1; 260 return -1;
261 } 261 }
262 262
263 memset(&myaddr, 0, sizeof(myaddr)); 263 memset(&myaddr, 0, sizeof(myaddr));
264 myaddr.sin_family = AF_INET; 264 myaddr.sin_family = AF_INET;
265 265
266 myaddr.sin_addr.s_addr = gg_local_ip; 266 myaddr.sin_addr.s_addr = gg_local_ip;
267 267
268 if (bind(sock, (struct sockaddr *) &myaddr, sizeof(myaddr)) == -1) { 268 if (bind(sock, (struct sockaddr *) &myaddr, sizeof(myaddr)) == -1) {
269 gg_debug(GG_DEBUG_MISC, "// gg_connect() bind() failed (errno=%d, %s)\n", errno, strerror(errno)); 269 gg_debug(GG_DEBUG_MISC, "// gg_connect() bind() failed "
270 "(errno=%d, %s)\n", errno, strerror(errno));
270 errno2 = errno; 271 errno2 = errno;
271 close(sock); 272 close(sock);
272 errno = errno2; 273 errno = errno2;
273 return -1; 274 return -1;
274 } 275 }
298 errno2 = errno; 299 errno2 = errno;
299 close(sock); 300 close(sock);
300 errno = errno2; 301 errno = errno2;
301 return -1; 302 return -1;
302 } 303 }
303 gg_debug(GG_DEBUG_MISC, "// gg_connect() connect() in progress\n"); 304 gg_debug(GG_DEBUG_MISC,
305 "// gg_connect() connect() in progress\n");
304 } 306 }
305 307
306 return sock; 308 return sock;
307 } 309 }
308 310
573 unsigned int tmp_size; 575 unsigned int tmp_size;
574 576
575 if (!gg_proxy_enabled || !gg_proxy_username || !gg_proxy_password) 577 if (!gg_proxy_enabled || !gg_proxy_username || !gg_proxy_password)
576 return NULL; 578 return NULL;
577 579
578 if (!(tmp = malloc((tmp_size = strlen(gg_proxy_username) + strlen(gg_proxy_password) + 2)))) 580 tmp_size = strlen(gg_proxy_username) + strlen(gg_proxy_password) + 2;
581 tmp = malloc(tmp_size);
582 if (!tmp)
579 return NULL; 583 return NULL;
580 584
581 snprintf(tmp, tmp_size, "%s:%s", gg_proxy_username, gg_proxy_password); 585 snprintf(tmp, tmp_size, "%s:%s", gg_proxy_username, gg_proxy_password);
582 586
583 if (!(enc = gg_base64_encode(tmp))) { 587 enc = gg_base64_encode(tmp);
588 if (!enc) {
584 free(tmp); 589 free(tmp);
585 return NULL; 590 return NULL;
586 } 591 }
587 592
588 free(tmp); 593 free(tmp);
589 594
590 if (!(out = malloc(strlen(enc) + 40))) { 595 out = malloc(strlen(enc) + 40);
596 if (!out) {
591 free(enc); 597 free(enc);
592 return NULL; 598 return NULL;
593 } 599 }
594 600
595 snprintf(out, strlen(enc) + 40, "Proxy-Authorization: Basic %s\r\n", enc); 601 snprintf(out, strlen(enc) + 40, "Proxy-Authorization: Basic %s\r\n", enc);

mercurial