[vz-dev] vz absturz bei defekter SML Message (patch)
Thorben Thuermer
r00t at constancy.org
Mon Apr 8 12:23:00 CEST 2013
On Mon, 08 Apr 2013 11:51:37 +0200
Peter Evertz <leo2 at pec.homeip.net> wrote:
> Ich habe einen kleinen Fehler im vzlogger gefunden: Manchmal sind die
> SML Messages kaputt und sml_transport_read liefert 0.
das gleiche htte ich schonmal in der C-version gefixt...
http://volkszaehler.org/pipermail/volkszaehler-dev/2012-October/002044.html
damals war mir die C++-version noch weitgehend unbekannt,
und ich hatte das deswegen leider nicht portiert.
beachte, dass bytes nicht nur > 0, sondern >16 sein muss, wegen der
verwendung von "bytes - 16" weiter unten.
am besten schickst du einen pull-request auf github, dann kann justin das
mergen ohne einen texteditor benutzen zu muessen ;)
(und am besten sowohl fuer das repostitory von volkszaehler als auch das von
mysmartgrid. bis endlich mal geklaert ist welches das einzig wahre ist ;) )
ansonsten kann ich das auch erledigen.
- Thorben
> --- a/src/protocols/MeterSML.cpp
> +++ b/src/protocols/MeterSML.cpp
> @@ -152,6 +152,7 @@ ssize_t MeterSML::read(std::vector<Reading> &rds,
> size_t n)
>
> /* wait until a we receive a new datagram from the meter
> (blocking read)
> bytes = sml_transport_read(_fd, buffer, SML_BUFFER_LEN);
> + if(bytes == 0 ) return 0;
>
> /* parse SML file & stripping escape sequences */
> file = sml_file_parse(buffer + 8, bytes - 16);
More information about the volkszaehler-dev
mailing list