Array * NNTPSession::fetchOverArticlesInRange(Range range, String * groupName, ErrorCode * pError) { int r; clist * msg_list; selectGroup(groupName, pError); if (* pError != ErrorNone) { return NULL; } r = newsnntp_xover_range(mNNTP, (uint32_t) range.location, (uint32_t) (range.location + range.length), &msg_list); if (r == NEWSNNTP_ERROR_STREAM) { * pError = ErrorConnection; return NULL; } else if (r != NEWSNNTP_NO_ERROR) { * pError = ErrorFetchMessageList; return NULL; } Array * result = Array::array(); clistiter * iter; for(iter = clist_begin(msg_list) ;iter != NULL ; iter = clist_next(iter)) { struct newsnntp_xover_resp_item * item; struct mailimf_fields * fields = NULL; item = (struct newsnntp_xover_resp_item *) clist_content(iter); if (!item) { continue; } r = xover_resp_to_fields(item, &fields); if (r == MAIL_NO_ERROR) { MessageHeader * header = new MessageHeader(); header->importIMFFields(fields); result->addObject(header); header->release(); } } newsnntp_xover_resp_list_free(msg_list); * pError = ErrorNone; return result; }