Re: smppbox code questions

"Nikos Balkanas" <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <A191FF6B17C045D59117A92865612A7E@drwho>
Hey, I didn't say it would work, just asked if you had tried it. You can't 
expect me to remember by heart where each #define is set. Unfortunately it 
needs patching.

BR,
Nikos

----- Original Message ----- 
From: "Rene Kluwen" <[email protected]>
To: "'Nikos Balkanas'" <[email protected]>; "'Victor Luchitz'" 
<[email protected]>; <[email protected]>
Sent: Monday, July 12, 2010 1:30 AM
Subject: RE: smppbox code questions


> Nikos, you disappoint me.
>
> report_versions() is linked in from the gwlib libraries with the values 
> that
> it was compiled with. Try it, and you will see.
>
> == Rene
>
> -----Original Message-----
> From: Nikos Balkanas [mailto:[email protected]]
> Sent: zondag 11 juli 2010 17:33
> To: Rene Kluwen; 'Victor Luchitz'; [email protected]
> Subject: Re: smppbox code questions
>
> Nope, that would defeat the whole puprose. Add it to your code, just 
> before
> calling report_versions()
>
> BR,
> Nikos
> ----- Original Message ----- 
> From: "Rene Kluwen" <[email protected]>
> To: "'Nikos Balkanas'" <[email protected]>; "'Victor Luchitz'"
> <[email protected]>; <[email protected]>
> Sent: Sunday, July 11, 2010 4:50 PM
> Subject: RE: smppbox code questions
>
>
>>I haven't tried.
>> But it will only work if I recompile gwlib after the new #define's.
>>
>> == Rene
>>
>> -----Original Message-----
>> From: Nikos Balkanas [mailto:[email protected]]
>> Sent: zondag 11 juli 2010 9:46
>> To: Rene Kluwen; 'Victor Luchitz'; [email protected]
>> Subject: Re: smppbox code questions
>>
>> Hi,
>>
>> Have you tried:
>>
>> #undef GW_NAME
>> #undef GW_VERSION
>>
>> #define GW_VERSION ...
>> #define GW_NAME ...
>>
>> and then call report_versions?
>>
>> BR,
>> Nikos
>> ----- Original Message ----- 
>> From: "Rene Kluwen" <[email protected]>
>> To: "'Victor Luchitz'" <[email protected]>; <[email protected]>
>> Sent: Saturday, July 10, 2010 11:48 PM
>> Subject: RE: smppbox code questions
>>
>>
>> That is a gwlib quirk. The function report_versions() has the Kannel
>> version
>>
>> hard coded in it.
>> Sqlbox has the same problem.
>>
>> Maybe we need to send in a patch for gwlib/utils.c.
>>
>> == Rene
>>
>> -----Original Message-----
>> From: Victor Luchitz [mailto:[email protected]]
>> Sent: zaterdag 10 juli 2010 22:17
>> To: [email protected]; Rene Kluwen
>> Subject: Re: smppbox code questions
>>
>> Yeah, I made similar changes locally with the same result: at startup,
>> smppbox prints the following message:
>> [91108] [0] DEBUG: Kannel smppbox version `svn-r4833M'.
>> which is kannel's svn revision number, not that of smppbox.
>>
>> 2010/7/10 Rene Kluwen <[email protected]>:
>>> I did an attempt to include the svn version numbers.
>>> But so far no luck. I did check things in, in case you want to have a
>>> look
>>
>>> at it.
>>>
>>> -----Original Message-----
>>> From: Victor Luchitz [mailto:[email protected]]
>>> Sent: zaterdag 10 juli 2010 18:27
>>> To: Rene Kluwen
>>> Subject: Re: smppbox code questions
>>>
>>> Ok, then. On a side note, the configure.in file needs to be updated to
>>> reflect the cvs -> svn change, currently the configure script still
>>> tries to fetch the version number from CVS/Entries file and fails at
>>> doing so. I am by no means an M4/autotools expert, guess some
>>> copy&paste job could be done using the main kannel configure.in..
>>>
>>> 2010/7/10 Rene Kluwen <[email protected]>:
>>>> I decided to change the sources with longer variables, so things are
>>>> consistent with smsbox.
>>>> cfg.diff has also been committed.
>>>>
>>>> == Rene
>>>>
>>>> -----Original Message-----
>>>> From: Victor Luchitz [mailto:[email protected]]
>>>> Sent: zaterdag 10 juli 2010 15:53
>>>> To: [email protected]; Rene Kluwen
>>>> Subject: Re: smppbox code questions
>>>>
>>>> Oh, my original patch was missing the smppbox-cfg.def part (in
>>>> attachment) so currently you can't specify any of the new vars,
>>>> otherwise
>>
>>>> smppbox doesn't start.
>>>> One thing I noticed is that you committed my patch with vars using
>>>> shorter names: src-addr-npi, etc, while the svn doc uses longer names
>>>> for
>>
>>>> them: source-addr-npi, dest-addr-npi and so on. Either the source code
>>>> needs correction to match the documentation or later is messed up
>>>> :)
>>>>
>>>> 2010/7/10 Rene Kluwen <[email protected]>:
>>>>> Right away I also checked in your ton/npi patch.
>>>>>
>>>>> == Rene
>>>>>
>>>>> -----Original Message-----
>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>> Sent: vrijdag 9 juli 2010 23:19
>>>>> To: Rene Kluwen
>>>>> Subject: Re: smppbox code questions
>>>>>
>>>>> Yeah, I was thinking about this "hack" as well, but it's going to
>>>>> create more problems than it solves. Btw, why does smppbox use
>>>>> system-type as boxc_id instead of ESME's login name? That forces
>>>>> EMSE's to have distinct system-type values, while almost all SMSC'es
>>>>> I've seen so far allow connections with empty system-type string, for
>>>>> example.
>>>>>
>>>>> 2010/7/10 Rene Kluwen <[email protected]>:
>>>>>> Heh... I think the way it works now is best for the average user.
>>>>>> But I am sure you are competent enough to change it to your own 
>>>>>> needs.
>>>>>> One "hack" that you can make is make the system-type of the client 
>>>>>> the
>>>>>> same as your smsc-id in your kannel.conf.
>>>>>> This is of course not recommended for most persons, but it might work
>>>>>> for you.
>>>>>>
>>>>>> == Rene
>>>>>>
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>>> Sent: vrijdag 9 juli 2010 22:39
>>>>>> To: Rene Kluwen
>>>>>> Subject: Re: smppbox code questions
>>>>>>
>>>>>> I have a pretty good idea how it works, it's just that the way it
>>>>>> works doesn't suit my needs ;)
>>>>>>
>>>>>> 2010/7/9 Rene Kluwen <[email protected]>:
>>>>>>> Surely this is relevant.
>>>>>>>
>>>>>>> Smppbox is not interested in bearerbox generated dlr's. It just 
>>>>>>> needs
>>>>>>> to "dlr_find" the dlr's that it added itself via dlr_add.
>>>>>>> Bearerbox takes care of its own dlr's. Smppbox also takes care of 
>>>>>>> its
>>>>>>> own dlr's.
>>>>>>>
>>>>>>> I think you should re-read the code again to see how it works.
>>>>>>>
>>>>>>> == Rene
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>>>> Sent: vrijdag 9 juli 2010 15:35
>>>>>>> To: [email protected]; Rene Kluwen
>>>>>>> Subject: Re: smppbox code questions
>>>>>>>
>>>>>>> Yes, but how is this relevant? I mean, there are two possibilities
>>>>>>> to make smppbox be aware of bearerbox-generated DLRs:
>>>>>>>
>>>>>>> 1) use boxc_id as smsc-id in dlr_add in bearerbox and then pass the
>>>>>>> report_mo message to smppbox without issuing dlr_find in bearerbox
>>>>>>> 2) use "proper"/parent smsc-id in smppbox
>>>>>>>
>>>>>>> The whole issue arises from the need to pass SMSC-related DLR's to
>>>>>>> smppbox without the later issuing any DLR's itself. For example, a
>>>>>>> MT message may fail to be delivered due to insufficient funds on
>>>>>>> user's account.
>>>>>>>
>>>>>>> 2010/7/9 Rene Kluwen <[email protected]>:
>>>>>>>> If bearerbox sends a report_mo, then it should include a status 
>>>>>>>> (dlr
>>>>>>>> type) as well.
>>>>>>>> Or am I wrong?
>>>>>>>>
>>>>>>>> == Rene
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>>>>> Sent: vrijdag 9 juli 2010 14:24
>>>>>>>> To: [email protected]; Rene Kluwen
>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>
>>>>>>>> Unfortunately there's currently no way to add a SMSC_SUCCESS or
>>>>>>>> SMSC_FAIL DLR in smppbox so I have/need to do that in bearerbox.
>>>>>>>> But oh, well, I'll just go with boxc_id as smsc-id and live with
>>>>>>>> this fact.
>>>>>>>>
>>>>>>>> 2010/7/9 Rene Kluwen <[email protected]>:
>>>>>>>>> But bearerbox inserts it's own dlr's. As does smppbox.
>>>>>>>>> So bearerbox will find their dlr's. And smppbox will do also.
>>>>>>>>>
>>>>>>>>> == Rene
>>>>>>>>>
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>>>>>> Sent: vrijdag 9 juli 2010 13:55
>>>>>>>>> To: Rene Kluwen
>>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>>
>>>>>>>>> Well, this is going against the logic in bearerbox. For example,
>>>>>>>>> if you pass a DLR via standard Kannel HTTP protocol, bearerbox
>>>>>>>>> will try to find a matching DLR using its own smsc-id, upon
>>>>>>>>> failing to do, it won't pass the DLR to smppbox either.
>>>>>>>>>
>>>>>>>>> 2010/7/9 Rene Kluwen <[email protected]>:
>>>>>>>>>> The first parameter (smsc_id) is to determine "who's" dlr it is 
>>>>>>>>>> to
>>>>>>>>>> begin with. So in short: To which smsc it belongs.
>>>>>>>>>> Because smppbox does things the other way around, it passes the
>>>>>>>>>> boxc_id variable. So if two boxes happen to have the same "ts"
>>>>>>>>>> (which can in theory happen) the value is used to distinguish to
>>>>>>>>>> which box_id it belongs.
>>>>>>>>>>
>>>>>>>>>> == Rene
>>>>>>>>>>
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: Victor Luchitz [mailto:[email protected]]
>>>>>>>>>> Sent: vrijdag 9 juli 2010 11:12
>>>>>>>>>> To: [email protected]; Rene Kluwen
>>>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>>>
>>>>>>>>>> On a side note, why does smppbox use boxc_id as the first
>>>>>>>>>> parameter passed to dlr_add and dlr_find? Both functions take
>>>>>>>>>> smsc_id as the first argument and boxc_id value is obtained from
>>>>>>>>>> the sms struct.
>>>>>>>>>>
>>>>>>>>>> 2010/7/8 Rene Kluwen <[email protected]>:
>>>>>>>>>>> Done.
>>>>>>>>>>> Current revision is 17.
>>>>>>>>>>>
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: [email protected] [mailto:[email protected]]
>>>>>>>>>>> On Behalf Of Victor Luchitz
>>>>>>>>>>> Sent: donderdag 8 juli 2010 15:06
>>>>>>>>>>> To: [email protected]
>>>>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>>>>
>>>>>>>>>>> Yeah, you committed the proposed change to boxc->boxc_id in
>>>>>>>>>>> revision 15. What I'm asking about is the suggestion and patch I
>>>>>>>>>>> posted here:
>>>>>>>>>>> http://www.kannel.org/pipermail/devel/2010-July/003653.html
>>>>>>>>>>>
>>>>>>>>>>> 2010/7/8 Rene Kluwen <[email protected]>:
>>>>>>>>>>>> It's already in the code.
>>>>>>>>>>>> Current revision is 16.
>>>>>>>>>>>>
>>>>>>>>>>>> == Rene
>>>>>>>>>>>>
>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>> From: [email protected]
>>>>>>>>>>>> [mailto:[email protected]] On Behalf Of Victor Luchitz
>>>>>>>>>>>> Sent: donderdag 8 juli 2010 7:52
>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>>>>>
>>>>>>>>>>>> Any hope this will be reviewed and committed?
>>>>>>>>>>>>
>>>>>>>>>>>> I'm also working on a patch that adds TLV support to smppbox
>>>>>>>>>>>> but I'd like to get this one included first.
>>>>>>>>>>>>
>>>>>>>>>>>> 2010/7/6 Victor Luchitz <[email protected]>:
>>>>>>>>>>>>> Yup, it's working fine now. Noticed there's another memleak
>>>>>>>>>>>>> though:
>>>>>>>>>>>>>
>>>>>>>>>>>>> another octstr_destroy(msgid); call is needed right after the:
>>>>>>>>>>>>> /* we could not find a corresponding dlr; nothing to send */
>>>>>>>>>>>>> line.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'm also attaching another patch which allows transmission of
>>>>>>>>>>>>> custom error codes in DLR's in the same manner as the message
>>>>>>>>>>>>> text bit.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2010/7/6 Rene Kluwen <[email protected]>:
>>>>>>>>>>>>>> I have no way of testing this here. But since either way
>>>>>>>>>>>>>> cannot
>>
>>>>>>>>>>>>>> harm I changed it.
>>>>>>>>>>>>>> Current smppbox revision is now 15.
>>>>>>>>>>>>>> Could you please check out and see if this fixes your 
>>>>>>>>>>>>>> problem?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> == Rene
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>> From: [email protected]
>>>>>>>>>>>>>> [mailto:[email protected]] On Behalf Of Victor Luchitz
>>>>>>>>>>>>>> Sent: dinsdag 6 juli 2010 14:53
>>>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>>>> Subject: Re: smppbox code questions
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 1) I think this assumption is incorrect. I have the routing
>>>>>>>>>>>>>> set up this way in bearerbox:
>>>>>>>>>>>>>> group = smsbox-route
>>>>>>>>>>>>>> smsbox-id = vma
>>>>>>>>>>>>>> smsc-id = HTTP
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> So all messages on the 'HTTP' smsc get routed to smppbox.
>>>>>>>>>>>>>> However, the custom HTTP protocol in the above layer does not
>>>>>>>>>>>>>> use dlr_find to route messages to a specific box for two
>>>>>>>>>>>>>> reasons:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> a) wrong smsc-id is used in the query (bearerbox doesn't know
>>>>>>>>>>>>>> that smppbox overrides the smsc id with system-type) so
>>>>>>>>>>>>>> dlr_find always fails
>>>>>>>>>>>>>> b) dlr_find removes DLR from the table and then subsequently
>>>>>>>>>>>>>> readds it, which is rather stressful on the DB for no sane
>>>>>>>>>>>>>> reason
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> What it does instead is simply setting the sms_type to
>>>>>>>>>>>>>> report_mo, leaving box_id empty as in regular MO messages.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2010/7/6 Rene Kluwen <[email protected]>:
>>>>>>>>>>>>>>> To start with the last thing:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2) You are right. It should use the msgid's in the dlr_url
>>>>>>>>>>>>>>> from the dlr instance. I changed it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> About 1): We assume msg->boxc_id and box->boxc_id are the
>>>>>>>>>>>>>>> same
>>
>>>>>>>>>>>>>>> in this case. Otherwise the message wouldn't have ended up
>>>>>>>>>>>>>>> there.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> == Rene
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>> From: [email protected]
>>>>>>>>>>>>>>> [mailto:[email protected]] On Behalf Of Victor
>>>>>>>>>>>>>>> Luchitz
>>>>>>>>>>>>>>> Sent: maandag 5 juli 2010 20:36
>>>>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>>>>> Subject: smppbox code questions
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I have a few questions for you regarding the handling of
>>>>>>>>>>>>>>> DLR's by smppbox, which might also turn out to be bugs.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1)
>>>>>>>>>>>>>>> In msg_to_pdu function there's a line which reads:
>>>>>>>>>>>>>>> dlr = dlr_find(msg->sms.boxc_id, msgid, msg->sms.receiver,
>>>>>>>>>>>>>>> dlrtype);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I think it's incorrect because when a DLR is stored by
>>>>>>>>>>>>>>> smppbox in handle_pdu, the boxc_id it uses is that from
>>>>>>>>>>>>>>> smpp_logins file (system_type). That in turn may cause
>>>>>>>>>>>>>>> dlr_find to always fail. So in my opinion the correct
>>>>>>>>>>>>>>> dlr_find
>>
>>>>>>>>>>>>>>> call is this:
>>>>>>>>>>>>>>> dlr = dlr_find(box->boxc_id, msgid, msg->sms.receiver,
>>>>>>>>>>>>>>> dlrtype);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2) another thing I find not quite correct is the way smppbox
>>>>>>>>>>>>>>> splits message ids for concatenated DLR's. Basically, what
>>>>>>>>>>>>>>> smppbox does is
>>>>>>>>>>>>>>> this:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> parts = octstr_split(msg->sms.dlr_url, octstr_imm(";"));
>>>>>>>>>>>>>>> msgid = gwlist_extract_first(parts); ...
>>>>>>>>>>>>>>> Then it loops through all elements of the 'parts' list and
>>>>>>>>>>>>>>> here is where the potential problem lies. smppbox assumes
>>>>>>>>>>>>>>> that msgid for the concatenated DLR is always equal to
>>>>>>>>>>>>>>> dlr_url
>>
>>>>>>>>>>>>>>> which is not always true.
>>>>>>>>>>>>>>> In fact, I think it's never true for concatenated DLR's
>>>>>>>>>>>>>>> stored by the dlr_add call in handle_pdu. Also, for example,
>>>>>>>>>>>>>>> the 'msgid' and 'dlrurls' columns in the storage table can
>>>>>>>>>>>>>>> have different maxiumum lengths, allowing truncation of the
>>>>>>>>>>>>>>> msgid. Here's my proposed fix - add the following bit of 
>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>> to msg_to_pdu:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> gwlist_destroy(parts, octstr_destroy_item); parts =
>>>>>>>>>>>>>>> octstr_split(dlr->sms.dlr_url, octstr_imm(";"));
>>>>>>>>>>>>>>> gwlist_extract_first(parts);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> right above the following bit:
>>>>>>>>>>>>>>> if (gwlist_len(parts) > 0) {
>>>>>>>>>>>>>>>    while ((msgid2 = gwlist_extract_first(parts)) != NULL) {
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Best regards,
>>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Best regards,
>>>>>>>>>>  Victor Luchitz
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards,
>>>>>>>>>  Victor Luchitz
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards,
>>>>>>>>  Victor Luchitz
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>>  Victor Luchitz
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards,
>>>>>>  Victor Luchitz
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>>  Victor Luchitz
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>>  Victor Luchitz
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>>  Victor Luchitz
>>>
>>>
>>>
>>>
>>
>>
>>
>> -- 
>> Best regards,
>> Victor Luchitz
>>
>>
>>
>>
>>
>>
>>
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.