mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-01-12 06:40:12 +01:00
added timeout option to pilerimport (30s by default)
This commit is contained in:
parent
eb0c63e60a
commit
84587c2b04
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#define VERSION "1.2.0-master"
|
#define VERSION "1.2.0-master"
|
||||||
|
|
||||||
#define BUILD 916
|
#define BUILD 917
|
||||||
|
|
||||||
#define HOSTID "mailarchiver"
|
#define HOSTID "mailarchiver"
|
||||||
|
|
||||||
|
@ -277,6 +277,7 @@ struct import {
|
|||||||
int remove_after_import;
|
int remove_after_import;
|
||||||
int download_only;
|
int download_only;
|
||||||
int keep_eml;
|
int keep_eml;
|
||||||
|
int timeout;
|
||||||
long total_size;
|
long total_size;
|
||||||
time_t started, updated, finished;
|
time_t started, updated, finished;
|
||||||
};
|
};
|
||||||
|
@ -65,7 +65,7 @@ int read_response(int sd, char *buf, int buflen, int *seq, struct __data *data,
|
|||||||
memset(buf, 0, buflen);
|
memset(buf, 0, buflen);
|
||||||
|
|
||||||
while(!strstr(buf, tagok)){
|
while(!strstr(buf, tagok)){
|
||||||
n = recvtimeoutssl(sd, puf, sizeof(puf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, puf, sizeof(puf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
if(n + len < buflen) strncat(buf, puf, n);
|
if(n + len < buflen) strncat(buf, puf, n);
|
||||||
else goto END;
|
else goto END;
|
||||||
@ -156,7 +156,7 @@ int process_imap_folder(int sd, int *seq, char *folder, struct session_data *sda
|
|||||||
msglen = 0;
|
msglen = 0;
|
||||||
msg_written_len = 0;
|
msg_written_len = 0;
|
||||||
|
|
||||||
while((n = recvtimeoutssl(sd, &buf[readpos], sizeof(buf)-readpos, 60, use_ssl, data->ssl)) > 0){
|
while((n = recvtimeoutssl(sd, &buf[readpos], sizeof(buf)-readpos, data->import->timeout, use_ssl, data->ssl)) > 0){
|
||||||
|
|
||||||
readlen += n;
|
readlen += n;
|
||||||
|
|
||||||
@ -316,7 +316,7 @@ int connect_to_imap_server(int sd, int *seq, char *username, char *password, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
/* imap cmd: CAPABILITY */
|
/* imap cmd: CAPABILITY */
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ int list_folders(int sd, int *seq, int use_ssl, struct __data *data){
|
|||||||
write1(sd, puf, strlen(puf), use_ssl, data->ssl);
|
write1(sd, puf, strlen(puf), use_ssl, data->ssl);
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
n = recvtimeoutssl(sd, puf, sizeof(puf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, puf, sizeof(puf), data->import->timeout, use_ssl, data->ssl);
|
||||||
if(n < 0) return ERR;
|
if(n < 0) return ERR;
|
||||||
|
|
||||||
if(pos + n >= len){
|
if(pos + n >= len){
|
||||||
|
@ -500,6 +500,7 @@ int main(int argc, char **argv){
|
|||||||
import.extra_recipient = NULL;
|
import.extra_recipient = NULL;
|
||||||
import.start_position = 1;
|
import.start_position = 1;
|
||||||
import.download_only = 0;
|
import.download_only = 0;
|
||||||
|
import.timeout = 30;
|
||||||
|
|
||||||
data.import = &import;
|
data.import = &import;
|
||||||
|
|
||||||
@ -527,6 +528,7 @@ int main(int argc, char **argv){
|
|||||||
{"folder_imap", required_argument, 0, 'f' },
|
{"folder_imap", required_argument, 0, 'f' },
|
||||||
{"add-recipient",required_argument, 0, 'a' },
|
{"add-recipient",required_argument, 0, 'a' },
|
||||||
{"batch-limit", required_argument, 0, 'b' },
|
{"batch-limit", required_argument, 0, 'b' },
|
||||||
|
{"timeout", required_argument, 0, 't' },
|
||||||
{"start-position",required_argument, 0, 's' },
|
{"start-position",required_argument, 0, 's' },
|
||||||
{"quiet", no_argument, 0, 'q' },
|
{"quiet", no_argument, 0, 'q' },
|
||||||
{"recursive", required_argument, 0, 'R' },
|
{"recursive", required_argument, 0, 'R' },
|
||||||
@ -540,9 +542,9 @@ int main(int argc, char **argv){
|
|||||||
|
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
|
|
||||||
c = getopt_long(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:s:GDRroqh?", long_options, &option_index);
|
c = getopt_long(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:GDRroqh?", long_options, &option_index);
|
||||||
#else
|
#else
|
||||||
c = getopt(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:s:GDRroqh?");
|
c = getopt(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:GDRroqh?");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(c == -1) break;
|
if(c == -1) break;
|
||||||
@ -624,6 +626,10 @@ int main(int argc, char **argv){
|
|||||||
data.import->batch_processing_limit = atoi(optarg);
|
data.import->batch_processing_limit = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 't' :
|
||||||
|
data.import->timeout = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case 's' :
|
case 's' :
|
||||||
if(atoi(optarg) < 1){
|
if(atoi(optarg) < 1){
|
||||||
printf("invalid start position: %s\n", optarg);
|
printf("invalid start position: %s\n", optarg);
|
||||||
|
12
src/pop3.c
12
src/pop3.c
@ -75,19 +75,19 @@ int connect_to_pop3_server(int sd, char *username, char *password, int port, str
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf)-1, "USER %s\r\n", username);
|
snprintf(buf, sizeof(buf)-1, "USER %s\r\n", username);
|
||||||
|
|
||||||
write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf)-1, "PASS %s\r\n", password);
|
snprintf(buf, sizeof(buf)-1, "PASS %s\r\n", password);
|
||||||
|
|
||||||
write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 30, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
if(strncmp(buf, "+OK", 3) == 0) return OK;
|
if(strncmp(buf, "+OK", 3) == 0) return OK;
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ int process_pop3_emails(int sd, struct session_data *sdata, struct __data *data,
|
|||||||
snprintf(buf, sizeof(buf)-1, "STAT\r\n");
|
snprintf(buf, sizeof(buf)-1, "STAT\r\n");
|
||||||
n = write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
n = write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
||||||
|
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 30, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
|
|
||||||
if(strncmp(buf, "+OK ", 4) == 0){
|
if(strncmp(buf, "+OK ", 4) == 0){
|
||||||
p = strchr(&buf[4], ' ');
|
p = strchr(&buf[4], ' ');
|
||||||
@ -150,7 +150,7 @@ int process_pop3_emails(int sd, struct session_data *sdata, struct __data *data,
|
|||||||
lastpos = 0;
|
lastpos = 0;
|
||||||
|
|
||||||
|
|
||||||
while((n = recvtimeoutssl(sd, buf, sizeof(buf), 15, use_ssl, data->ssl)) > 0){
|
while((n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl)) > 0){
|
||||||
nreads++;
|
nreads++;
|
||||||
readlen += n;
|
readlen += n;
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ int process_pop3_emails(int sd, struct session_data *sdata, struct __data *data,
|
|||||||
if(dryrun == 0 && rc == OK && data->import->remove_after_import == 1){
|
if(dryrun == 0 && rc == OK && data->import->remove_after_import == 1){
|
||||||
snprintf(buf, sizeof(buf)-1, "DELE %d\r\n", i);
|
snprintf(buf, sizeof(buf)-1, "DELE %d\r\n", i);
|
||||||
n = write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
n = write1(sd, buf, strlen(buf), use_ssl, data->ssl);
|
||||||
n = recvtimeoutssl(sd, buf, sizeof(buf), 10, use_ssl, data->ssl);
|
n = recvtimeoutssl(sd, buf, sizeof(buf), data->import->timeout, use_ssl, data->ssl);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i % 100 == 0){
|
if(i % 100 == 0){
|
||||||
|
Loading…
Reference in New Issue
Block a user