mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-27 09:21:41 +02:00
636 lines
20 KiB
Diff
636 lines
20 KiB
Diff
From b73172be67b4665b04c791f914cf284e01dea33c Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Mon, 15 Aug 2011 16:11:32 +0200
|
|
Subject: [PATCH 1/8] fix broken SEARCH TEXT (#912)'
|
|
|
|
---
|
|
src/dbmail-mailbox.c | 2 +-
|
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/src/dbmail-mailbox.c b/src/dbmail-mailbox.c
|
|
index 3491105..09be275 100644
|
|
--- a/src/dbmail-mailbox.c
|
|
+++ b/src/dbmail-mailbox.c
|
|
@@ -1183,7 +1183,7 @@ static GTree * mailbox_search(DbmailMailbox *self, search_key_t *s)
|
|
|
|
case IST_DATA_TEXT:
|
|
|
|
- g_string_printf(q,"SELECT DISTINCT m.message_idnr"
|
|
+ g_string_printf(q,"SELECT DISTINCT m.message_idnr "
|
|
"FROM %smimeparts k "
|
|
"LEFT JOIN %spartlists l ON k.id=l.part_id "
|
|
"LEFT JOIN %sphysmessage p ON l.physmessage_id=p.id "
|
|
--
|
|
1.7.7.1
|
|
|
|
From cd5cc297ab1c05103c45f6ee903298eca5357a19 Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Sat, 20 Aug 2011 14:00:35 +0200
|
|
Subject: [PATCH 2/8] fix dbmail.h generation (#916)
|
|
|
|
---
|
|
acinclude.m4 | 2 +-
|
|
configure | 2 +-
|
|
src/dbmail.h.in | 4 +---
|
|
3 files changed, 3 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/acinclude.m4 b/acinclude.m4
|
|
index 2d2960d..fbf702a 100644
|
|
--- a/acinclude.m4
|
|
+++ b/acinclude.m4
|
|
@@ -300,7 +300,7 @@ AC_DEFUN([DM_CHECK_ZDB], [dnl
|
|
])
|
|
|
|
AC_DEFUN([DM_SET_SQLITECREATE], [dnl
|
|
- SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\" \\\\/' sql/sqlite/create_tables.sqlite`
|
|
+ SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\"/' -e '$!s/$/ \\\\/' sql/sqlite/create_tables.sqlite`
|
|
])
|
|
|
|
AC_DEFUN([DM_CHECK_MATH], [dnl
|
|
diff --git a/configure b/configure
|
|
index 6be85f6..e9d6e84 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -6697,7 +6697,7 @@ if test "x$ac_cv_lib_crypt_crypt" = x""yes; then :
|
|
fi
|
|
|
|
|
|
- SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\" \\\\/' sql/sqlite/create_tables.sqlite`
|
|
+ SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\"/' -e '$!s/$/ \\\\/' sql/sqlite/create_tables.sqlite`
|
|
|
|
|
|
|
|
diff --git a/src/dbmail.h.in b/src/dbmail.h.in
|
|
index 956246a..15acc31 100644
|
|
--- a/src/dbmail.h.in
|
|
+++ b/src/dbmail.h.in
|
|
@@ -183,9 +183,7 @@
|
|
""
|
|
|
|
/* include sql/sqlite/create_tables.sqlite for autocreation */
|
|
-#define DM_SQLITECREATE \
|
|
-@SQLITECREATE@
|
|
-""
|
|
+#define DM_SQLITECREATE @SQLITECREATE@
|
|
|
|
/** default directory and extension for pidfiles */
|
|
#define DEFAULT_PID_DIR "@DM_STATEDIR@"
|
|
--
|
|
1.7.7.1
|
|
|
|
From 0e640aa861ceebebff59877440d084fa2dcd9efd Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Thu, 22 Sep 2011 16:39:53 +0200
|
|
Subject: [PATCH 3/8] fix IDLE regression (#927)
|
|
|
|
---
|
|
src/imapcommands.c | 2 ++
|
|
1 files changed, 2 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/src/imapcommands.c b/src/imapcommands.c
|
|
index 7bfe3c1..8159214 100644
|
|
--- a/src/imapcommands.c
|
|
+++ b/src/imapcommands.c
|
|
@@ -1113,6 +1113,7 @@ int _ic_idle(ImapSession *self)
|
|
int idle_timeout = IDLE_TIMEOUT;
|
|
field_t val;
|
|
|
|
+ ci_cork(self->ci);
|
|
GETCONFIGVALUE("idle_timeout", "IMAP", val);
|
|
if ( strlen(val) && (idle_timeout = atoi(val)) <= 0 ) {
|
|
TRACE(TRACE_ERR, "[%p] illegal value for idle_timeout [%s]", self, val);
|
|
@@ -1125,6 +1126,7 @@ int _ic_idle(ImapSession *self)
|
|
dbmail_imap_session_buff_printf(self, "+ idling\r\n");
|
|
dbmail_imap_session_mailbox_status(self,TRUE);
|
|
dbmail_imap_session_buff_flush(self);
|
|
+ ci_uncork(self->ci);
|
|
|
|
return 0;
|
|
}
|
|
--
|
|
1.7.7.1
|
|
|
|
From a82434e61e10f7e3e6b5feefb12c341ad96229ea Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Fri, 21 Oct 2011 15:57:31 +0200
|
|
Subject: [PATCH 4/8] handle hangups better during read (#932)
|
|
|
|
---
|
|
src/imap4.c | 9 ++++++---
|
|
1 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/imap4.c b/src/imap4.c
|
|
index 5fbf849..1d6869a 100644
|
|
--- a/src/imap4.c
|
|
+++ b/src/imap4.c
|
|
@@ -143,20 +143,23 @@ void imap_cb_read(void *arg)
|
|
{
|
|
ImapSession *session = (ImapSession *) arg;
|
|
|
|
- TRACE(TRACE_DEBUG,"reading...");
|
|
-
|
|
ci_read_cb(session->ci);
|
|
|
|
size_t have = session->ci->read_buffer->len;
|
|
+ size_t need = session->ci->rbuff_size;
|
|
+
|
|
+ int enough = (need>0?(have == 0):(have > 0));
|
|
+
|
|
int state = session->ci->client_state;
|
|
|
|
+ TRACE(TRACE_DEBUG,"reading %d: %ld/%ld", enough, have, need);
|
|
if (state & CLIENT_ERR) {
|
|
ci_cork(session->ci);
|
|
dbmail_imap_session_set_state(session,CLIENTSTATE_ERROR);
|
|
return;
|
|
}
|
|
if (state & CLIENT_EOF) {
|
|
- if (have)
|
|
+ if (enough)
|
|
imap_handle_input(session);
|
|
else
|
|
imap_session_bailout(session);
|
|
--
|
|
1.7.7.1
|
|
|
|
From f9f332c7b917c6b0683b0d43a0f614d675181855 Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Sat, 22 Oct 2011 13:53:12 +0200
|
|
Subject: [PATCH 5/8] gracefully degrade after decoding error (#930)
|
|
|
|
---
|
|
src/dbmail-message.c | 8 +++++---
|
|
1 files changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/dbmail-message.c b/src/dbmail-message.c
|
|
index e62cfb4..cf8fc23 100644
|
|
--- a/src/dbmail-message.c
|
|
+++ b/src/dbmail-message.c
|
|
@@ -1457,12 +1457,11 @@ static int _header_value_get_id(const char *value, const char *sortfield, const
|
|
CATCH(SQLException)
|
|
LOG_SQLERROR;
|
|
db_rollback_transaction(c);
|
|
+ *id = 0;
|
|
FINALLY
|
|
db_con_close(c);
|
|
END_TRY;
|
|
|
|
- assert(*id);
|
|
-
|
|
g_free(hash);
|
|
|
|
return TRUE;
|
|
@@ -1596,7 +1595,10 @@ static gboolean _header_cache(const char UNUSED *key, const char *header, gpoint
|
|
g_free(value);
|
|
|
|
/* Insert relation between physmessage, header name and header value */
|
|
- _header_insert(self->physid, headername_id, headervalue_id);
|
|
+ if (headervalue_id)
|
|
+ _header_insert(self->physid, headername_id, headervalue_id);
|
|
+ else
|
|
+ TRACE(TRACE_INFO, "error inserting headervalue. skipping.");
|
|
|
|
headervalue_id=0;
|
|
|
|
--
|
|
1.7.7.1
|
|
|
|
From 11bcc6294807be46ded604b23cad2648fcbf7c5b Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Sat, 22 Oct 2011 18:08:59 +0200
|
|
Subject: [PATCH 6/8] reset timeout after idle is done (#932)
|
|
|
|
---
|
|
src/imap4.c | 1 +
|
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/src/imap4.c b/src/imap4.c
|
|
index 1d6869a..69a7a7e 100644
|
|
--- a/src/imap4.c
|
|
+++ b/src/imap4.c
|
|
@@ -468,6 +468,7 @@ void dbmail_imap_session_reset(ImapSession *session)
|
|
session->parser_state = FALSE;
|
|
dbmail_imap_session_args_free(session, FALSE);
|
|
|
|
+ session->ci->timeout->tv_sec = server_conf->timeout;
|
|
ci_uncork(session->ci);
|
|
|
|
return;
|
|
--
|
|
1.7.7.1
|
|
|
|
From 8dc7ab5ec45a4321af191fecd7da1f50d76d3ce1 Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Mon, 24 Oct 2011 16:23:59 +0200
|
|
Subject: [PATCH 7/8] call database schema version check on all connections
|
|
|
|
---
|
|
src/dm_db.c | 17 ++++++++++++-----
|
|
src/main.c | 5 -----
|
|
2 files changed, 12 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/src/dm_db.c b/src/dm_db.c
|
|
index 22cfe95..ec516e8 100644
|
|
--- a/src/dm_db.c
|
|
+++ b/src/dm_db.c
|
|
@@ -216,7 +216,7 @@ int db_connect(void)
|
|
db_connected = 3;
|
|
db_con_close(c);
|
|
|
|
- return 0;
|
|
+ return db_check_version();
|
|
}
|
|
|
|
/* But sometimes this gets called after help text or an
|
|
@@ -803,19 +803,26 @@ static void check_table_exists(C c, const char *table, const char *errormessage)
|
|
int db_check_version(void)
|
|
{
|
|
C c = db_con_get();
|
|
+ volatile int ok = 0;
|
|
TRY
|
|
check_table_exists(c, "physmessage", "pre-2.0 database incompatible. You need to run the conversion script");
|
|
check_table_exists(c, "headervalue", "2.0 database incompatible. You need to add the header tables.");
|
|
- check_table_exists(c, "envelope", "2.1 database incompatible. You need to add the envelopes table and run dbmail-util -by");
|
|
- check_table_exists(c, "mimeparts", "2.3 database incompatible.");
|
|
- check_table_exists(c, "header", "2.3.5 database incompatible - single instance header storage missing.");
|
|
+ check_table_exists(c, "envelope", "2.1+ database incompatible. You need to add the envelopes table and run dbmail-util -by");
|
|
+ check_table_exists(c, "mimeparts", "3.x database incompatible.");
|
|
+ check_table_exists(c, "header", "3.x database incompatible - single instance header storage missing.");
|
|
+ ok = 1;
|
|
CATCH(SQLException)
|
|
LOG_SQLERROR;
|
|
FINALLY
|
|
db_con_close(c);
|
|
END_TRY;
|
|
|
|
- return DM_SUCCESS;
|
|
+ if (ok)
|
|
+ TRACE(TRACE_DEBUG,"Tables OK");
|
|
+ else
|
|
+ TRACE(TRACE_WARNING,"Schema version incompatible. Bailing out");
|
|
+
|
|
+ return ok?DM_SUCCESS:DM_EQUERY;
|
|
}
|
|
|
|
/* test existence of usermap table */
|
|
diff --git a/src/main.c b/src/main.c
|
|
index f9c8328..4065997 100644
|
|
--- a/src/main.c
|
|
+++ b/src/main.c
|
|
@@ -240,11 +240,6 @@ int main(int argc, char *argv[])
|
|
goto freeall;
|
|
}
|
|
|
|
- if (db_check_version() != 0) {
|
|
- exitcode = EX_TEMPFAIL;
|
|
- goto freeall;
|
|
- }
|
|
-
|
|
/* read the whole message */
|
|
memset(buf, 0, sizeof(buf));
|
|
while ( (n = read(fileno(stdin), (void *)buf, READ_SIZE-1)) > 0) {
|
|
--
|
|
1.7.7.1
|
|
|
|
From 105cfefa0a1cc7366b66c6759e05e46ae5a6e53c Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Sat, 29 Oct 2011 15:57:09 +0200
|
|
Subject: [PATCH 8/8] gmime-2.6 compatibility (#935)
|
|
|
|
---
|
|
src/dbmail-message.c | 5 ++---
|
|
1 files changed, 2 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/dbmail-message.c b/src/dbmail-message.c
|
|
index cf8fc23..8a1a66c 100644
|
|
--- a/src/dbmail-message.c
|
|
+++ b/src/dbmail-message.c
|
|
@@ -561,7 +561,7 @@ gboolean store_mime_object(GMimeObject *parent, GMimeObject *object, DbmailMessa
|
|
// part of the rfc822 headers
|
|
skiphead = TRUE;
|
|
|
|
- g_mime_header_list_set_raw (GMIME_MESSAGE(object)->mime_part->headers, NULL);
|
|
+ g_mime_header_list_set_stream (GMIME_MESSAGE(object)->mime_part->headers, NULL);
|
|
mime_part = g_mime_message_get_mime_part((GMimeMessage *)object);
|
|
} else
|
|
mime_part = object;
|
|
@@ -1744,8 +1744,7 @@ DbmailMessage * dbmail_message_construct(DbmailMessage *self,
|
|
TRACE(TRACE_DEBUG, "from: [%s] to: [%s] subject: [%s] body: [%s]", from, to, subject, body);
|
|
g_mime_message_set_sender(message, from);
|
|
g_mime_message_set_subject(message, subject);
|
|
- g_mime_object_set_header(GMIME_OBJECT(message), "To", to);
|
|
- g_mime_message_add_recipient(message, GMIME_RECIPIENT_TYPE_TO, "", to);
|
|
+ g_mime_message_add_recipient(message, GMIME_RECIPIENT_TYPE_TO, NULL, to);
|
|
|
|
// construct mime-part
|
|
mime_part = g_mime_part_new();
|
|
--
|
|
1.7.7.1
|
|
|
|
From e95bcfa3f470de0f385a88266bf07065e65695a2 Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Wed, 02 Nov 2011 04:30:45 +0000
|
|
Subject: re-indent php code
|
|
|
|
---
|
|
diff --git a/contrib/dbmailclient.php b/contrib/dbmailclient.php
|
|
index ffe5cd0..0693c0a 100644
|
|
--- a/contrib/dbmailclient.php
|
|
+++ b/contrib/dbmailclient.php
|
|
@@ -190,137 +190,137 @@ class DBMailMessage extends DBMailMailbox
|
|
|
|
class Curl
|
|
{
|
|
- public $cookie_file;
|
|
- public $headers = array();
|
|
- public $options = array();
|
|
- public $referer = '';
|
|
- public $user_agent = '';
|
|
+ public $cookie_file;
|
|
+ public $headers = array();
|
|
+ public $options = array();
|
|
+ public $referer = '';
|
|
+ public $user_agent = '';
|
|
|
|
- protected $error = '';
|
|
- protected $handle;
|
|
+ protected $error = '';
|
|
+ protected $handle;
|
|
|
|
|
|
- public function __construct()
|
|
- {
|
|
+ public function __construct()
|
|
+ {
|
|
$this->cookie_file = realpath('.').'/curl_cookie.txt';
|
|
- $this->user_agent = isset($_SERVER['HTTP_USER_AGENT']) ?
|
|
- $_SERVER['HTTP_USER_AGENT'] :
|
|
- 'Curl/PHP ' . PHP_VERSION . ' (http://github.com/shuber/curl/)';
|
|
- }
|
|
-
|
|
- public function delete($url, $vars = array())
|
|
- {
|
|
- return $this->request('DELETE', $url, $vars);
|
|
- }
|
|
-
|
|
- public function error()
|
|
- {
|
|
- return $this->error;
|
|
- }
|
|
-
|
|
- public function get($url, $vars = array())
|
|
- {
|
|
- if (!empty($vars)) {
|
|
- $url .= (stripos($url, '?') !== false) ? '&' : '?';
|
|
- $url .= http_build_query($vars, '', '&');
|
|
- }
|
|
- return $this->request('GET', $url);
|
|
- }
|
|
-
|
|
- public function post($url, $vars = array())
|
|
- {
|
|
- return $this->request('POST', $url, $vars);
|
|
- }
|
|
-
|
|
- public function put($url, $vars = array())
|
|
- {
|
|
- return $this->request('PUT', $url, $vars);
|
|
- }
|
|
-
|
|
- protected function request($method, $url, $vars = array())
|
|
- {
|
|
- $this->handle = curl_init();
|
|
-
|
|
- # Set some default CURL options
|
|
- curl_setopt($this->handle, CURLOPT_COOKIEFILE, $this->cookie_file);
|
|
- curl_setopt($this->handle, CURLOPT_COOKIEJAR, $this->cookie_file);
|
|
- curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, true);
|
|
- curl_setopt($this->handle, CURLOPT_HEADER, true);
|
|
- curl_setopt($this->handle, CURLOPT_POSTFIELDS, (is_array($vars) ? http_build_query($vars, '', '&') : $vars));
|
|
- curl_setopt($this->handle, CURLOPT_REFERER, $this->referer);
|
|
- curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true);
|
|
- curl_setopt($this->handle, CURLOPT_URL, $url);
|
|
- curl_setopt($this->handle, CURLOPT_USERAGENT, $this->user_agent);
|
|
-
|
|
- # Format custom headers for this request and set CURL option
|
|
- $headers = array();
|
|
- foreach ($this->headers as $key => $value) {
|
|
- $headers[] = $key.': '.$value;
|
|
- }
|
|
- curl_setopt($this->handle, CURLOPT_HTTPHEADER, $headers);
|
|
-
|
|
- # Determine the request method and set the correct CURL option
|
|
- switch ($method) {
|
|
- case 'GET':
|
|
- curl_setopt($this->handle, CURLOPT_HTTPGET, true);
|
|
- break;
|
|
- case 'POST':
|
|
- curl_setopt($this->handle, CURLOPT_POST, true);
|
|
- break;
|
|
- default:
|
|
- curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $method);
|
|
- }
|
|
-
|
|
- # Set any custom CURL options
|
|
- foreach ($this->options as $option => $value) {
|
|
- curl_setopt($this->handle, constant('CURLOPT_'.str_replace('CURLOPT_', '', strtoupper($option))), $value);
|
|
- }
|
|
-
|
|
- $response = curl_exec($this->handle);
|
|
- if ($response) {
|
|
- $response = new CurlResponse($response);
|
|
- } else {
|
|
- $this->error = curl_errno($this->handle).' - '.curl_error($this->handle);
|
|
- }
|
|
- curl_close($this->handle);
|
|
- return $response;
|
|
- }
|
|
+ $this->user_agent = isset($_SERVER['HTTP_USER_AGENT']) ?
|
|
+ $_SERVER['HTTP_USER_AGENT'] :
|
|
+ 'Curl/PHP ' . PHP_VERSION . ' (http://github.com/shuber/curl/)';
|
|
+ }
|
|
+
|
|
+ public function delete($url, $vars = array())
|
|
+ {
|
|
+ return $this->request('DELETE', $url, $vars);
|
|
+ }
|
|
+
|
|
+ public function error()
|
|
+ {
|
|
+ return $this->error;
|
|
+ }
|
|
+
|
|
+ public function get($url, $vars = array())
|
|
+ {
|
|
+ if (!empty($vars)) {
|
|
+ $url .= (stripos($url, '?') !== false) ? '&' : '?';
|
|
+ $url .= http_build_query($vars, '', '&');
|
|
+ }
|
|
+ return $this->request('GET', $url);
|
|
+ }
|
|
+
|
|
+ public function post($url, $vars = array())
|
|
+ {
|
|
+ return $this->request('POST', $url, $vars);
|
|
+ }
|
|
+
|
|
+ public function put($url, $vars = array())
|
|
+ {
|
|
+ return $this->request('PUT', $url, $vars);
|
|
+ }
|
|
+
|
|
+ protected function request($method, $url, $vars = array())
|
|
+ {
|
|
+ $this->handle = curl_init();
|
|
+
|
|
+ # Set some default CURL options
|
|
+ curl_setopt($this->handle, CURLOPT_COOKIEFILE, $this->cookie_file);
|
|
+ curl_setopt($this->handle, CURLOPT_COOKIEJAR, $this->cookie_file);
|
|
+ curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, true);
|
|
+ curl_setopt($this->handle, CURLOPT_HEADER, true);
|
|
+ curl_setopt($this->handle, CURLOPT_POSTFIELDS, (is_array($vars) ? http_build_query($vars, '', '&') : $vars));
|
|
+ curl_setopt($this->handle, CURLOPT_REFERER, $this->referer);
|
|
+ curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true);
|
|
+ curl_setopt($this->handle, CURLOPT_URL, $url);
|
|
+ curl_setopt($this->handle, CURLOPT_USERAGENT, $this->user_agent);
|
|
+
|
|
+ # Format custom headers for this request and set CURL option
|
|
+ $headers = array();
|
|
+ foreach ($this->headers as $key => $value) {
|
|
+ $headers[] = $key.': '.$value;
|
|
+ }
|
|
+ curl_setopt($this->handle, CURLOPT_HTTPHEADER, $headers);
|
|
+
|
|
+ # Determine the request method and set the correct CURL option
|
|
+ switch ($method) {
|
|
+ case 'GET':
|
|
+ curl_setopt($this->handle, CURLOPT_HTTPGET, true);
|
|
+ break;
|
|
+ case 'POST':
|
|
+ curl_setopt($this->handle, CURLOPT_POST, true);
|
|
+ break;
|
|
+ default:
|
|
+ curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $method);
|
|
+ }
|
|
+
|
|
+ # Set any custom CURL options
|
|
+ foreach ($this->options as $option => $value) {
|
|
+ curl_setopt($this->handle, constant('CURLOPT_'.str_replace('CURLOPT_', '', strtoupper($option))), $value);
|
|
+ }
|
|
+
|
|
+ $response = curl_exec($this->handle);
|
|
+ if ($response) {
|
|
+ $response = new CurlResponse($response);
|
|
+ } else {
|
|
+ $this->error = curl_errno($this->handle).' - '.curl_error($this->handle);
|
|
+ }
|
|
+ curl_close($this->handle);
|
|
+ return $response;
|
|
+ }
|
|
|
|
}
|
|
|
|
class CurlResponse
|
|
{
|
|
- public $body = '';
|
|
- public $headers = array();
|
|
-
|
|
- public function __construct($response)
|
|
- {
|
|
- # Extract headers from response
|
|
- $pattern = '#HTTP/\d\.\d.*?$.*?\r\n\r\n#ims';
|
|
- preg_match_all($pattern, $response, $matches);
|
|
- $headers = split("\r\n", str_replace("\r\n\r\n", '', array_pop($matches[0])));
|
|
-
|
|
- # Extract the version and status from the first header
|
|
- $version_and_status = array_shift($headers);
|
|
- preg_match('#HTTP/(\d\.\d)\s(\d\d\d)\s(.*)#', $version_and_status, $matches);
|
|
- $this->headers['Http-Version'] = $matches[1];
|
|
- $this->headers['Status-Code'] = $matches[2];
|
|
- $this->headers['Status'] = $matches[2].' '.$matches[3];
|
|
-
|
|
- # Convert headers into an associative array
|
|
- foreach ($headers as $header) {
|
|
- preg_match('#(.*?)\:\s(.*)#', $header, $matches);
|
|
- $this->headers[$matches[1]] = $matches[2];
|
|
- }
|
|
-
|
|
- # Remove the headers from the response body
|
|
- $this->body = preg_replace($pattern, '', $response);
|
|
- }
|
|
-
|
|
- public function __toString()
|
|
- {
|
|
- return $this->body;
|
|
- }
|
|
+ public $body = '';
|
|
+ public $headers = array();
|
|
+
|
|
+ public function __construct($response)
|
|
+ {
|
|
+ # Extract headers from response
|
|
+ $pattern = '#HTTP/\d\.\d.*?$.*?\r\n\r\n#ims';
|
|
+ preg_match_all($pattern, $response, $matches);
|
|
+ $headers = split("\r\n", str_replace("\r\n\r\n", '', array_pop($matches[0])));
|
|
+
|
|
+ # Extract the version and status from the first header
|
|
+ $version_and_status = array_shift($headers);
|
|
+ preg_match('#HTTP/(\d\.\d)\s(\d\d\d)\s(.*)#', $version_and_status, $matches);
|
|
+ $this->headers['Http-Version'] = $matches[1];
|
|
+ $this->headers['Status-Code'] = $matches[2];
|
|
+ $this->headers['Status'] = $matches[2].' '.$matches[3];
|
|
+
|
|
+ # Convert headers into an associative array
|
|
+ foreach ($headers as $header) {
|
|
+ preg_match('#(.*?)\:\s(.*)#', $header, $matches);
|
|
+ $this->headers[$matches[1]] = $matches[2];
|
|
+ }
|
|
+
|
|
+ # Remove the headers from the response body
|
|
+ $this->body = preg_replace($pattern, '', $response);
|
|
+ }
|
|
+
|
|
+ public function __toString()
|
|
+ {
|
|
+ return $this->body;
|
|
+ }
|
|
}
|
|
|
|
|
|
--
|
|
cgit v0.8.3.4
|
|
From 288b73a79fe20bae7737fb622aefff761bb34c3f Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <paul@nfg.nl>
|
|
Date: Wed, 02 Nov 2011 04:31:12 +0000
|
|
Subject: parse From_ time as localtime
|
|
|
|
---
|
|
diff --git a/src/dbmail-mailbox.c b/src/dbmail-mailbox.c
|
|
index 09be275..5e493ab 100644
|
|
--- a/src/dbmail-mailbox.c
|
|
+++ b/src/dbmail-mailbox.c
|
|
@@ -100,7 +100,7 @@ static gchar * _message_get_envelope_date(const DbmailMessage *self)
|
|
|
|
res = g_new0(char, TIMESTRING_SIZE+1);
|
|
memset(&gmt,'\0', sizeof(struct tm));
|
|
- gmtime_r(&self->internal_date, &gmt);
|
|
+ localtime_r(&self->internal_date, &gmt);
|
|
|
|
strftime(res, TIMESTRING_SIZE, "%a %b %d %H:%M:%S %Y", &gmt);
|
|
return res;
|
|
diff --git a/src/dbmail-message.c b/src/dbmail-message.c
|
|
index 8a1a66c..1b4d826 100644
|
|
--- a/src/dbmail-message.c
|
|
+++ b/src/dbmail-message.c
|
|
@@ -837,7 +837,7 @@ gchar * dbmail_message_get_internal_date(const DbmailMessage *self, int thisyear
|
|
|
|
res = g_new0(char, TIMESTRING_SIZE+1);
|
|
memset(&gmt,'\0', sizeof(struct tm));
|
|
- gmtime_r(&self->internal_date, &gmt);
|
|
+ localtime_r(&self->internal_date, &gmt);
|
|
|
|
/* override if the date is not sane */
|
|
if (thisyear && gmt.tm_year + 1900 > thisyear + 1) {
|
|
--
|
|
cgit v0.8.3.4
|