summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-nntp/newspost/files/newspost-2.1.1-nntp.patch')
-rw-r--r--net-nntp/newspost/files/newspost-2.1.1-nntp.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/net-nntp/newspost/files/newspost-2.1.1-nntp.patch b/net-nntp/newspost/files/newspost-2.1.1-nntp.patch
new file mode 100644
index 000000000000..8779e8f36b47
--- /dev/null
+++ b/net-nntp/newspost/files/newspost-2.1.1-nntp.patch
@@ -0,0 +1,69 @@
+--- newspost-2.1.1.orig/base/nntp.c
++++ newspost-2.1.1/base/nntp.c
+@@ -26,6 +26,10 @@
+ *** Public Routines
+ **/
+
++int _nntp_post(const char *subject, newspost_data *data,
++ const char *buffer, long length,
++ boolean no_ui_updates);
++
+ boolean nntp_logon(newspost_data *data) {
+ char buffer[STRING_BUFSIZE];
+
+@@ -78,6 +82,35 @@
+ int nntp_post(const char *subject, newspost_data *data,
+ const char *buffer, long length,
+ boolean no_ui_updates) {
++ int retval = _nntp_post(subject, data, buffer, length, no_ui_updates);
++
++ if (retval == POSTING_FAILED-64) {
++ /* try log out then back in */
++ ui_nntp_posting_retry();
++ nntp_logoff();
++ socket_close();
++ sleep(5);
++
++ /* create the socket */
++ ui_socket_connect_start(data->address->data);
++ retval = socket_create(data->address->data, data->port);
++ if (retval < 0)
++ return retval;
++ ui_socket_connect_done();
++
++ ui_nntp_logon_start(data->address->data);
++ if (nntp_logon(data) == FALSE)
++ return POSTING_FAILED;
++ ui_nntp_logon_done();
++
++ retval = _nntp_post(subject, data, buffer, length, no_ui_updates);
++ }
++ return retval;
++}
++
++int _nntp_post(const char *subject, newspost_data *data,
++ const char *buffer, long length,
++ boolean no_ui_updates) {
+ char response[STRING_BUFSIZE];
+ const char *pi;
+ long i, chunksize;
+@@ -95,7 +128,7 @@
+ if (strncmp(response, NNTP_PROCEED_WITH_POST, 3) != 0) {
+ /* this shouldn't really happen */
+ ui_nntp_unknown_response(response);
+- return POSTING_FAILED;
++ return POSTING_FAILED-64;
+ }
+
+ buff = buff_add(buff, "From: %s\r\n", data->from->data);
+--- newspost-2.1.1.orig/base/utils.c
++++ newspost-2.1.1/base/utils.c
+@@ -44,7 +44,7 @@
+ }
+
+ Buff * getline(Buff *buff, FILE *file){
+- char c = fgetc(file);
++ int c = fgetc(file);
+ buff = buff_free(buff);
+ while(TRUE){
+ if((c == '\n')