diff options
-rw-r--r-- | camel/ChangeLog | 25 | ||||
-rw-r--r-- | camel/camel-filter-search.c | 2 | ||||
-rw-r--r-- | camel/camel-folder-search.c | 8 | ||||
-rw-r--r-- | camel/camel-service.c | 13 | ||||
-rw-r--r-- | camel/providers/imapp/camel-imapp-store.c | 6 |
5 files changed, 41 insertions, 13 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 84f649fbde..ef38f2820d 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,26 @@ +2003-08-11 Not Zed <NotZed@Ximian.com> + + * providers/imapp/camel-imapp-store.c (imap_get_folder_info): + force connect manually so basics work. + + ** See bug #45505. + + * camel-service.c (camel_gethostbyname): duh, pthread_create + returns the error code directly, not via errno. + (camel_gethostbyaddr): Same, also properly handle the failure + case. + +2003-08-01 Not Zed <NotZed@Ximian.com> + + ** See bug #47208. + + * camel-filter-search.c (match_all): match-all with no arguments + should always return TRUE. + + * camel-folder-search.c (camel_folder_search_execute_expression): + print a warning when we get an invalid result type & fixed a leak + for that case. + 2003-08-08 Jeffrey Stedfast <fejj@ximian.com> * tests/message/test4.c: New test suite for the mime parser (which @@ -38,7 +61,7 @@ class's default mime_type. (camel_mime_part_finalize): Don't need to unref the content_type anymore. - (process_header): Updated to use CamelDataWrapper's mime_type +M (process_header): Updated to use CamelDataWrapper's mime_type field. (camel_mime_part_set_filename): Same. (camel_mime_part_get_filename): Same. diff --git a/camel/camel-filter-search.c b/camel/camel-filter-search.c index 627b7ad78b..5f9e5ebffa 100644 --- a/camel/camel-filter-search.c +++ b/camel/camel-filter-search.c @@ -313,7 +313,7 @@ match_all (struct _ESExp *f, int argc, struct _ESExpTerm **argv, FilterMessageSe return e_sexp_term_eval (f, argv[0]); r = e_sexp_result_new (f, ESEXP_RES_BOOL); - r->value.bool = FALSE; + r->value.bool = TRUE; return r; } diff --git a/camel/camel-folder-search.c b/camel/camel-folder-search.c index f19ec19aa3..89fb8f1db0 100644 --- a/camel/camel-folder-search.c +++ b/camel/camel-folder-search.c @@ -361,8 +361,7 @@ camel_folder_search_execute_expression(CamelFolderSearch *search, const char *ex matches = g_ptr_array_new(); /* now create a folder summary to return?? */ - if (r - && r->type == ESEXP_RES_ARRAY_PTR) { + if (r->type == ESEXP_RES_ARRAY_PTR) { d(printf("got result ...\n")); /* we use a mempool to store the strings, packed in tight as possible, and freed together */ /* because the strings are often short (like <8 bytes long), we would be wasting appx 50% @@ -390,15 +389,16 @@ camel_folder_search_execute_expression(CamelFolderSearch *search, const char *ex g_ptr_array_add(matches, e_mempool_strdup(pool, g_ptr_array_index(r->value.ptrarray, i))); } } - e_sexp_result_free(search->sexp, r); /* instead of putting the mempool_hash in the structure, we keep the api clean by putting a reference to it in a hashtable. Lets us do some debugging and catch unfree'd results as well. */ g_hash_table_insert(p->mempool_hash, matches, pool); } else { - d(printf("no result!\n")); + g_warning("Search returned an invalid result type"); } + e_sexp_result_free(search->sexp, r); + search->folder = NULL; search->summary = NULL; search->current = NULL; diff --git a/camel/camel-service.c b/camel/camel-service.c index ae3a36dba4..bc4f4d8764 100644 --- a/camel/camel-service.c +++ b/camel/camel-service.c @@ -750,10 +750,11 @@ camel_gethostbyname (const char *name, CamelException *exout) EMsgPort *reply_port; pthread_t id; fd_set rdset; + int err; reply_port = msg->msg.reply_port = e_msgport_new(); fd = e_msgport_fd(msg->msg.reply_port); - if (pthread_create(&id, NULL, get_hostbyname, msg) == 0) { + if ((err = pthread_create(&id, NULL, get_hostbyname, msg)) == 0) { d(printf("waiting for name return/cancellation in main process\n")); do { FD_ZERO(&rdset); @@ -786,7 +787,7 @@ camel_gethostbyname (const char *name, CamelException *exout) d(printf("child done\n")); } } else { - camel_exception_setv(&ex, CAMEL_EXCEPTION_SYSTEM, _("Host lookup failed: cannot create thread: %s"), g_strerror(errno)); + camel_exception_setv(&ex, CAMEL_EXCEPTION_SYSTEM, _("Host lookup failed: cannot create thread: %s"), g_strerror(err)); } e_msgport_destroy(reply_port); } @@ -873,10 +874,11 @@ camel_gethostbyaddr (const char *addr, int len, int type, CamelException *exout) EMsgPort *reply_port; pthread_t id; fd_set rdset; - + int err; + reply_port = msg->msg.reply_port = e_msgport_new (); fd = e_msgport_fd (msg->msg.reply_port); - if (pthread_create (&id, NULL, get_hostbyaddr, msg) == 0) { + if ((err = pthread_create (&id, NULL, get_hostbyaddr, msg)) == 0) { d(printf("waiting for name return/cancellation in main process\n")); do { FD_ZERO(&rdset); @@ -908,7 +910,10 @@ camel_gethostbyaddr (const char *addr, int len, int type, CamelException *exout) pthread_join(id, NULL); d(printf("child done\n")); } + } else { + camel_exception_setv(&ex, CAMEL_EXCEPTION_SYSTEM, _("Host lookup failed: cannot create thread: %s"), g_strerror(err)); } + e_msgport_destroy (reply_port); } diff --git a/camel/providers/imapp/camel-imapp-store.c b/camel/providers/imapp/camel-imapp-store.c index 36dde917bb..b3c8e57352 100644 --- a/camel/providers/imapp/camel-imapp-store.c +++ b/camel/providers/imapp/camel-imapp-store.c @@ -861,10 +861,10 @@ imap_get_folder_info(CamelStore *store, const char *top, guint32 flags, CamelExc CamelFolderInfo * fi= NULL; char *name; - if (istore->driver == NULL) { - camel_exception_setv(ex, 1, "Not connected"); + /* FIXME: temporary, since this is not a disco store */ + if (istore->driver == NULL + && !camel_service_connect((CamelService *)store, ex)) return NULL; - } name = (char *)top; if (name == NULL || name[0] == 0) { |