Lines 387-393
Link Here
|
387 |
{ |
387 |
{ |
388 |
gint ret; |
388 |
gint ret; |
389 |
void (*prev_handler)(gint); |
389 |
void (*prev_handler)(gint); |
390 |
|
390 |
|
391 |
alarm(0); |
391 |
alarm(0); |
392 |
prev_handler = signal(SIGALRM, timeout_handler); |
392 |
prev_handler = signal(SIGALRM, timeout_handler); |
393 |
if (sigsetjmp(jmpenv, 1)) { |
393 |
if (sigsetjmp(jmpenv, 1)) { |
Lines 410-416
Link Here
|
410 |
{ |
410 |
{ |
411 |
struct hostent *hp; |
411 |
struct hostent *hp; |
412 |
void (*prev_handler)(gint); |
412 |
void (*prev_handler)(gint); |
413 |
|
413 |
|
414 |
alarm(0); |
414 |
alarm(0); |
415 |
prev_handler = signal(SIGALRM, timeout_handler); |
415 |
prev_handler = signal(SIGALRM, timeout_handler); |
416 |
if (sigsetjmp(jmpenv, 1)) { |
416 |
if (sigsetjmp(jmpenv, 1)) { |
Lines 851-857
Link Here
|
851 |
SockLookupData *lookup_data = NULL; |
851 |
SockLookupData *lookup_data = NULL; |
852 |
gint pipe_fds[2]; |
852 |
gint pipe_fds[2]; |
853 |
pid_t pid; |
853 |
pid_t pid; |
854 |
|
854 |
|
855 |
if (pipe(pipe_fds) < 0) { |
855 |
if (pipe(pipe_fds) < 0) { |
856 |
perror("pipe"); |
856 |
perror("pipe"); |
857 |
func(NULL, data); |
857 |
func(NULL, data); |
Lines 1020-1026
Link Here
|
1020 |
#if USE_OPENSSL |
1020 |
#if USE_OPENSSL |
1021 |
gint ssl_read(SSL *ssl, gchar *buf, gint len) |
1021 |
gint ssl_read(SSL *ssl, gchar *buf, gint len) |
1022 |
{ |
1022 |
{ |
1023 |
gint ret; |
1023 |
gint err, ret; |
1024 |
|
1024 |
|
1025 |
if (SSL_pending(ssl) == 0) { |
1025 |
if (SSL_pending(ssl) == 0) { |
1026 |
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0) |
1026 |
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0) |
Lines 1029-1042
Link Here
|
1029 |
|
1029 |
|
1030 |
ret = SSL_read(ssl, buf, len); |
1030 |
ret = SSL_read(ssl, buf, len); |
1031 |
|
1031 |
|
1032 |
switch (SSL_get_error(ssl, ret)) { |
1032 |
switch ((err = SSL_get_error(ssl, ret))) { |
1033 |
case SSL_ERROR_NONE: |
1033 |
case SSL_ERROR_NONE: |
1034 |
return ret; |
1034 |
return ret; |
1035 |
case SSL_ERROR_WANT_READ: |
1035 |
case SSL_ERROR_WANT_READ: |
1036 |
case SSL_ERROR_WANT_WRITE: |
1036 |
case SSL_ERROR_WANT_WRITE: |
1037 |
errno = EAGAIN; |
1037 |
errno = EAGAIN; |
1038 |
return -1; |
1038 |
return -1; |
|
|
1039 |
case SSL_ERROR_ZERO_RETURN: |
1040 |
return 0; |
1039 |
default: |
1041 |
default: |
|
|
1042 |
g_warning("SSL_read() returned error %d, ret = %d\n", err, ret); |
1043 |
if (ret == 0) |
1044 |
return 0; |
1040 |
return -1; |
1045 |
return -1; |
1041 |
} |
1046 |
} |
1042 |
} |
1047 |
} |
Lines 1315-1321
Link Here
|
1315 |
#if USE_OPENSSL |
1320 |
#if USE_OPENSSL |
1316 |
gint ssl_peek(SSL *ssl, gchar *buf, gint len) |
1321 |
gint ssl_peek(SSL *ssl, gchar *buf, gint len) |
1317 |
{ |
1322 |
{ |
1318 |
gint ret; |
1323 |
gint err, ret; |
1319 |
|
1324 |
|
1320 |
if (SSL_pending(ssl) == 0) { |
1325 |
if (SSL_pending(ssl) == 0) { |
1321 |
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0) |
1326 |
if (fd_check_io(SSL_get_rfd(ssl), G_IO_IN) < 0) |
Lines 1324-1337
Link Here
|
1324 |
|
1329 |
|
1325 |
ret = SSL_peek(ssl, buf, len); |
1330 |
ret = SSL_peek(ssl, buf, len); |
1326 |
|
1331 |
|
1327 |
switch (SSL_get_error(ssl, ret)) { |
1332 |
switch ((err = SSL_get_error(ssl, ret))) { |
1328 |
case SSL_ERROR_NONE: |
1333 |
case SSL_ERROR_NONE: |
1329 |
return ret; |
1334 |
return ret; |
1330 |
case SSL_ERROR_WANT_READ: |
1335 |
case SSL_ERROR_WANT_READ: |
1331 |
case SSL_ERROR_WANT_WRITE: |
1336 |
case SSL_ERROR_WANT_WRITE: |
1332 |
errno = EAGAIN; |
1337 |
errno = EAGAIN; |
1333 |
return -1; |
1338 |
return -1; |
|
|
1339 |
case SSL_ERROR_ZERO_RETURN: |
1340 |
return 0; |
1334 |
default: |
1341 |
default: |
|
|
1342 |
g_warning("SSL_peek() returned error %d, ret = %d\n", err, ret); |
1343 |
if (ret == 0) |
1344 |
return 0; |
1335 |
return -1; |
1345 |
return -1; |
1336 |
} |
1346 |
} |
1337 |
} |
1347 |
} |