|
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf(I think
Of Don Brown
Sent: Monday, August 20, 2018 6:32 PM
To: Midrange Systems Technical Discussion
Subject: RE: SMTPR4 and SIGALRM
Kevin you are correct the code snippet is from the sendtext function.
I need something like your Stevens book - when not in use would makean
awesome doorstop :-) )email
We use a file that gets updated with the relevant information for the
that includes; From, To, Subject, Text, Attachmentsexpect ?
Then we call a procedure that builds and sends the email using the
procedures in SMTPR4.
So we have the following summary call stack;
Payment_processor ==> Email_Sender ==> SMTPR4
The SIGALRM is cancelling the entire job - Is that what you would
And because the alarm process is external I have no way to monitor forthis
- is that correct ?further ...
Interestingly the failure only occurs on the send - let me explain
including
first we build a stream file in the ifs with the contents of the email
attachments.succeeds for
Then we call the individual procedures to process sending the message.
hsmtp = SMTP_new( %trim( pServer )); <=== This succeeds
if ( SMTP_from( hsmtp: %trim( sender )) = FAIL ); <==== This succeeds
if ( SMTP_recip(hsmtp: %trim( receiver( x ))) = FAIL ); <=== This
all recipientsThis times out
if ( SMTP_data_stmf( hsmtp : %trim( emailFile )) = FAIL );
The check to ensure the stream file exists succeeds.
Then the call to send(SMTP.sock: %addr(buf): len: 0); <===
and after 60 seconds the SIGALRM cancels the job.QWTPITP2
The job log shows ...
CPC1224 Completion 50 16/08/18 09:31:00.735554
QSYS 0645 *EXT *Nsignal
Thread . . . . : 00000034
Message . . . . : Job ended
abnormally.
Cause . . . . . : A SIGALRM
was received for the job. The action forjob.
the signal was to terminate the
be a
The only option I can see is to change the call to the Email_Sender to
submit job thereby separating the main processing and email sendinginto
completely separate jobs - Would you agree or can you suggest anytimeout and
alternative ?
Appreciate your feedback.
Don Brown
From: "Kevin Bucknum" <Kevin@xxxxxxxxxxxxxxxxxxx>
To: "Midrange Systems Technical Discussion"
<midrange-l@xxxxxxxxxxxx>
Date: 20/08/2018 11:07 PM
Subject: RE: SMTPR4 and SIGALRM
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxx>
The send will sit there forever. That is why you have to have the
the alarm. The alarm should only be killing the send.the
Nothing else. The code that you are showing looks to me to be inside
sendtext function in smtpr4. At least in my case, that gets called oneof two
ways. Either all wrapped up in SMTPSend mail, or as individual callsto the
various pieces of an SMTP transaction. If you are callingerrors and
sendtext() directly, then it is up to you to deal with getting the
handling them.be fair,
Either
hsmtp = SMTP_new('mail.i-55.com');
if ( SMTP_connect(hsmtp) = FAIL );
ErrMsg = SMTP_error();
// Error handling goes here.
endif;
if ( SMTP_from(hsmtp: 'blah.blah@xxxxxxxxx') = FAIL );
ErrMsg = SMTP_error();
// Error handling goes here.
endif;
Or
SMTPSendMail( FileName
: %len(FileName)
: fromAddr
: %len(fromAddr)
: recip
: %elem(recip)
: NullError );
// Check nullerror for errors.
The unix api documentation on the IBM site is very barebones, but to
I have the Stevens book on unix network programming and it is overthat
1000 pages and that is only volume 1. Scott's wrapper hides all of
complexity from you, so that you should just have to make the calls tohis
high level routines and check for errors that he returns.is
Kevin Bucknum
Senior Programmer Analyst
MEDDATA/MEDTRON
Tel: 985-893-2550
-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] OnBehalf Of
Don Brown
Sent: Sunday, August 19, 2018 5:25 PM
To: Midrange Systems Technical Discussion
Subject: RE: SMTPR4 and SIGALRM
Kevin you will notice in the code snippet I sent that the time out
beingthe
received on theproblem
slen = send(SMTP.sock: %addr(buf): len: 0);
So the problem I have is not checking the error data structures, the
is that the alarm time out has been set and the send times out and
canSIGAMRM is sent that kills the job.used to kill
Will the send(...) wait indefinitely ? and that is why the alarm is
the job if that occurs ?
If I increase the time out will the send(...) eventually fail so i
check thevery
error data structure ?
The documentation in the knowledge centre is not, in my opinion,
easycan
to understand.bounces@xxxxxxxxxxxx>
Thanks you for your reply.
Don Brown
From: "Kevin Bucknum" <Kevin@xxxxxxxxxxxxxxxxxxx>
To: "Midrange Systems Technical Discussion"
<midrange-l@xxxxxxxxxxxx>
Date: 17/08/2018 10:13 PM
Subject: RE: SMTPR4 and SIGALRM
Sent by: "MIDRANGE-L" <midrange-l-
I has been a while since I played with that, but I don't think you
avoiddoing
having that job canceled. What does the send look like? Are you
thecalls
individual calls, or using one of the wrappers that does all the
for you?(midrange-l@xxxxxxxxxxxx)
Both ways have error reporting. SMTPSendMail or SMTP_Sendmail bothyou
have an error data structure that you need to check.
If you are doing individual calls like SMTP_connect, SMTP_from, etc,
need to check the return from SMTP_error.
Kevin Bucknum
Senior Programmer Analyst
MEDDATA/MEDTRON
Tel: 985-893-2550
-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] OnBehalf Of
Don Brown
Sent: Thursday, August 16, 2018 11:11 PM
To: Midrange Systems Technical Discussion
externalSubject: SMTPR4 and SIGALRM
We are using SK's SMTPR4 to send emails.
We have a payment process that charges credit cards via an
thethepayment gateway and sends an email with the transaction result.CPC1224 as
The problem we have is occasionally the job will be cancelled with
per following ...QWTPITP2
CPC1224 Completion 50 06/08/18 08:17:38.219994
QSYS 0645 *EXT *Nsignal
Thread . . . . : 00000001
Message . . . . : Job ended
abnormally.
Cause . . . . . : A SIGALRM
was received for the job. The action for
the signal was to terminate
job.
I have tracked this back to the SMTPR4 service program that does
morefollowing;seconds.
/free
DebugMsg(text);
len = e2a(SMTP: text: buf: %size(buf));
alarm(SMTP.timeout);
slen = send(SMTP.sock: %addr(buf): len: 0);
alarm(0);
if (slen < len);
SetUnixError( SMTP_ERR_SEND: 'send()' );
return *OFF;
endif;
return *ON;
/end-free
So my understanding is the alarm(...) is setting the timeout to 60
The send(...) must be failing causing a delay of 60 seconds or
signallingwhich
causes the alarm to be signaled/processed. I presume the
thewas
used as the send(...) would wait indefinitely ?incomplete.
The the job is then cancelled which leaves the payment process
responding and
I have not been able to identify why the email server is not
while increasing the timeout could be done I don't think that is
similarbestthe
option.
As the SIGALRM is external to the job how can I detect failure of
email to
send but not have the entire job cancelled ?
Appreciate any assistance or suggestions.
Would also appreciate any links to signalling for dummies or
mailingso I canmailing
bet a better understanding of what and how they work.
Thanks
Don Brown
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
listaffiliate
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,take
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our
link: http://amzn.to/2dEadiD--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
listaffiliate
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,take
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our
mailinglink: http://amzn.to/2dEadiD__________________________________________________________
____________service.
This email has been scanned by the Symantec Email Security.cloud
For more information please visit http://www.symanteccloud.com__________________________________________________________
____________
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
listaffiliate
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,take
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our
listlink: http://amzn.to/2dEadiD--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,service.
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
__________________________________________________________
____________
This email has been scanned by the Symantec Email Security.cloud
For more information please visit http://www.symanteccloud.comlist
__________________________________________________________
____________
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.